Passer au contenu principal
OrcaRouter parle aux modèles vidéo Seedance sur le même endpoint soumettre-et-interroger que Kling. Vous envoyez model: byteplus/dreamina-seedance-2-0-260128, OrcaRouter route la requête vers l’API amont Ark /contents/generations/tasks, et vous interrogez le même ID de tâche via OrcaRouter une fois terminé (généralement 30 secondes à 4 minutes selon la durée / résolution / generate_audio).
Modèle actuellement disponible. Seul Seedance 2.0 est provisionné en ce moment, sous le nom backend byteplus/dreamina-seedance-2-0-260128. Le tableau de capacités ci-dessous liste le reste de la famille Seedance pour référence, mais ils ne sont pas encore sélectionnables dans le playground ni routables via OrcaRouter — utilisez byteplus/dreamina-seedance-2-0-260128 pour chaque requête pour le moment.
L’endpoint de soumission POST /v1/video/generations et l’endpoint de récupération GET /v1/video/generations/{task_id} sont partagés avec Kling. Ce qui change est le corps de requête : Kling utilise prompt + image + metadata.{mode, aspect_ratio, image_list, ...}, Seedance utilise prompt + metadata.{content[], ratio, duration, generate_audio, watermark, ...}. Le préfixe sur model sélectionne quel schéma est honoré.

Modèles

ModèleT2VI2V (première)I2V (première+dernière)Réf. multimodale¹Édition vidéo²Audio généré³DuréeDisponible
byteplus/dreamina-seedance-2-0-260128 (2.0)✓ complet4 – 15 s
byteplus/seedance-2.0-fast✓ complet4 – 15 sprévu
byteplus/seedance-1-5-proimage uniquement4 – 12 sprévu
byteplus/seedance-1-0-proimage uniquement2 – 12 sprévu
byteplus/seedance-1-0-pro-fastimage uniquement2 – 12 sprévu
byteplus/seedance-1-0-lite-i2vimage uniquement2 – 12 sprévu
byteplus/seedance-1-0-lite-t2vimage uniquement2 – 12 sprévu
¹ Référence multimodale = le tableau metadata.content[] peut porter des éléments image_url / video_url / audio_url avec marqueurs role (reference_image / reference_video / reference_audio). “Complet” signifie que les combinaisons image + vidéo + audio sont acceptées. ² Édition vidéo = passez un élément de contenu video_url pour appliquer des éditions pilotées par prompt à la vidéo source (remplacement de sujet, inpainting de région, etc.). ³ Audio natif = l’amont génère automatiquement une bande sonore correspondant à la vidéo. Activez via metadata.generate_audio: true. L’endpoint de soumission est le même pour chaque modèle — POST /v1/video/generations. Ce qui change est quels champs metadata l’amont honore selon le tableau ci-dessus. Voir la matrice de capacités Seedance amont pour la liste de fonctionnalités par modèle faisant autorité.

Soumettre une tâche

Envoyez un POST à /v1/video/generations avec model, prompt et tous paramètres spécifiques à l’amont sous metadata :
curl https://api.orcarouter.ai/v1/video/generations \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "byteplus/dreamina-seedance-2-0-260128",
    "prompt": "A girl holding a fox, the girl opens her eyes, looks gently at the camera, the fox hugs affectionately, the camera slowly pulls out, the girl'\''s hair is blown by the wind",
    "metadata": {
      "content": [
        { "type": "image_url", "image_url": { "url": "https://example.com/foxgirl.png" } }
      ],
      "ratio": "16:9",
      "duration": 5,
      "generate_audio": true,
      "watermark": false
    }
  }'
La réponse porte l’ID de tâche (même enveloppe que Kling — OrcaRouter normalise entre fournisseurs) :
{
  "id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
  "task_id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
  "object": "video",
  "model": "byteplus/dreamina-seedance-2-0-260128",
  "status": "queued",
  "progress": 0,
  "created_at": 1777975188
}
OrcaRouter enveloppe automatiquement votre prompt comme l’élément texte à l’intérieur du tableau content[] de Seedance — vous n’avez pas besoin de passer un élément {type: "text"} vous-même. Tout élément texte que vous fournissez dans metadata.content[] est remplacé par votre prompt de niveau supérieur. Les autres éléments de contenu (image_url, video_url, audio_url) passent inchangés.

Champs du corps

Ces champs vont à l’intérieur de metadata. Disposez-les selon les tableaux de variantes ci-dessous.
ChampTypeNotes
contentarrayÉléments de référence multimodale. Chaque élément : {type, image_url? | video_url? | audio_url?, role?}. Omettez si texte-vers-vidéo pur.
ratiostringRapport d’aspect. 16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9 / adaptive. adaptive infère depuis l’entrée.
durationintegerSecondes. La plage autorisée dépend du modèle — voir le tableau ci-dessus.
resolutionstring480p / 720p / 1080p. Défaut 720p. 1080p uniquement sur seedance-2.0 / seedance-2.0-fast / seedance-1-5-pro / seedance-1-0-pro / seedance-1-0-pro-fast.
generate_audiobooleanGénérer automatiquement une bande sonore synchronisée. Défaut false. Uniquement sur seedance-2.0 / 2.0-fast / 1-5-pro.
watermarkbooleanImprimer le filigrane amont. Défaut défini par l’amont.
seedintegerGraine aléatoire pour la reproductibilité.
service_tierstringdefault (en ligne) ou flex (hors ligne / priorité plus basse, quota plus élevé). Défaut default.
return_last_framebooleanRetourner la dernière image comme image aux côtés du MP4. Défaut false.
callback_urlstringURL de webhook — reçoit les changements de statut au lieu de (ou aux côtés de) l’interrogation.

Forme d’élément content[]

Chaque élément dans metadata.content est l’une des quatre formes :
{ "type": "image_url", "image_url": { "url": "https://..." }, "role": "first_frame" }
{ "type": "video_url", "video_url": { "url": "https://..." }, "role": "reference_video" }
{ "type": "audio_url", "audio_url": { "url": "https://..." }, "role": "reference_audio" }
{ "type": "text",      "text": "..." }    // automatiquement remplacé par le prompt de niveau supérieur
Valeurs role :
roleObjectif
first_frameAncrer cette image comme la première image de la vidéo générée.
end_frameAncrer cette image comme la dernière image (utiliser avec first_frame pour i2v première+dernière image).
reference_imageRéférence de style / sujet (variante référence multimodale ; peut passer plusieurs).
reference_videoRéférence de style / mouvement, ou vidéo source pour édition / extension.
reference_audioMusique de fond ou référence vocale (génération audio-vidéo).
Référencez les éléments dans le prompt avec la syntaxe [Image 1], [Video 1], [Audio 1]. L’index correspond à l’ordre du tableau (base 1, portée par type).

Interroger les résultats

Utilisez l’ID de tâche retourné au moment de la soumission :
curl https://api.orcarouter.ai/v1/video/generations/task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw \
  -H "Authorization: Bearer sk-orca-..."
La forme de réponse est enveloppée (identique à Kling) :
{
  "code": "success",
  "message": "",
  "data": {
    "task_id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
    "status": "SUCCESS",
    "progress": "100%",
    "result_url": "https://ark-content-generation-ap-southeast-1.tos-ap-southeast-1.volces.com/.../video.mp4",
    "submit_time": 1777975188,
    "start_time": 1777975241,
    "finish_time": 1777975277,
    "fail_reason": ""
  }
}
Les valeurs de statut sont normalisées en majuscules entre fournisseurs :
StatutStatut amont SeedanceSignification
NOT_START(transitoire)Ligne de tâche créée, pas encore dispatchée
SUBMITTEDqueuedEnvoyé à l’amont, en attente dans la file
IN_PROGRESSrunningL’amont effectue le rendu
SUCCESSsucceededTerminé. data.result_url porte le MP4
FAILUREfailedÉchoué. data.fail_reason a la raison
La progression est une chaîne de pourcentage ("50%", "100%"), pas un entier. Interrogez toutes les 5 - 10 secondes. Un clip 720p de 5 secondes se termine typiquement en 30 - 60 secondes ; 1080p avec audio ou clips de 15 secondes / référence multimodale peuvent prendre 3 - 5 minutes. Le result_url est une URL TOS signée par l’amont avec un TTL court — téléchargez ou re-hébergez rapidement si vous avez besoin d’une rétention longue.

Variantes d’endpoint

Toutes les variantes partagent POST /v1/video/generations. Le chemin de fonctionnalité Seedance que l’amont sert est déterminé par les éléments metadata.content[] et les marqueurs role — pas par l’URL.

Texte-vers-vidéo

Juste model + prompt + métadonnées optionnelles. Pas d’éléments de contenu signifie texte-vers-vidéo pur :
curl https://api.orcarouter.ai/v1/video/generations \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "byteplus/dreamina-seedance-2-0-260128",
    "prompt": "Photorealistic style: under a clear blue sky, a vast expanse of white daisy fields stretches out. The camera gradually zooms in on a single daisy with glistening dewdrops on its petals.",
    "metadata": {
      "ratio": "16:9",
      "duration": 5,
      "watermark": true
    }
  }'

Image-vers-vidéo — première image

Passez un élément image avec role: "first_frame" :
curl https://api.orcarouter.ai/v1/video/generations \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "byteplus/dreamina-seedance-2-0-260128",
    "prompt": "the cat starts dancing energetically",
    "metadata": {
      "content": [
        { "type": "image_url", "image_url": { "url": "https://example.com/cat.png" }, "role": "first_frame" }
      ],
      "ratio": "adaptive",
      "duration": 5,
      "generate_audio": true
    }
  }'

Image-vers-vidéo — première et dernière image

Deux éléments image, un chacun pour first_frame et end_frame :
curl https://api.orcarouter.ai/v1/video/generations \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "byteplus/dreamina-seedance-2-0-260128",
    "prompt": "Create a 360-degree orbiting camera shot from start to end frame.",
    "metadata": {
      "content": [
        { "type": "image_url", "image_url": { "url": "https://example.com/start.jpg" }, "role": "first_frame" },
        { "type": "image_url", "image_url": { "url": "https://example.com/end.jpg" },   "role": "end_frame"   }
      ],
      "ratio": "16:9",
      "duration": 6
    }
  }'

Référence multimodale — image + vidéo + audio

Combinez des éléments reference_image / reference_video / reference_audio. Référencez-les dans le prompt avec des indices [Image N] / [Video N] / [Audio N] (base 1, par type) :
curl https://api.orcarouter.ai/v1/video/generations \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "byteplus/dreamina-seedance-2-0-260128",
    "prompt": "Use the first-person POV framing from [Video 1] throughout, and use [Audio 1] as the background music. First-person POV fruit tea promotional ad: [Image 1] hands pick a dew-covered apple; [Image 2] holds the finished drink up to the camera.",
    "metadata": {
      "content": [
        { "type": "image_url", "image_url": { "url": "https://example.com/tea_pic1.jpg" }, "role": "reference_image" },
        { "type": "image_url", "image_url": { "url": "https://example.com/tea_pic2.jpg" }, "role": "reference_image" },
        { "type": "video_url", "video_url": { "url": "https://example.com/tea_video1.mp4" }, "role": "reference_video" },
        { "type": "audio_url", "audio_url": { "url": "https://example.com/tea_audio1.mp3" }, "role": "reference_audio" }
      ],
      "ratio": "16:9",
      "duration": 11,
      "generate_audio": true,
      "watermark": false
    }
  }'
Disponible sur seedance-2.0 et seedance-2.0-fast (combinaisons complètes image + vidéo + audio) ; seedance-1-5-pro et seedance-1-0-* n’acceptent que les éléments reference_image.

Édition vidéo / extension

Passez {type: "video_url", role: "reference_video"} et demandez au prompt de la modifier ou de l’étendre :
curl https://api.orcarouter.ai/v1/video/generations \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "byteplus/dreamina-seedance-2-0-260128",
    "prompt": "Change all the fruits in [Video 1] into fresh fruits.",
    "metadata": {
      "content": [
        { "type": "video_url", "video_url": { "url": "https://example.com/source.mp4" }, "role": "reference_video" }
      ],
      "ratio": "adaptive",
      "duration": 6
    }
  }'
Disponible sur seedance-2.0 et seedance-2.0-fast uniquement.

Webhooks

Passez metadata.callback_url: "https://your.domain/webhook" pour recevoir un POST quand la tâche transitionne vers SUCCESS ou FAILURE. La charge utile reflète la réponse d’interrogation. Si vous définissez à la fois l’interrogation et un callback, vous aurez les deux — ils sont indépendants.

Facturation

OrcaRouter transmet la facturation par token et par tâche de l’amont sans marge. Le coût final correspond au tarif publié de ByteDance Ark (les completion_tokens / total_tokens amont du résultat de la tâche sont convertis en quota au taux par token du modèle défini dans votre configuration Channel Margin). Une petite réservation de pré-consommation est réservée au moment de la soumission ; la différence se règle au succès. Voir Opérations / Facturation et utilisation.

Voir aussi