OrcaRouter spricht mit den Seedance-Videomodellen auf demselben
Submit-and-Poll-Endpunkt wie Kling. Du sendest
model: byteplus/dreamina-seedance-2-0-260128, OrcaRouter routet
die Anfrage an die Upstream-Ark-/contents/generations/tasks-API,
und du fragst dieselbe Aufgaben-ID über OrcaRouter ab, sobald sie
fertig ist (typischerweise 30 Sekunden bis 4 Minuten, abhängig von
Dauer / Auflösung / generate_audio).
Derzeit verfügbares Modell. Nur Seedance 2.0 ist derzeit
bereitgestellt, unter dem Backend-Namen
byteplus/dreamina-seedance-2-0-260128. Die Fähigkeitstabelle unten
listet den Rest der Seedance-Familie zur Referenz auf, aber sie
sind im Playground noch nicht auswählbar und nicht über OrcaRouter
routebar — verwende vorerst byteplus/dreamina-seedance-2-0-260128
für jede Anfrage.
Der Einreichungs-Endpunkt POST /v1/video/generations und der
Abruf-Endpunkt GET /v1/video/generations/{task_id} werden mit
Kling geteilt. Was sich ändert, ist der
Request-Body: Kling verwendet
prompt + image + metadata.{mode, aspect_ratio, image_list, ...},
Seedance verwendet prompt + metadata.{content[], ratio, duration, generate_audio, watermark, ...}. Das Präfix auf model wählt,
welches Schema honoriert wird.
Modelle
| Modell | T2V | I2V (erstes) | I2V (erstes+letztes) | Multimodale Ref¹ | Videobearb.² | Audio gener.³ | Dauer | Verfügbar |
|---|
byteplus/dreamina-seedance-2-0-260128 (2.0) | ✓ | ✓ | ✓ | ✓ vollständig | ✓ | ✓ | 4 – 15 s | ✓ |
byteplus/seedance-2.0-fast | ✓ | ✓ | ✓ | ✓ vollständig | ✓ | ✓ | 4 – 15 s | geplant |
byteplus/seedance-1-5-pro | ✓ | ✓ | ✓ | nur Bild | | ✓ | 4 – 12 s | geplant |
byteplus/seedance-1-0-pro | ✓ | ✓ | ✓ | nur Bild | | | 2 – 12 s | geplant |
byteplus/seedance-1-0-pro-fast | ✓ | ✓ | | nur Bild | | | 2 – 12 s | geplant |
byteplus/seedance-1-0-lite-i2v | | ✓ | ✓ | nur Bild | | | 2 – 12 s | geplant |
byteplus/seedance-1-0-lite-t2v | ✓ | | | nur Bild | | | 2 – 12 s | geplant |
¹ Multimodale Referenz = das metadata.content[]-Array kann
image_url- / video_url- / audio_url-Elemente mit
role-Markern (reference_image / reference_video /
reference_audio) tragen. “Vollständig” bedeutet, dass
Kombinationen aus Bild + Video + Audio akzeptiert werden.
² Videobearbeitung = übergib ein video_url-Inhaltselement, um
prompt-gesteuerte Bearbeitungen auf das Quellvideo anzuwenden
(Subject Swap, Region Inpainting, usw.).
³ Natives Audio = der Upstream generiert automatisch einen
Soundtrack passend zum Video. Schalte über
metadata.generate_audio: true ein.
Der Einreichungs-Endpunkt ist für jedes Modell gleich —
POST /v1/video/generations. Was sich ändert, ist, welche
metadata-Felder der Upstream gemäß der obigen Tabelle honoriert.
Siehe die Upstream
Seedance-Fähigkeitsmatrix
für die autoritative Funktionsliste pro Modell.
Eine Aufgabe einreichen
Sende einen POST an /v1/video/generations mit model, prompt
und allen Upstream-spezifischen Parametern unter 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
}
}'
Die Antwort trägt die Aufgaben-ID (gleicher Umschlag wie Kling —
OrcaRouter normalisiert über Anbieter hinweg):
{
"id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
"task_id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
"object": "video",
"model": "byteplus/dreamina-seedance-2-0-260128",
"status": "queued",
"progress": 0,
"created_at": 1777975188
}
OrcaRouter umhüllt deinen prompt automatisch als Text-Element im
content[]-Array von Seedance — du musst kein {type: "text"}-
Element selbst übergeben. Jedes Text-Element, das du in
metadata.content[] lieferst, wird durch deinen
Top-Level-prompt ersetzt. Andere Inhaltselemente (image_url,
video_url, audio_url) werden unverändert durchgereicht.
Body-Felder
Diese Felder kommen in metadata. Ordne sie gemäß den
Varianten-Tabellen unten an.
| Feld | Typ | Anmerkungen |
|---|
content | array | Multimodale Referenzelemente. Jedes Element: {type, image_url? | video_url? | audio_url?, role?}. Weglassen, wenn reines Text-zu-Video. |
ratio | string | Seitenverhältnis. 16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9 / adaptive. adaptive leitet aus der Eingabe ab. |
duration | integer | Sekunden. Erlaubter Bereich hängt vom Modell ab — siehe Tabelle oben. |
resolution | string | 480p / 720p / 1080p. Standard 720p. 1080p nur auf seedance-2.0 / seedance-2.0-fast / seedance-1-5-pro / seedance-1-0-pro / seedance-1-0-pro-fast. |
generate_audio | boolean | Automatisch einen synchronisierten Soundtrack generieren. Standard false. Nur auf seedance-2.0 / 2.0-fast / 1-5-pro. |
watermark | boolean | Upstream-Wasserzeichen drucken. Standard upstream-definiert. |
seed | integer | Zufallsseed für Reproduzierbarkeit. |
service_tier | string | default (online) oder flex (offline / niedrigere Priorität, höheres Kontingent). Standard default. |
return_last_frame | boolean | Das letzte Frame als Bild neben dem MP4 zurückgeben. Standard false. |
callback_url | string | Webhook-URL — empfängt Statusänderungen anstelle (oder zusätzlich) zum Polling. |
content[]-Elementform
Jedes Element in metadata.content ist eine von vier Formen:
{ "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": "..." } // wird automatisch durch den Top-Level-Prompt ersetzt
role-Werte:
role | Zweck |
|---|
first_frame | Verankere dieses Bild als erstes Frame des generierten Videos. |
end_frame | Verankere dieses Bild als letztes Frame (verwende mit first_frame für First+Last-Frame-i2v). |
reference_image | Stil-/Subjektreferenz (Multimodale-Referenz-Variante; kann mehrere übergeben). |
reference_video | Stil-/Bewegungsreferenz oder das Quellvideo für Bearbeitung / Erweiterung. |
reference_audio | Hintergrundmusik oder Stimmreferenz (Audio-Video-Generierung). |
Referenziere Elemente innerhalb des Prompts mit der [Image 1]-,
[Video 1]-, [Audio 1]-Syntax. Der Index entspricht der
Array-Reihenfolge (1-basiert, pro Typ skopiert).
Ergebnisse abfragen
Verwende die zur Einreichungszeit zurückgegebene Aufgaben-ID:
curl https://api.orcarouter.ai/v1/video/generations/task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw \
-H "Authorization: Bearer sk-orca-..."
Die Antwortform ist umhüllt (identisch zu 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": ""
}
}
Statuswerte werden über Anbieter hinweg auf Großbuchstaben
normalisiert:
| Status | Upstream-Seedance-Status | Bedeutung |
|---|
NOT_START | (vorübergehend) | Aufgabenzeile erstellt, noch nicht versendet |
SUBMITTED | queued | An Upstream gesendet, wartet in der Warteschlange |
IN_PROGRESS | running | Upstream rendert |
SUCCESS | succeeded | Fertig. data.result_url trägt das MP4 |
FAILURE | failed | Fehlgeschlagen. data.fail_reason hat den Grund |
Fortschritt ist ein Prozent-String ("50%", "100%"), kein
Integer.
Frage alle 5 - 10 Sekunden ab. Ein 5-Sekunden-720p-Clip wird
typischerweise in 30 - 60 Sekunden abgeschlossen; 1080p mit Audio
oder 15-Sekunden- / Multimodale-Referenz-Clips können 3 - 5 Minuten
dauern.
Die result_url ist eine Upstream-signierte TOS-URL mit kurzem TTL
— lade herunter oder hoste neu, wenn du lange Aufbewahrung
benötigst.
Endpunkt-Varianten
Alle Varianten teilen sich POST /v1/video/generations. Welcher
Seedance-Funktionspfad vom Upstream bedient wird, wird durch die
metadata.content[]-Elemente und role-Marker bestimmt — nicht
durch die URL.
Text-zu-Video
Nur model + prompt + optionale Metadaten. Keine Inhaltselemente
bedeutet reines Text-zu-Video:
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
}
}'
Bild-zu-Video — erstes Frame
Übergib ein Bildelement mit 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
}
}'
Bild-zu-Video — erstes und letztes Frame
Zwei Bildelemente, eines jeweils für first_frame und 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
}
}'
Multimodale Referenz — Bild + Video + Audio
Kombiniere reference_image- / reference_video- /
reference_audio-Elemente. Referenziere sie im Prompt mit
[Image N]- / [Video N]- / [Audio N]-Indizes (1-basiert, pro
Typ):
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
}
}'
Verfügbar auf seedance-2.0 und seedance-2.0-fast (vollständige
Bild + Video + Audio-Kombinationen); seedance-1-5-pro und
seedance-1-0-* akzeptieren nur reference_image-Elemente.
Videobearbeitung / Erweiterung
Übergib {type: "video_url", role: "reference_video"} und bitte
den Prompt, es zu modifizieren oder zu erweitern:
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
}
}'
Nur auf seedance-2.0 und seedance-2.0-fast verfügbar.
Webhooks
Übergib metadata.callback_url: "https://your.domain/webhook", um
einen POST zu erhalten, wenn die Aufgabe zu SUCCESS oder
FAILURE übergeht. Die Nutzlast spiegelt die Polling-Antwort
wider. Wenn du sowohl Polling als auch einen Callback einrichtest,
erhältst du beide — sie sind unabhängig.
Abrechnung
OrcaRouter reicht die Pro-Aufgabe-Token-Gebühr des Upstreams ohne
Aufschlag durch. Die Endkosten entsprechen der veröffentlichten
Tarifkarte von ByteDance Ark (die Upstream-completion_tokens /
total_tokens aus dem Aufgabenergebnis werden zur Pro-Token-Rate
des Modells, die in deiner Channel-Margin-Konfiguration festgelegt
ist, in Kontingent umgewandelt).
Ein kleiner Pre-Consume-Hold wird zur Einreichungszeit reserviert;
die Differenz wird bei Erfolg abgerechnet. Siehe
Betrieb / Abrechnung & Nutzung.
Siehe auch