Skip to main content
Utilisez POST /v1/videos pour créer une tâche asynchrone de génération de vidéos Seedance. Interrogez la tâche jusqu’à ce qu’elle se termine, puis téléchargez la vidéo depuis l’URL Flatkey retournée. Les modèles pris en charge sont seedance-2.0, seedance-2.0-fast, seedance-2.0-mini et seedance-2.5. La disponibilité dépend de votre compte ; utilisez GET /v1/models pour récupérer la liste des modèles actuels.

Point de terminaison

Flatkey accepte également POST /v1/video/generations et GET /v1/video/generations/{task_id}. Utilisez /v1/videos pour la structure de réponse standard et les données usage natives.

Requête

En-têtes

Paramètres du corps

string
requis
Identifiant du modèle Seedance : "seedance-2.0", "seedance-2.0-fast", "seedance-2.0-mini" ou "seedance-2.5".
array
requis
Éléments d’entrée multimodaux. Incluez au moins un élément non vide de type texte, image, vidéo ou audio. Consultez Éléments content.
string
Résolution de sortie. Par défaut : "720p".
string
Format d’image de sortie : "16:9", "4:3", "1:1", "3:4", "9:16", "21:9" ou "adaptive". Par défaut : "adaptive". Avec "adaptive", le modèle choisit le format à partir de vos images ou vidéos d’entrée. Pour seedance-2.5, les tâches avec première image et avec première et dernière images ne prennent en charge que "adaptive".
integer
Durée de la vidéo en secondes. Par défaut : 5. Les modèles Seedance 2.0 acceptent de 4 à 15 ; seedance-2.5 accepte de 4 à 30.
Envoyez toujours une valeur duration positive. Flatkey facture Seedance à la seconde : -1 (laisser le modèle choisir la durée) est donc rejeté avec video_price_not_configured. La seule exception est une édition vidéo seedance-2.5, qui exige -1.
boolean
Ajoute un filigrane « AI generated » dans le coin inférieur droit. Par défaut : false.
boolean
Génère une piste audio mono synchronisée. Par défaut : true. Définissez-le sur false si vous n’avez besoin que de la vidéo ; l’audio généré peut parfois échouer aux contrôles de droits d’auteur.
boolean
Renvoie la dernière image de la vidéo générée sous forme d’image. Par défaut : false. Avec true, la tâche terminée inclut metadata.last_frame_url, qui permet de télécharger un JPEG aux mêmes dimensions que la vidéo, sans filigrane. Utilisez-le comme first_frame de la tâche suivante pour enchaîner des clips. Comme metadata.url, il ne nécessite pas d’en-tête d’autorisation ; traitez-le comme confidentiel.
string
seedance-2.5 uniquement. Conteneur de la vidéo générée : "mp4" ou "mov". Par défaut : "mp4". Le MOV conserve une meilleure précision des couleurs pour l’étalonnage et la composition (H.264, YUV 4:4:4, audio PCM), mais certains lecteurs ne peuvent pas l’ouvrir. Le point de terminaison de contenu renvoie video/quicktime pour les résultats MOV.
string
seedance-2.5 uniquement, pour les tâches en mode référence. Indique au modèle le type de tâche souhaité : "auto" (par défaut), "reference", "edit" ou "extend". Le définir explicitement avance les vérifications du type de tâche au moment de la soumission : une combinaison non valide échoue donc immédiatement au lieu d’échouer après le démarrage de la tâche. "reference", "edit" et "extend" nécessitent tous des éléments de référence dans content ; une requête contenant uniquement du texte avec "reference" est rejetée. Consultez Édition et prolongation vidéo.
integer
Priorité dans la file d’attente, de 0 à 9. Par défaut : 0. Les valeurs plus élevées font passer la tâche devant les tâches de priorité inférieure en attente sur le même modèle. Pris en charge par tous les modèles Seedance 2.0 et par seedance-2.5. Les valeurs hors de la plage 0 à 9 sont rejetées avec 400.
integer
Nombre de secondes pendant lesquelles la tâche peut attendre et s’exécuter avant d’expirer. Par défaut : 172800 (48 heures). Utilisez une valeur plus courte si un résultat tardif ne vous est d’aucune utilité.
string
URL HTTPS publique qui reçoit un POST à chaque changement de statut de la tâche. Consultez Callbacks de tâche. Elle doit utiliser https, ne contenir aucun identifiant utilisateur, comporter au plus 2 048 caractères et se résoudre en une adresse publique ; sinon, la requête est rejetée avec 400.

Éléments content

Chaque URL peut être une URL HTTPS publique, un URI de données data:<mime>;base64, (images et audio uniquement) ou une référence asset:// issue de la bibliothèque de ressources. Le corps complet de la requête doit rester inférieur à 64 Mo. Choisissez un seul mode d’entrée par tâche. Ces modes ne peuvent pas être combinés :

Édition vidéo

seedance-2.5 peut modifier ou prolonger une vidéo existante en mode référence. Décrivez la modification dans l’invite et désignez la vidéo par @Video1.
Comme toute requête seedance-2.5 comportant une vidéo de référence, une édition est facturée au tarif avec vidéo de la résolution choisie, pour une durée fixe de 30 secondes, quelle que soit la durée d’entrée ou de sortie.

Mode brouillon

seedance-2.5 peut d’abord générer un brouillon peu coûteux en 480p, afin que vous puissiez vérifier la scène, les plans et le mouvement avant de payer la vidéo finale. Deux requêtes sont nécessaires :
  1. Créez le brouillon. Envoyez une requête normale avec "draft": true et "resolution": "480p". Elle est facturée comme une vidéo 480p ordinaire.
  2. Générez la vidéo finale. Une fois le brouillon terminé, envoyez une requête dont le seul élément content est un draft_task pointant vers l’identifiant de tâche du brouillon, avec "resolution": "1080p".
La vidéo finale reprend l’invite, les médias, la durée, le format, la graine, le réglage audio et le type de tâche du brouillon. N’envoyez pas duration, ratio, frames, seed, generate_audio, omni_reference_task_type, draft ni aucun autre élément content avec un draft_task ; la requête est rejetée avec 400. Vous pouvez toujours définir return_last_frame, output_format, watermark, priority, execution_expires_after et callback_url.
Seedance n’accepte pas directement les images ou vidéos montrant de vrais visages humains. Téléversez-les en tant que ressources de personne réelle et référencez-les avec asset://.

Exemples de requêtes

Entrée première et dernière image

Référence multimodale

Réponse

Champs de la réponse

string
Identifiant public de la tâche utilisé pour interroger la tâche et télécharger la vidéo terminée. task_id contient la même valeur.
string
Statut de la tâche : queued, in_progress, completed ou failed.
integer
Progression de la génération de 0 à 100.
integer
Horodatage Unix de la création de la tâche.

Interroger le statut de la tâche

Pendant la génération, la réponse inclut la progression actuelle :
Lorsque la tâche se termine, la réponse inclut l’URL de la vidéo et l’utilisation des tokens :
Les tâches échouées retournent les détails de l’erreur avec la réponse de la tâche :
Tout solde prélevé à l’avance est automatiquement remboursé.

Valeurs de statut

Callbacks de tâche

Définissez callback_url pour recevoir les changements de statut au lieu d’interroger la tâche, ou en complément. Flatkey envoie un POST avec Content-Type: application/json lorsque la tâche passe à in_progress, completed ou failed. Le corps correspond exactement à ce que renvoie GET /v1/videos/{task_id} à ce moment-là, y compris metadata.url et metadata.last_frame_url pour les tâches terminées.
Répondez avec n’importe quel statut 2xx dans un délai de 5 secondes. Sinon, Flatkey réessaie deux fois, après 2 puis 8 secondes, puis abandonne. Les redirections ne sont pas suivies. Les callbacks ne sont pas signés : vérifiez donc un résultat en interrogeant la tâche avant d’agir, et continuez de considérer l’interrogation comme la source de vérité au cas où un callback serait perdu.

Télécharger la vidéo

Le point de terminaison de contenu diffuse des données video/mp4, ou video/quicktime si la tâche a utilisé output_format: "mov". Il ne nécessite pas de token Bearer et peut être utilisé directement comme source <video>.
Le point de terminaison de contenu ne fonctionne qu’une fois la tâche terminée et est limité en débit par adresse IP cliente. Traitez l’URL comme sensible car toute personne la possédant peut télécharger la vidéo.

Erreurs

Les erreurs survenant au moment de la requête utilisent l’enveloppe d’erreur standard de Flatkey :

Exemple de bout en bout

Cet exemple crée une tâche, l’interroge toutes les cinq secondes et télécharge la vidéo terminée. Il nécessite jq.