Skip to Content
APIGénération de vidéoCréer une vidéo

Créer une vidéo

Soumettez une tâche de génération vidéo. La requête renvoie immédiatement 202 Accepted avec un id de tâche et une URL de polling — la génération s’exécute de façon asynchrone. Interrogez la tâche ou recevez un webhook, puis lisez le résultat avec Obtenir le statut vidéo.

POST https://api.ofox.ai/v1/videos

Paramètres de requête

ParamètreTypeObligatoireDescription
modelstringSlug du modèle, par ex. google/veo-3.1 ou bytedance/seedance-2.0
promptstringDescription textuelle de la vidéo
durationintegerDurée de la vidéo en secondes
resolutionstring480p / 720p / 1080p / 1K / 2K / 4K
aspect_ratiostring16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 3:2 / 2:3 / 21:9 / 9:21
sizestringPixels exacts WIDTHxHEIGHT (par ex. 1280x720), une alternative à resolution + aspect_ratio
frame_imagesarrayContrôle des images (image-vers-vidéo / première et dernière image). Présent ⇒ traité comme image-vers-vidéo. Voir ci-dessous
input_referencesarrayGuide le sujet / style (référence-vers-vidéo), sans ancrages précis d’image. Voir ci-dessous
generate_audiobooleanPar défaut true sur les modèles qui prennent en charge la sortie audio
seedintegerGraine de génération déterministe (non garantie chez tous les fournisseurs)
callback_urlstringURL de webhook d’état terminal, doit être en HTTPS (voir Webhooks)
providerobjectTransmission de paramètres propres au fournisseur, voir Provider passthrough

Élément frame_images[]

Chaque élément fixe une image de la sortie. frame_type vaut first_frame ou last_frame.

{ "type": "image_url", "image_url": { "url": "https://example.com/first.jpg" }, "frame_type": "first_frame" }

Élément input_references[]

Passez des références image / audio / vidéo par type — elles guident le sujet, le style et la cohérence, pas des ancrages précis d’image :

{ "type": "image_url", "image_url": { "url": "https://example.com/subject.jpg" } } { "type": "audio_url", "audio_url": { "url": "https://example.com/voice.mp3" } } { "type": "video_url", "video_url": { "url": "https://example.com/ref.mp4" } }
MédiatypeNombre maxAutres contraintes
Imageimage_url≤ 9
Audioaudio_url≤ 3≤ 15s par clip
Vidéovideo_url≤ 1

Dépasser une limite renvoie 400 too_many_references (voir Erreurs).

frame_images et input_references sont mutuellement exclusifs — une même requête utilise l’un ou l’autre, jamais les deux. Envoyer les deux renvoie 400 references_conflict.

Mode de génération (implicite)

Il n’y a pas de champ gen_mode. Le mode est déduit des entrées envoyées :

ModeDétecté quand
text2videoNi frame_images ni input_references
img2videoframe_images avec un first_frame
img2video_endframe_images avec first_frame + last_frame
imgref2videoinput_references, images uniquement
mixref2videoinput_references mélangeant image / audio / vidéo

Réponse

202 Accepted — la tâche est acceptée avec status: "pending" et un polling_url :

{ "id": "9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718", "status": "pending", "polling_url": "https://api.ofox.ai/v1/videos/9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718" }

Interrogez polling_url (ou attendez un webhook) jusqu’à ce que la tâche atteigne un état terminal — voir Obtenir le statut vidéo.

Exemples de requêtes

Un seul schéma /v1/videos couvre tous les modes de génération ; le mode est choisi implicitement à partir de vos entrées. Chaque exemple ci-dessous fonctionne tel quel.

Aucun frame_images / input_references → texte-vers-vidéo.

Terminal
curl -X POST https://api.ofox.ai/v1/videos \ -H "Authorization: Bearer $OFOX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "google/veo-3.1", "prompt": "A golden retriever running on the beach at sunset", "duration": 5, "resolution": "1080p", "aspect_ratio": "16:9", "generate_audio": true }'

Options cumulables

Les champs ci-dessous sont indépendants du mode de génération — ajoutez n’importe lequel à n’importe quel corps de requête ci-dessus.

Recevez un POST sur votre endpoint lorsque la tâche atteint un état terminal, au lieu de l’interroger.

{ "model": "google/veo-3.1", "prompt": "...", "callback_url": "https://your-app.example/webhooks/ofox-video" }

callback_url doit être en HTTPS. Voir Webhooks pour le payload et la signature.

Provider passthrough

Les paramètres propres au fournisseur passent par provider.options.<slug> — seul le fournisseur correspondant les reçoit. Les paramètres comme watermark ne sont pas pris en charge par tous les modèles ; ils se trouvent donc dans le provider passthrough plutôt que dans des champs de premier niveau (cela suit la convention provider-passthrough d’OpenRouter). Les options passthrough acceptées par un modèle dépendent de ses capacités.

{ "model": "alibaba/wan-2.7", "prompt": "...", "provider": { "options": { "dashscope": { "watermark": false, "audio_setting": "..." } } } }
Last updated on