Zum Hauptinhalt springen
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

ModellT2VI2V (erstes)I2V (erstes+letztes)Multimodale Ref¹Videobearb.²Audio gener.³DauerVerfügbar
byteplus/dreamina-seedance-2-0-260128 (2.0)✓ vollständig4 – 15 s
byteplus/seedance-2.0-fast✓ vollständig4 – 15 sgeplant
byteplus/seedance-1-5-pronur Bild4 – 12 sgeplant
byteplus/seedance-1-0-pronur Bild2 – 12 sgeplant
byteplus/seedance-1-0-pro-fastnur Bild2 – 12 sgeplant
byteplus/seedance-1-0-lite-i2vnur Bild2 – 12 sgeplant
byteplus/seedance-1-0-lite-t2vnur Bild2 – 12 sgeplant
¹ 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.
FeldTypAnmerkungen
contentarrayMultimodale Referenzelemente. Jedes Element: {type, image_url? | video_url? | audio_url?, role?}. Weglassen, wenn reines Text-zu-Video.
ratiostringSeitenverhältnis. 16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9 / adaptive. adaptive leitet aus der Eingabe ab.
durationintegerSekunden. Erlaubter Bereich hängt vom Modell ab — siehe Tabelle oben.
resolutionstring480p / 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_audiobooleanAutomatisch einen synchronisierten Soundtrack generieren. Standard false. Nur auf seedance-2.0 / 2.0-fast / 1-5-pro.
watermarkbooleanUpstream-Wasserzeichen drucken. Standard upstream-definiert.
seedintegerZufallsseed für Reproduzierbarkeit.
service_tierstringdefault (online) oder flex (offline / niedrigere Priorität, höheres Kontingent). Standard default.
return_last_framebooleanDas letzte Frame als Bild neben dem MP4 zurückgeben. Standard false.
callback_urlstringWebhook-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:
roleZweck
first_frameVerankere dieses Bild als erstes Frame des generierten Videos.
end_frameVerankere dieses Bild als letztes Frame (verwende mit first_frame für First+Last-Frame-i2v).
reference_imageStil-/Subjektreferenz (Multimodale-Referenz-Variante; kann mehrere übergeben).
reference_videoStil-/Bewegungsreferenz oder das Quellvideo für Bearbeitung / Erweiterung.
reference_audioHintergrundmusik 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:
StatusUpstream-Seedance-StatusBedeutung
NOT_START(vorübergehend)Aufgabenzeile erstellt, noch nicht versendet
SUBMITTEDqueuedAn Upstream gesendet, wartet in der Warteschlange
IN_PROGRESSrunningUpstream rendert
SUCCESSsucceededFertig. data.result_url trägt das MP4
FAILUREfailedFehlgeschlagen. 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