Claude Opus 5.5 ist auf SeedRouter verfügbar
SeedRouter Docs

Seedance 2.0

Videos mit Seedance 2.0 über die offizielle ModelArk-Aufgaben-API erzeugen: Text zu Video, erster und letzter Frame sowie Bild-, Video- und Audioreferenzen, 480p bis 4K.

View Markdown

Seedance 2.0 ist das Videogenerierungsmodell von ByteDance (Dreamina Seedance 2.0). Sende den offiziellen ModelArk-Aufgaben-Body, behalte die zurückgegebene Aufgaben-ID und lies das fertige Video aus der Aufgabe. Bilder, Videos und Audio gehören als URLs in content.

Modell-IDs

Modell-IDAuflösungenHinweise
dreamina-seedance-2-0480p, 720p, 1080p, 4KVollständiges Modell
dreamina-seedance-2-0-fast480p, 720pNiedrigerer Preis pro Sekunde
dreamina-seedance-2-0-mini480p, 720pNiedrigster Preis pro Sekunde

Alle drei IDs akzeptieren dieselben Parameter. Aktuelle Preise findest du auf der Modellseite.

Kurzbeispiel

curl https://api.seedrouter.ai/v1/contents/generations/tasks \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0",
    "content": [{"type": "text", "text": "A red paper boat drifts across a calm pond at sunrise, slow dolly-in"}],
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5,
    "generate_audio": true
  }'

Endpunkt

POST https://api.seedrouter.ai/v1/contents/generations/tasks
HeaderWert
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

Der Body ist die offizielle ModelArk-Anfrage „Videogenerierungsaufgabe erstellen“. Wenn du ModelArk bereits aufrufst, änderst du nur die Basis-URL auf https://api.seedrouter.ai/v1 und den API-Schlüssel. Die Antwort ist {"id": "task_..."}, nicht das fertige Video. Bewahre API-Schlüssel in serverseitigem Code auf.

Parameter

NameTypPflichtStandardwertHinweise
modelstringJa—Eine der drei Modell-IDs oben.
contentobject[]Ja—Der Prompt und die Medien; siehe unten.
resolutionenumNein720p480p, 720p, 1080p, 4k; die IDs Fast und Mini akzeptieren nur 480p und 720p.
ratioenumNeinadaptive16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive.
durationintegerNein54–15 Sekunden, oder -1, damit das Modell wählt.
generate_audiobooleanNeintrueTon zusammen mit dem Video erzeugen.
watermarkbooleanNeinfalseEin Wasserzeichen hinzufügen.
return_last_framebooleanNeinfalseDen letzten Frame zusätzlich als Bild-URL zurückgeben.
execution_expires_afterintegerNein1728003600–259200 Sekunden. Eine Aufgabe, die danach noch nicht abgeschlossen ist, wird zu expired und nicht berechnet.
priorityintegerNein00–9.
safety_identifierstringNein—1–64 Zeichen, die deinen Endnutzer kennzeichnen. Ein Hash genügt.
service_tierenumNeindefaultNur default.
content_filterbooleanNeintrueSeedRouter-Erweiterung. false schaltet die Inhaltsfilterung für diese Anfrage aus.

content-Einträge

EintragFormRolleLimit
Text{"type": "text", "text": "..."}—Einer.
Bild{"type": "image_url", "image_url": {"url": "https://..."}, "role": "..."}first_frame, last_frame, reference_imageBis zu 9 Referenzbilder.
Video{"type": "video_url", "video_url": {"url": "https://..."}, "role": "reference_video"}reference_videoBis zu 3.
Audio{"type": "audio_url", "audio_url": {"url": "https://..."}, "role": "reference_audio"}reference_audioBis zu 3. Erfordert ein Referenzbild oder -video.

Unbekannte Felder werden abgelehnt. Nicht unterstützt: seed, callback_url (frag stattdessen die Aufgabe ab), draft und draft_task, tools sowie die nur für 1.x geltenden frames und camera_fixed, außerdem output_format und omni_reference_task_type (nur Seedance 2.5). Aufgaben können weder abgebrochen noch gelöscht werden.

Modi

Der Modus ergibt sich aus den content-Einträgen; es gibt keinen Modus-Parameter.

Moduscontent
Text zu Videoein Texteintrag
Erster FrameText (optional) + ein Bild mit der Rolle first_frame oder ein Bild ohne Rolle
Erster und letzter FrameText (optional) + ein first_frame-Bild + ein last_frame-Bild
Multimodale ReferenzText + beliebige Kombination aus reference_image-, reference_video- und reference_audio-Einträgen

Die Modi mit erstem Frame lassen sich nicht mit Referenzeinträgen kombinieren. Bei mehreren Bildern oder anderen Medien braucht jedes Bild eine role.

Referenzbeispiel

curl https://api.seedrouter.ai/v1/contents/generations/tasks \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0",
    "content": [
      {"type": "text", "text": "The character from the image walks through the market in the video, same camera move"},
      {"type": "image_url", "image_url": {"url": "https://example.com/character.png"}, "role": "reference_image"},
      {"type": "video_url", "video_url": {"url": "https://example.com/market.mp4"}, "role": "reference_video"}
    ],
    "ratio": "adaptive",
    "duration": 8
  }'

Ersetze die Beispiel-URLs durch eigene, erreichbare Dateien.

Medieneingaben

Diese API akzeptiert ausschließlich URL-Verweise. Base64, data:-URLs, asset://-IDs und Multipart-Uploads werden nicht akzeptiert. Das Playground lädt ausgewählte Dateien zunächst in den Speicher und sendet dann deren URLs.

Medien müssen öffentliche HTTP(S)-URLs sein und die offiziellen Grenzen des Modells einhalten:

MediumFormateGrenzen
BildJPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIFKleiner als 30 MB; Breite und Höhe 300–6000 px; Seitenverhältnis (Breite / Höhe) 0,4–2,5; 1–9 Referenzbilder
VideoMP4, MOV (H.264 oder H.265)Je 2–15 Sekunden, bis zu 3, insgesamt höchstens 15 Sekunden; höchstens 200 MB; 24–60 FPS; Breite und Höhe 300–6000 px; Seitenverhältnis 0,4–2,5; 407.696–8.295.044 Pixel (Breite × Höhe)
AudioWAV, MP3Je 2–15 Sekunden, bis zu 3, insgesamt höchstens 15 Sekunden; erfordert ein Referenzbild oder -video; höchstens 15 MB

Referenzbilder und -videos mit echten menschlichen Gesichtern werden vom Modell nicht unterstützt.

Medien werden beim Start der Aufgabe geprüft, vor jeder Generierung. Eine Aufgabe, deren Medien eine dieser Grenzen verletzen, endet als failed mit invalid_request_error und einer Meldung, die die Regel nennt, zum Beispiel The request was rejected: content reference videos must total at most 15 seconds., und wird nicht berechnet. Eine Datei, die zu diesem Zeitpunkt nicht gelesen werden kann, wird an das Modell weitergegeben, das sie annimmt oder ablehnt; eine fehlgeschlagene Aufgabe wird in keinem Fall berechnet.

Kostenfaktoren

Die aktuellen Preise findest du im Preisabschnitt des Modells. Seedance 2.0 rechnet Video-Token ab, die offizielle Einheit:

video tokens = (output seconds + reference video seconds) × width × height × 24 / 1024

Der Preis pro Million Token hängt von der Ausgabeauflösung ab und davon, ob die Anfrage ein Referenzvideo enthält; eine Anfrage mit Referenzvideo verwendet für alle ihre Token einen niedrigeren Tarif. Text-, Bild- und Audioeingaben werden nicht berechnet. Bei 16:9 entspricht eine Sekunde 10.044 Token in 480p (864×496), 21.600 in 720p, 48.600 in 1080p und 194.400 in 4K.

Berechnet werden die Token, die das fertige Video meldet (usage.completion_tokens); duration: -1 wird daher nach der tatsächlich erzeugten Länge abgerechnet. Gerenderte Clips laufen etwas über die angefragte Länge hinaus: Eine Anfrage über 5 Sekunden in 720p und 16:9 rendert 121 Frames und meldet 108.900 statt 108.000 Token. Die endgültigen Kosten siehst du im Nutzungsverlauf deines Kontos. Fehlgeschlagene und abgelaufene Aufgaben werden nicht berechnet.

Ausgabeschema

Beim Senden wird die Aufgaben-ID zurückgegeben:

{"id": "task_..."}

Aufgabe abrufen

curl https://api.seedrouter.ai/v1/contents/generations/tasks/YOUR_TASK_ID \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"

Frag alle 10–20 Sekunden ab, bis status den Wert succeeded, failed oder expired hat. Eine Zeitüberschreitung des Netzwerks während der Abfrage bedeutet nicht, dass die Erzeugung fehlgeschlagen ist: Behalte die Aufgaben-ID und setze die Prüfung fort. Erstelle keine weitere Aufgabe, um den Fortschritt zu prüfen.

Vollständiges Abfragebeispiel

Führe dies nach dem obigen Python-Beispiel zum Senden aus.

import time

deadline = time.monotonic() + 1800
while time.monotonic() < deadline:
    result = requests.get(
        f"https://api.seedrouter.ai/v1/contents/generations/tasks/{task_id}",
        headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
        timeout=30,
    )
    result.raise_for_status()
    task = result.json()
    if task["status"] == "succeeded":
        print(task["content"]["video_url"])
        break
    if task["status"] in ("failed", "expired"):
        raise RuntimeError(task["error"]["message"])
    time.sleep(15)
else:
    raise TimeoutError(f"Still waiting. Resume polling task {task_id}.")

Erfolgreiche Aufgabe

{
  "id": "task_...",
  "model": "dreamina-seedance-2-0",
  "status": "succeeded",
  "content": {
    "video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4",
    "last_frame_url": "https://static.seedrouter.ai/media/tasks/task_example/last_frame/0.jpg"
  },
  "usage": {"completion_tokens": 108900, "total_tokens": 108900},
  "seed": 42,
  "resolution": "720p",
  "ratio": "16:9",
  "duration": 5,
  "framespersecond": 24,
  "generate_audio": true,
  "draft": false,
  "output_format": "mp4",
  "service_tier": "default",
  "execution_expires_after": 172800,
  "priority": 0,
  "created_at": 1790321515,
  "updated_at": 1790321652
}
FeldBedeutung
idBewahre diese ID für spätere Abfragen auf.
statusqueued, running, succeeded, failed oder expired.
content.video_urlDas erzeugte Video.
content.last_frame_urlDer letzte Frame, wenn return_last_frame den Wert true hat.
usage.completion_tokensVideo-Token des fertigen Videos; die abgerechnete Menge.
duration, resolution, ratio, framespersecond, seedWas tatsächlich gerendert wurde; seed ist der vom Modell gewählte Wert.
created_at, updated_atUnix-Zeitstempel in Sekunden.
error{"code", "message"} bei einer fehlgeschlagenen oder abgelaufenen Aufgabe.

Video-URLs werden in unserem Speicher gehostet. Speichere die Datei in deinem eigenen Speicher, wenn du eine dauerhafte Kopie benötigst.

Aufgaben auflisten

curl "https://api.seedrouter.ai/v1/contents/generations/tasks?page_num=1&page_size=20&filter.status=succeeded" \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"

Gibt {"total": N, "items": [...]} mit Aufgabenobjekten der letzten 7 Tage zurück, die neuesten zuerst. page_num und page_size liegen bei 1–500 (Vorgabewerte 1 und 20). Filter: filter.status, filter.model, filter.task_ids (wiederholbar) und filter.service_tier.

Fehler

Anfragen, die vor der Erstellung einer Aufgabe abgelehnt werden, geben einen HTTP-Fehler mit einem error-Objekt zurück und werden nicht berechnet. Eine Aufgabe, die nach der Annahme fehlschlägt, gibt bei der Abfrage HTTP 200 zurück, zusammen mit status: "failed" (oder "expired") und einem error-Objekt. Von der Inhaltsfilterung zurückgehaltene Ausgaben schlagen mit content_policy_violation fehl; eine Aufgabe, die über execution_expires_after hinaus läuft, endet als expired mit task_expired.

Codes, HTTP-Status und Hinweise zu Wiederholungen findest du im gemeinsamen Fehlerkatalog.

{
  "id": "task_...",
  "model": "dreamina-seedance-2-0",
  "status": "failed",
  "error": {
    "code": 60001,
    "message": "The request was rejected by the content policy. Please revise the prompt or input images."
  }
}

Kommt es beim Senden selbst zu einer Zeitüberschreitung, prüfe deine Aufgabenliste, bevor du erneut sendest: Die erste Anfrage wurde möglicherweise bereits angenommen.

Tipps

  • Beschreibe Motiv, Handlung, Kamerabewegung und Beleuchtung in ganzen Sätzen.
  • Erstelle Entwürfe in 480p mit kurzer duration und rendere die beste Version dann in höherer Auflösung.
  • Verkette Einstellungen mit return_last_frame: Verwende den zurückgegebenen Frame als first_frame der nächsten Aufgabe.

Weiterführend