Sora 2 Pro est le palier haute fidélité de Sora 2 d'OpenAI, présenté comme son modèle de génération vidéo à audio synchronisé le plus avancé.
- Entrée
- texte image
- Sortie
- vidéo
- Prix
- $0.3-$0.5/s
Benchmarks
Sora 2 Pro : 6 résultats publiés, mais aucun benchmark en commun avec assez d'autres modèles pour comparer.
Chiffres publiés par les fournisseurs : ByteDance
Le prix en perspective
Position du prix parmi 5 modèles comparables
La barre situe le prix de ce modèle parmi tous les modèles du même type sur Synthorai. Le moins cher et le plus cher sont nommés à chaque extrémité. Ce sont des tarifs de base ; les remises liées au batch, à la région et aux écritures de cache figurent sur la page des tarifs.
Spécifications et limites
Vidéo
| Résolution | 720p / 1024p Un ensemble fixe d'options, pas une plage. |
|---|---|
| Durée du clip | 4-12 s Une plage continue, pas un ensemble fixe. |
| Fréquence d'images | 24 fps |
| Ratios d'aspect | 16:9 · 9:16 |
| Entrées vidéo | text-to-video · image-to-video (image de référence unique) |
| Audio natif | Oui, génère le son |
| Format | .mp4 |
Modèle
| Modalités | texte + image → vidéo |
|---|
Le palier haute fidélité de Sora 2 d'OpenAI, qui consacre plus de calcul à chaque génération pour un détail plus net et une meilleure fidélité au prompt, avec les mêmes capacités text-to-video et image-to-video à audio synchronisé. Synthorai le sert via l'API de jobs asynchrone /v1/videos en 720p, 24 fps, 4-12 s, 16:9 ou 9:16, et facture à la seconde de sortie à un tarif premium.
Un prompt, mesuré via la passerelle
Sora 2 Pro
Renvoyé par le modèle 1280×720 Durée 4s latence 130 s
Un prompt, une requête par modèle, sans nouvel essai ni tri des résultats : c'est le premier résultat renvoyé par chaque modèle. Ni la taille ni la durée n'ont été imposées. Chaque modèle a utilisé sa valeur par défaut, car une requête calibrée pour convenir à tous n'en mettrait aucun en valeur. Les fichiers sont réencodés pour le web : jugez la composition et le respect du prompt, pas la compression.
Utilisez Sora 2 Pro en 30 secondes
API asynchrone à base de tâches : créez une tâche puis interrogez-la, ou maintenez la requête ouverte avec Prefer: wait. POST /v1/videos
import time
import requests
BASE = "https://synthorai.io/v1"
HEADERS = {"Authorization": "Bearer sk-syn-..."}
# 1) create the video generation job (POST /v1/videos)
task = requests.post(
f"{BASE}/videos",
headers=HEADERS,
json={
"model": "sora-2-pro",
"prompt": "a watercolor lighthouse at dawn, waves rolling in, camera pulling back",
"resolution": "720p",
"duration": 5,
},
).json()
# 2) poll the job until it reaches a terminal state
while task["status"] in ("queued", "in_progress"):
time.sleep(5)
task = requests.get(f"{BASE}/videos/{task['id']}", headers=HEADERS).json()
# 3) completed → signed video URL (valid ~24h - download and store it promptly)
if task["status"] == "completed":
print(task["data"][0]["url"])
else:
print(task["error"])const HEADERS = {
Authorization: "Bearer sk-syn-...",
"Content-Type": "application/json",
};
interface VideoTask {
id: string;
status: "queued" | "in_progress" | "completed" | "failed" | "cancelled";
data?: Array<{ url: string }>;
error?: { code: string; message: string };
}
// 1) create the video generation job (POST /v1/videos)
const created = await fetch("https://synthorai.io/v1/videos", {
method: "POST",
headers: HEADERS,
body: JSON.stringify({
model: "sora-2-pro",
prompt: "a watercolor lighthouse at dawn, waves rolling in, camera pulling back",
resolution: "720p",
duration: 5,
}),
});
let task = (await created.json()) as VideoTask;
// 2) poll the job until it reaches a terminal state
while (task.status === "queued" || task.status === "in_progress") {
await new Promise((r) => setTimeout(r, 5000));
const res = await fetch(`https://synthorai.io/v1/videos/${task.id}`, { headers: HEADERS });
task = (await res.json()) as VideoTask;
}
// 3) completed → signed video URL (valid ~24h — download and store it promptly)
if (task.status === "completed") console.log(task.data?.[0]?.url);
else console.error(task.error);# Create the job; "Prefer: wait" holds the request up to 60s and returns the
# completed task when generation finishes in time (else the queued task).
curl https://synthorai.io/v1/videos \
-H "Authorization: Bearer sk-syn-..." \
-H "Content-Type: application/json" \
-H "Prefer: wait=60" \
-d '{
"model": "sora-2-pro",
"prompt": "a watercolor lighthouse at dawn, waves rolling in, camera pulling back",
"resolution": "720p",
"duration": 5
}'
# Still queued / in_progress? Poll until completed → data[0].url (valid ~24h).
curl https://synthorai.io/v1/videos/vid_9f2e8c1a4b7d \
-H "Authorization: Bearer sk-syn-..."package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"time"
)
const base = "https://synthorai.io/v1"
type videoTask struct {
ID string `json:"id"`
Status string `json:"status"`
Data []struct {
URL string `json:"url"`
} `json:"data"`
}
func call(method, url string, body []byte) (t videoTask) {
req, _ := http.NewRequest(method, url, bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer sk-syn-...")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
json.NewDecoder(resp.Body).Decode(&t)
return t
}
func main() {
// 1) create the video generation job (POST /v1/videos)
payload, _ := json.Marshal(map[string]any{
"model": "sora-2-pro",
"prompt": "a watercolor lighthouse at dawn, waves rolling in, camera pulling back",
"resolution": "720p",
"duration": 5,
})
task := call("POST", base+"/videos", payload)
// 2) poll the job until it reaches a terminal state
for task.Status == "queued" || task.Status == "in_progress" {
time.Sleep(5 * time.Second)
task = call("GET", base+"/videos/"+task.ID, nil)
}
// 3) completed → signed video URL (valid ~24h — download and store promptly)
if task.Status == "completed" {
fmt.Println(task.Data[0].URL)
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
// JDK built-in HttpClient — no extra dependency needed.
HttpClient http = HttpClient.newHttpClient();
// 1) create the job; "Prefer: wait=60" holds the request up to 60s and
// returns the completed task when generation finishes in time
HttpRequest create = HttpRequest.newBuilder(URI.create("https://synthorai.io/v1/videos"))
.header("Authorization", "Bearer sk-syn-...")
.header("Content-Type", "application/json")
.header("Prefer", "wait=60")
.POST(HttpRequest.BodyPublishers.ofString("""
{"model": "sora-2-pro",
"prompt": "a watercolor lighthouse at dawn, waves rolling in, camera pulling back",
"resolution": "720p", "duration": 5}"""))
.build();
String task = http.send(create, HttpResponse.BodyHandlers.ofString()).body();
System.out.println(task); // {"id":"vid_…","status":…} — completed → data[0].url
// 2) still queued / in_progress? Poll GET https://synthorai.io/v1/videos/{id} until the
// status turns completed, then download data[0].url (valid ~24h).À propos de Sora 2 Pro
- Il dépense davantage de calcul par génération pour un détail plus net et une meilleure adhérence au prompt, tout en conservant les mêmes capacités d'audio synchronisé, de text-to-video et d'image-to-video.
- La recommandation d'OpenAI est explicite sur le compromis : Pro met plus de temps à rendre et coûte plus cher à exécuter, mais produit des résultats plus aboutis et plus stables, et c'est le palier à choisir quand il vous faut une sortie de qualité production plutôt que des brouillons exploratoires.
- En amont, il propose aussi une taille de sortie au-dessus de la paire 720p commune - 1792x1024 en paysage et 1024x1792 en portrait - à un tarif à la seconde plus élevé.
- Tout le reste correspond au palier standard : les images de référence doivent correspondre à la taille cible et arriver en JPEG, PNG ou WebP, les flux d'extension et d'édition sont disponibles pour prolonger ou ajuster un clip terminé, les personnages réutilisables gardent un sujet cohérent avec une limite de deux par vidéo, et les mêmes règles de contenu s'appliquent, les personnes réelles, les visages dans les images d'entrée et les personnages ou musiques sous droits d'auteur étant tous refusés.
- Synthorai le sert via l'API de jobs asynchrone /v1/videos en 720p ou 1024p, 24 fps, de 4 à 12 secondes, en 16:9 ou 9:16, et le facture à la seconde de sortie à un tarif majoré par rapport au Sora 2 standard.
FAQ
Peut-on essayer l'API Sora 2 Pro gratuitement ?
Oui : les nouveaux comptes reçoivent 10 appels d'essai et jusqu'à $1 de crédit gratuit, sans carte bancaire. De quoi essayer Sora 2 Pro sur votre charge de travail réelle avant d'ajouter un moyen de paiement.
Quels sont les points forts de Sora 2 Pro ?
Palier Sora 2 plus haute fidélité, plus de calcul par clip ; détail plus net et fidélité au prompt ; audio synchronisé, 720p ou 1024p, 4-12 secondes. La section À propos en donne un aperçu complet, tiré des notes de version du fournisseur.
Combien coûte Sora 2 Pro ?
Sur Synthorai, Sora 2 Pro coûte $0.3-$0.5 par seconde de vidéo générée. Seules les générations réussies sont facturées : paiement à l'usage, sans majoration de plateforme, sans abonnement.
Comment générer des vidéos avec l'API Sora 2 Pro ?
Envoyez une requête POST à /v1/videos sur Synthorai avec model="sora-2-pro" pour créer une tâche asynchrone, puis interrogez-la (ou maintenez la requête ouverte avec l'en-tête Prefer: wait) jusqu'à obtenir l'URL de la vidéo. Aucun SDK du fournisseur n'est nécessaire.
Comment obtenir l'accès à Sora 2 Pro ?
Dans votre SDK OpenAI actuel, indiquez base_url="https://synthorai.io/v1" et model="sora-2-pro", et c'est tout. Une seule clé API donne accès à tous les modèles de la passerelle.
Modèles associés
Comparer
Chaque valeur de cette page est reprise de la documentation du fournisseur (lien ci-dessus) et porte la date de sa vérification. Les prix sont comparés à l'échelle du catalogue. Quand les fournisseurs ne définissent pas une spécification de la même façon, la différence est signalée et la valeur n'est pas mise en graphique. Nous ne mesurons rien ici et nous n'attribuons aucune note.