Soumettre une tâche de génération vidéo
Crée une tâche de génération vidéo asynchrone et renvoie immédiatement un task_id (HTTP 202). Interrogez GET /api/v1/videos/generations/{task_id} jusqu'à ce que la tâche réussisse. Le corps de la requête peut être fourni à plat ({model, prompt, ...}) ou imbriqué ({model, input: {prompt, ...}}) ; l'objet input est prioritaire lorsqu'il est présent. Les champs callback (callBackUrl / callback_url / callbackUrl) sont ignorés.
Trois modes d'entrée mutuellement exclusifs :
- texte-vers-vidéo : prompt uniquement ;
- image-vers-vidéo (première/dernière image) : first_frame_url (+ last_frame_url facultatif) ;
- omni-référence : reference_image_urls / reference_video_urls / reference_audio_urls. Mélanger le mode première/dernière image avec une entrée de référence multimodale renvoie 400 invalid_request_error.
- Type: stringX
- Request - Id ID de requête facultatif de l'appelant, renvoyé pour le diagnostic.
- Type: stringX
- Felo - Channel Codes de canaux publics ordonnés, séparés par des virgules. Omettre cet en-tête pour utiliser default ; default doit être utilisé seul. En mode portefeuille, default parcourt l'ordre effectif des canaux publics du modèle dans l'ordre inverse, ignore les canaux non publiés ou indisponibles et sélectionne le fournisseur du premier canal disponible. Il inclut les points de terminaison disponibles de ce fournisseur ayant le même ID de modèle amont et le même niveau de service. Les canaux explicites sont validés dans l'ordre spécifié par le client ; seul le groupe de fournisseurs du premier canal est soumis. Aucun repli automatique vers d'autres fournisseurs. Les anciens en-têtes de fournisseur ne peuvent pas remplacer le routage par canaux.
Entrée de génération vidéo. Soit à plat ({model, prompt, ...}), soit imbriquée ({model, input: {...}}). input est prioritaire. Un seul mode d'entrée doit être utilisé ; le mélange du mode première/dernière image avec des entrées de référence multimodales est rejeté.
- Type: stringmodelobligatoire
Nom du modèle exposé par Felo, par exemple seedance-2.0-mini.
- Type: string enumaspect
_ratio valeurs- 16:9
- 9:16
- 1:1
- 4:3
- 3:4
- 21:9
- adaptive
- Type: integerdurationmin.:4max.:15
Integer numbers.
- Type: string Format: urifirst
_frame _url - Type: booleangenerate
_audio - Type: objectinput
Objet d'entrée imbriqué facultatif ; lorsqu'il est présent, ses champs sont prioritaires sur les champs voisins.
- aspectType: string enum
_ratio Format d'image de sortie ; adaptive suit le ratio de l'image d'entrée.
valeurs- 16:9
- 9:16
- 1:1
- 4:3
- 3:4
- 21:9
- adaptive
- durationType: integermin.:4max.:15
Durée de sortie en secondes.
- firstType: string Format: uri
_frame _url URL de la première image (mode image-vers-vidéo).
- generateType: boolean
_audio Indique s'il faut générer une piste audio synchronisée.
- lastType: string Format: uri
_frame _url URL de la dernière image ; doit être utilisée avec first_frame_url.
- promptType: stringlongueur max.:2000
Prompt. Requis pour les modes texte-vers-vidéo et omni-référence.
- referenceType: array string[] …3Format: uri
_audio _urls Clips audio de référence omni.
- referenceType: array string[] …9Format: uri
_image _urls Images de référence omni. Mutuellement exclusives avec le mode première/dernière image.
- referenceType: array string[] …3Format: uri
_video _urls Vidéos de référence omni. Mutuellement exclusives avec le mode première/dernière image. Fournir une vidéo modifie le prix unitaire facturé et ajoute la durée d'entrée au nombre de tokens.
- resolutionType: string enum
Résolution de sortie. Une résolution plus élevée consomme plus de tokens et coûte plus cher.
valeurs- 480p
- 720p
- 1080p
- 4k
- serviceType: string | null
_tier Seule la valeur default (standard) est actuellement prise en charge. Une valeur omise, null, un alias ou une chaîne non prise en charge revient à default ; les autres types renvoient HTTP 400. Les canaux et tarifs configurés restent inchangés. Les API de texte envoient la valeur standard du fournisseur ; les API Decisions et de génération omettent le champ amont.
- Type: string Format: urilast
_frame _url - Type: stringpromptlongueur max.:2000
- Type: array string[] …3Format: urireference
_audio _urls - Type: array string[] …9Format: urireference
_image _urls - Type: array string[] …3Format: urireference
_video _urls - Type: string enumresolutionvaleurs
- 480p
- 720p
- 1080p
- 4k
- Type: string | nullservice
_tier Seule la valeur default (standard) est actuellement prise en charge. Une valeur omise, null, un alias ou une chaîne non prise en charge revient à default ; les autres types renvoient HTTP 400. Les canaux et tarifs configurés restent inchangés. Les API de texte envoient la valeur standard du fournisseur ; les API Decisions et de génération omettent le champ amont.
- Type: object · VideoGenerationAccepted202
Tâche acceptée
- enumkindconstante:videoobligatoirevaleurs
- video
- Type: array string[]outputsobligatoire
Vide jusqu'à la réussite de la tâche.
- enumstatusconstante:queuedobligatoirevaleurs
- queued
- Type: stringtask
_id obligatoireID de tâche à utiliser pour l'interrogation.
application/json - Type: object · GenerationError400
Requête invalide (modèle inconnu, modes d'entrée mélangés, champs invalides)
Enveloppe d'erreur compatible OpenAI.
- Type: objecterror
- messageType: stringobligatoire
- typeType: string enumobligatoirevaleurs
- invalid
_request _error - server
_error
- codeType: string
- paramType: string nullable
application/json - Type: object · GenerationError401
Clé API Felo invalide ou manquante
Enveloppe d'erreur compatible OpenAI.
- Type: objecterror
- messageType: stringobligatoire
- typeType: string enumobligatoirevaleurs
- invalid
_request _error - server
_error
- codeType: string
- paramType: string nullable
application/json - Type: object · GenerationError402
Solde insuffisant / condition de facturation non remplie
Enveloppe d'erreur compatible OpenAI.
- Type: objecterror
- messageType: stringobligatoire
- typeType: string enumobligatoirevaleurs
- invalid
_request _error - server
_error
- codeType: string
- paramType: string nullable
application/json - Type: object · GenerationError403
Compte non autorisé (abonnement requis ou utilisateur suspendu). Les modèles désactivés sont également rejetés avant tout appel amont. Les requêtes acceptées et les tâches en cours se poursuivent.
Enveloppe d'erreur compatible OpenAI.
- Type: objecterror
- messageType: stringobligatoire
- typeType: string enumobligatoirevaleurs
- invalid
_request _error - server
_error
- codeType: string
- paramType: string nullable
application/json - Type: object · GenerationError429
Limite de requêtes ou de dépenses atteinte
Enveloppe d'erreur compatible OpenAI.
- Type: objecterror
- messageType: stringobligatoire
- typeType: string enumobligatoirevaleurs
- invalid
_request _error - server
_error
- codeType: string
- paramType: string nullable
application/json - Type: object · GenerationError502
Échec du fournisseur amont
Enveloppe d'erreur compatible OpenAI.
- Type: objecterror
- messageType: stringobligatoire
- typeType: string enumobligatoirevaleurs
- invalid
_request _error - server
_error
- codeType: string
- paramType: string nullable
application/json - Type: object · GenerationError503
Service de génération ou service de facturation temporairement indisponible
Enveloppe d'erreur compatible OpenAI.
- Type: objecterror
- messageType: stringobligatoire
- typeType: string enumobligatoirevaleurs
- invalid
_request _error - server
_error
- codeType: string
- paramType: string nullable
application/json
curl https://openapi.felo.ai/api/v1/videos/generations \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"model": "seedance-2.0-mini",
"prompt": "a cinematic trailer shot, 720p",
"resolution": "720p",
"duration": 5,
"generate_audio": true
}'
{
"task_id": "string",
"status": "queued",
"kind": "video",
"outputs": [
"string"
]
}