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èle | T2V | I2V (première) | I2V (première+dernière) | Réf. multimodale¹ | Édition vidéo² | Audio généré³ | Durée | Disponible |
|---|
byteplus/dreamina-seedance-2-0-260128 (2.0) | ✓ | ✓ | ✓ | ✓ complet | ✓ | ✓ | 4 – 15 s | ✓ |
byteplus/seedance-2.0-fast | ✓ | ✓ | ✓ | ✓ complet | ✓ | ✓ | 4 – 15 s | prévu |
byteplus/seedance-1-5-pro | ✓ | ✓ | ✓ | image uniquement | | ✓ | 4 – 12 s | prévu |
byteplus/seedance-1-0-pro | ✓ | ✓ | ✓ | image uniquement | | | 2 – 12 s | prévu |
byteplus/seedance-1-0-pro-fast | ✓ | ✓ | | image uniquement | | | 2 – 12 s | prévu |
byteplus/seedance-1-0-lite-i2v | | ✓ | ✓ | image uniquement | | | 2 – 12 s | prévu |
byteplus/seedance-1-0-lite-t2v | ✓ | | | image uniquement | | | 2 – 12 s | pré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.
| Champ | Type | Notes |
|---|
content | array | É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. |
ratio | string | Rapport d’aspect. 16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9 / adaptive. adaptive infère depuis l’entrée. |
duration | integer | Secondes. La plage autorisée dépend du modèle — voir le tableau ci-dessus. |
resolution | string | 480p / 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_audio | boolean | Générer automatiquement une bande sonore synchronisée. Défaut false. Uniquement sur seedance-2.0 / 2.0-fast / 1-5-pro. |
watermark | boolean | Imprimer le filigrane amont. Défaut défini par l’amont. |
seed | integer | Graine aléatoire pour la reproductibilité. |
service_tier | string | default (en ligne) ou flex (hors ligne / priorité plus basse, quota plus élevé). Défaut default. |
return_last_frame | boolean | Retourner la dernière image comme image aux côtés du MP4. Défaut false. |
callback_url | string | URL 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 :
role | Objectif |
|---|
first_frame | Ancrer cette image comme la première image de la vidéo générée. |
end_frame | Ancrer cette image comme la dernière image (utiliser avec first_frame pour i2v première+dernière image). |
reference_image | Référence de style / sujet (variante référence multimodale ; peut passer plusieurs). |
reference_video | Référence de style / mouvement, ou vidéo source pour édition / extension. |
reference_audio | Musique 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 :
| Statut | Statut amont Seedance | Signification |
|---|
NOT_START | (transitoire) | Ligne de tâche créée, pas encore dispatchée |
SUBMITTED | queued | Envoyé à l’amont, en attente dans la file |
IN_PROGRESS | running | L’amont effectue le rendu |
SUCCESS | succeeded | Terminé. data.result_url porte le MP4 |
FAILURE | failed | É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