Claude Opus 5.5 ist auf SeedRouter verfügbar

Video

Seedance 2.5

View Markdown

Videos mit Seedance 2.5 über die offizielle ModelArk-Aufgaben-API erzeugen, bearbeiten und verlängern: bis zu 30 Sekunden in 1080p, mit bis zu 30 Bild-, 10 Video- und 10 Audioreferenzen.

Seedance 2.5 ist das neueste Videogenerierungsmodell von ByteDance (Dreamina Seedance 2.5). Sende den offiziellen ModelArk-Aufgaben-Body zu POST /v1/videos/generations, behalte die zurückgegebene Aufgaben-ID und lies das fertige Video von GET /v1/tasks/{id}. Bilder, Videos und Audio gehören als URLs in content.

Modell-IDs

Modell-IDAuflösungenLänge
dreamina-seedance-2-5480p, 720p, 1080p4–30 Sekunden oder automatisch

Aktuelle Preise findest du auf der Modellseite.

Kurzbeispiel

curl https://api.seedrouter.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-5",
    "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/videos/generations
HeaderWert
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

Der Body ist die offizielle ModelArk-Anfrage „Videogenerierungsaufgabe erstellen“; das ist derselbe Endpunkt, den jedes SeedRouter-Videomodell verwendet. Die Antwort ist die neue Aufgabe (id, status: "processing"), nicht das fertige Video. Bewahre API-Schlüssel in serverseitigem Code auf.

Parameter

NameTypPflichtStandardwertHinweise
modelstringJa—dreamina-seedance-2-5.
contentobject[]Ja—Der Prompt und die Medien; siehe unten.
draftbooleanNeinfalsetrue erstellt einen Entwurf in 480p.
resolutionenumNein480p, 720p, 1080p. Standardmäßig 720p bei normaler Generierung und 480p bei Entwürfen; für ein fertiges Video aus einem Entwurf muss 1080p explizit angegeben werden.480p, 720p, 1080p.
ratioenumNeinadaptive16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive. Muss mit einem ersten Frame sowie bei edit und extend adaptive sein (oder weggelassen werden).
durationintegerNein-14–30 Sekunden, oder -1, damit das Modell wählt. Muss bei edit -1 sein.
generate_audiobooleanNeintrueTon zusammen mit dem Video erzeugen.
watermarkbooleanNeinfalseEin Wasserzeichen hinzufügen.
return_last_framebooleanNeinfalseDen letzten Frame zusätzlich als Bild-URL zurückgeben.
output_formatenumNeinmp4mp4 oder mov.
omni_reference_task_typeenumNeinautoauto, reference, edit, extend. edit und extend erfordern ein Referenzvideo.
execution_expires_afterintegerNein1728003600–259200 Sekunden. Eine Aufgabe, die danach noch nicht abgeschlossen ist, schlägt mit task_expired fehl und wird 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 30 Referenzbilder.
Video{"type": "video_url", "video_url": {"url": "https://..."}, "role": "reference_video"}reference_videoBis zu 10.
Audio{"type": "audio_url", "audio_url": {"url": "https://..."}, "role": "reference_audio"}reference_audioBis zu 10.

Unbekannte Felder werden abgelehnt. Nicht unterstützt: seed, callback_url (frag stattdessen die Aufgabe ab), tools sowie die nur für 1.x geltenden frames und camera_fixed. 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
Video bearbeitenText + ein reference_video, mit omni_reference_task_type: "edit"
Video verlängernText + ein reference_video, mit omni_reference_task_type: "extend"

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/videos/generations \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-5",
    "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–30 Referenzbilder
VideoMP4, MOV (H.264 oder H.265)Je 2–30 Sekunden (4–30 Sekunden bei edit), bis zu 10, insgesamt höchstens 30 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–30 Sekunden, bis zu 10, insgesamt höchstens 30 Sekunden; 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.5 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 9.607,5 Token in 480p (854×480), 21.600 in 720p und 48.600 in 1080p.

Für Anfragen mit Referenzvideos gilt außerdem eine Mindestmenge an Tokens. Setze für die Kostenschätzung in der Formel mindestens ceil(output seconds × 2 / 3) Referenzsekunden an, auch wenn die ursprünglichen Referenzvideos kürzer sind. Das gilt sowohl für Entwürfe als auch für fertige Videos; der Entwurfsclip selbst wird dabei nicht zum Referenzvideo. Die tatsächlichen Kosten richten sich nach der von der abgeschlossenen Aufgabe gemeldeten Nutzung.

Berechnet werden die Token, die das fertige Video meldet (output.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 Aufgaben werden nicht berechnet.

Ausgabeschema

Beim Senden wird die neue Aufgabe zurückgegeben:

{"id": "task_...", "model": "dreamina-seedance-2-5", "status": "processing", "created_at": 1790321515}

Aufgabe abrufen

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

Frag alle 10–20 Sekunden ab, bis status den Wert completed oder failed 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/tasks/{task_id}",
        headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
        timeout=30,
    )
    result.raise_for_status()
    task = result.json()
    if task["status"] == "completed":
        print(task["output"]["video_url"])
        break
    if task["status"] == "failed":
        raise RuntimeError(task["error"]["message"])
    time.sleep(15)
else:
    raise TimeoutError(f"Still waiting. Resume polling task {task_id}.")

Abgeschlossene Aufgabe

{
  "id": "task_...",
  "model": "dreamina-seedance-2-5",
  "status": "completed",
  "created_at": 1790321515,
  "finished_at": 1790321652,
  "output": {
    "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",
    "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
  }
}
FeldBedeutung
idBewahre diese ID für spätere Abfragen auf.
statusprocessing, completed oder failed.
output.video_urlDas erzeugte Video.
output.last_frame_urlDer letzte Frame, wenn return_last_frame den Wert true hat.
output.contentDie gleichen URLs in der offiziellen ModelArk-Form.
output.usage.completion_tokensVideo-Token des fertigen Videos; die abgerechnete Menge.
output.duration, output.resolution, output.ratio, output.framespersecond, output.seedWas tatsächlich gerendert wurde; seed ist der vom Modell gewählte Wert.
created_at, finished_atUnix-Zeitstempel in Sekunden.
error{"code", "message"} bei einer fehlgeschlagenen Aufgabe.

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

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" 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, schlägt mit task_expired fehl.

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

{
  "id": "task_...",
  "model": "dreamina-seedance-2-5",
  "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 deinen Aufgabenverlauf, 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.
  • Um Filmmaterial zu bearbeiten, setze omni_reference_task_type auf edit und beschreibe nur, was sich ändern soll.

Weiterführend

Entwurf als Vorschau und fertiges Video

Setze draft: true, um eine Vorschau in 480p zu generieren. Andere Auflösungen sind im Entwurfsmodus ungültig. Für Vorschauen gelten dieselbe Berechnung der Token-Nutzung und derselbe Token-Preis wie für die normale Generierung in 480p.

{
  "model": "dreamina-seedance-2-5",
  "content": [{ "type": "text", "text": "A fox walks through a sunny garden." }],
  "draft": true,
  "resolution": "480p",
  "duration": 4,
  "ratio": "16:9"
}

Frage die zurückgegebene SeedRouter-Aufgaben-ID ab, bis status den Wert completed und output.draft den Wert true hat. Sende innerhalb von 7 Tagen nach Erstellung des Entwurfs eine separate Anfrage mit dieser ID:

{
  "model": "dreamina-seedance-2-5",
  "content": [{ "type": "draft_task", "draft_task": { "id": "task_YOUR_DRAFT_ID" } }],
  "resolution": "1080p"
}

Der Entwurf muss zu deinem Konto gehören, abgeschlossen haben und dasselbe Modell verwenden. content darf nur ein einziges draft_task-Element enthalten. Setze resolution explizit auf 1080p; lass draft weg oder setze es auf false. Sende duration, ratio, seed, generate_audio, omni_reference_task_type, Text oder Medien nicht erneut, auch nicht mit identischen Werten. Diese Einstellungen werden aus dem Entwurf übernommen.

Für die neue Aufgabe kannst du watermark, return_last_frame, output_format, execution_expires_after, priority, safety_identifier und service_tier: "default" setzen. Für nicht angegebene Ausgabeoptionen gelten die jeweiligen Standardwerte. content_filter wird übernommen und kann nicht geändert werden. Bei erfolgreicher Erstellung des fertigen Videos werden eine neue Aufgaben-ID, output.draft: false und output.draft_task_id mit deiner ursprünglichen SeedRouter-Entwurfs-ID zurückgegeben. Mit einem Entwurf kannst du vor Ablauf seiner Gültigkeit mehrere fertige Videos separat generieren.

Entwurf und fertiges Video werden unabhängig voneinander berechnet. Für das fertige Video gilt der 1080p-Tarif für die Eingabekategorie des ursprünglichen Entwurfs: Wurde für den Entwurf ein Referenzvideo verwendet, gilt auch für das fertige Video der Referenzvideo-Tarif, und die Dauer des ursprünglichen Referenzvideos fließt in die Token-Nutzung ein. Der Entwurfsclip selbst wird nicht als zusätzliches Eingabevideo gezählt. Für jede Aufgabe gilt der zum Zeitpunkt ihrer Übermittlung gültige Preis. Fehlgeschlagene Anfragen werden nicht berechnet.