Zum Hauptinhalt springen
Verwende POST /v1/videos, um eine asynchrone Seedance-Videogenerierungsaufgabe zu erstellen. Rufe den Status der Aufgabe ab, bis sie abgeschlossen ist, und lade dann das Video von der zurückgegebenen Flatkey-URL herunter. Unterstützte Modelle sind seedance-2.0, seedance-2.0-fast, seedance-2.0-mini und seedance-2.5. Die Verfügbarkeit hängt von deinem Konto ab; verwende GET /v1/models, um die aktuelle Modellliste abzurufen.

Endpunkt

Flatkey akzeptiert auch POST /v1/video/generations und GET /v1/video/generations/{task_id}. Verwende /v1/videos für die standardisierte Antwortstruktur und native usage-Daten.

Anfrage

Body-Parameter

string
erforderlich
Seedance-Modell-ID: "seedance-2.0", "seedance-2.0-fast", "seedance-2.0-mini" oder "seedance-2.5".
array
erforderlich
Multimodale Eingabeelemente. Füge mindestens ein nicht leeres Text-, Bild-, Video- oder Audioelement ein. Siehe content-Elemente.
string
Ausgabeauflösung. Standard: "720p".
string
Ausgabe-Seitenverhältnis: "16:9", "4:3", "1:1", "3:4", "9:16", "21:9" oder "adaptive". Standard: "adaptive". Bei "adaptive" wählt das Modell das Seitenverhältnis anhand deiner Eingabebilder oder -videos. Bei seedance-2.5 unterstützen Aufgaben mit erstem Frame sowie mit erstem und letztem Frame nur "adaptive".
integer
Videolänge in Sekunden. Standard: 5. Seedance-2.0-Modelle akzeptieren 4 bis 15; seedance-2.5 akzeptiert 4 bis 30.
Sende immer eine positive duration. Flatkey rechnet Seedance pro Sekunde ab, daher wird -1 (das Modell wählt die Länge) mit video_price_not_configured abgelehnt. Die einzige Ausnahme ist eine Videobearbeitung mit seedance-2.5, die -1 erfordert.
boolean
Fügt unten rechts ein „AI generated“-Wasserzeichen hinzu. Standard: false.
boolean
Generiert eine synchronisierte Mono-Audiospur. Standard: true. Setze den Wert auf false, wenn du nur das Video brauchst; generiertes Audio kann gelegentlich an Urheberrechtsprüfungen scheitern.
boolean
Gibt den letzten Frame des generierten Videos als Bild zurück. Standard: false. Bei true enthält die abgeschlossene Aufgabe metadata.last_frame_url, über die du ein JPEG in denselben Abmessungen wie das Video und ohne Wasserzeichen herunterlädst. Verwende es als first_frame der nächsten Aufgabe, um Clips aneinanderzureihen. Wie metadata.url benötigt es keinen Autorisierungsheader; behandle es als privat.
string
Nur seedance-2.5. Container des generierten Videos: "mp4" oder "mov". Standard: "mp4". MOV bewahrt mehr Farbpräzision für Color Grading und Compositing (H.264, YUV 4:4:4, PCM-Audio), lässt sich aber in manchen Playern nicht öffnen. Der Content-Endpunkt liefert für MOV-Ergebnisse video/quicktime.
string
Nur seedance-2.5, für Aufgaben im Referenzmodus. Teilt dem Modell mit, welche Aufgabe du beabsichtigst: "auto" (Standard), "reference", "edit" oder "extend". Wenn du den Wert explizit setzt, werden die Prüfungen des Aufgabentyps bereits beim Absenden ausgeführt, sodass eine ungültige Kombination sofort fehlschlägt statt erst nach dem Start der Aufgabe. "reference", "edit" und "extend" erfordern alle Referenzelemente in content; eine reine Textanfrage mit "reference" wird abgelehnt. Siehe Videobearbeitung und -verlängerung.
integer
Warteschlangenpriorität von 0 bis 9. Standard: 0. Höhere Werte ziehen die Aufgabe vor Aufgaben mit niedrigerer Priorität, die auf dasselbe Modell warten. Unterstützt von allen Seedance-2.0-Modellen und seedance-2.5. Werte außerhalb von 0–9 werden mit 400 abgelehnt.
integer
Sekunden, die die Aufgabe warten und laufen darf, bevor sie abläuft. Standard: 172800 (48 Stunden). Verwende einen kürzeren Wert, wenn dir ein verspätetes Ergebnis nichts nützt.
string
Öffentliche HTTPS-URL, die bei jeder Statusänderung der Aufgabe einen POST erhält. Siehe Aufgaben-Callbacks. Sie muss https verwenden, darf keine Benutzer-Anmeldedaten enthalten, darf höchstens 2.048 Zeichen lang sein und muss zu einer öffentlichen Adresse aufgelöst werden; andernfalls wird die Anfrage mit 400 abgelehnt.

content-Elemente

Jede URL kann eine öffentliche HTTPS-URL, eine data:<mime>;base64,-Data-URI (nur Bilder und Audio) oder eine asset://-Referenz aus der Asset-Bibliothek sein. Der gesamte Anfrage-Body muss unter 64 MB bleiben. Wähle pro Aufgabe einen Eingabemodus. Diese Modi lassen sich nicht kombinieren:

Videobearbeitung

seedance-2.5 kann ein vorhandenes Video im Referenzmodus bearbeiten oder verlängern. Beschreibe die Änderung im Prompt und verweise auf das Video als @Video1.
Wie jede seedance-2.5-Anfrage mit Referenzvideo wird eine Bearbeitung zum Mit-Video-Tarif der jeweiligen Auflösung für pauschal 30 Sekunden abgerechnet, unabhängig von der Eingabe- oder Ausgabelänge.

Entwurfsmodus

seedance-2.5 kann zuerst einen günstigen Entwurf in 480p rendern, damit du Szene, Kameraeinstellungen und Bewegung prüfen kannst, bevor du für das finale Video bezahlst. Dafür sind zwei Anfragen nötig:
  1. Entwurf erstellen. Sende eine normale Anfrage mit "draft": true und "resolution": "480p". Sie wird wie ein reguläres 480p-Video abgerechnet.
  2. Finales Video rendern. Sobald der Entwurf abgeschlossen ist, sende eine Anfrage mit "resolution": "1080p", deren einziges content-Element ein draft_task ist, der auf die Aufgaben-ID des Entwurfs verweist.
Das finale Video übernimmt Prompt, Medien, Länge, Seitenverhältnis, Seed, Audioeinstellung und Aufgabentyp des Entwurfs. Sende zusammen mit einem draft_task weder duration, ratio, frames, seed, generate_audio, omni_reference_task_type, draft noch weitere content-Elemente; sonst wird die Anfrage mit 400 abgelehnt. return_last_frame, output_format, watermark, priority, execution_expires_after und callback_url kannst du weiterhin setzen.
Seedance akzeptiert keine Bilder oder Videos, die echte menschliche Gesichter direkt zeigen. Lade sie als personenbezogene Assets hoch und referenziere sie mit asset://.

Beispielanfragen

Eingabe mit erstem und letztem Frame

Multimodale Referenz

Antwort

Antwortfelder

string
Öffentliche Aufgaben-ID, die zum Abrufen des Status und zum Herunterladen des fertigen Videos verwendet wird. task_id enthält denselben Wert.
string
Aufgabenstatus: queued, in_progress, completed oder failed.
integer
Generierungsfortschritt von 0 bis 100.
integer
Unix-Zeitstempel für die Aufgabenerstellung.

Aufgabenstatus abrufen

Während die Generierung läuft, enthält die Antwort den aktuellen Fortschritt:
Wenn die Aufgabe abgeschlossen ist, enthält die Antwort die Video-URL und die Token-Nutzung:
Fehlgeschlagene Aufgaben geben die Fehlerdetails zusammen mit der Aufgabenantwort zurück:
Jedes vorab verbrauchte Guthaben wird automatisch erstattet.

Statuswerte

Aufgaben-Callbacks

Setze callback_url, um Statusänderungen anstelle der Abfrage oder zusätzlich dazu zu empfangen. Flatkey sendet einen POST mit Content-Type: application/json, wenn die Aufgabe in in_progress, completed oder failed wechselt. Der Body entspricht genau dem, was GET /v1/videos/{task_id} in diesem Moment zurückgibt, einschließlich metadata.url und metadata.last_frame_url bei abgeschlossenen Aufgaben.
Antworte innerhalb von 5 Sekunden mit einem beliebigen 2xx-Status. Andernfalls versucht Flatkey es noch zweimal, nach 2 und nach 8 Sekunden, und gibt dann auf. Weiterleitungen werden nicht verfolgt. Callbacks sind nicht signiert. Prüfe ein Ergebnis daher durch Abfragen der Aufgabe, bevor du darauf reagierst, und nutze die Abfrage weiterhin als maßgebliche Quelle, falls ein Callback verloren geht.

Video herunterladen

Der Content-Endpunkt streamt video/mp4-Daten oder video/quicktime, wenn die Aufgabe output_format: "mov" verwendet hat. Er erfordert kein Bearer-Token und kann direkt als <video>-Quelle verwendet werden.
Der Content-Endpunkt funktioniert nur nach Abschluss der Aufgabe und ist nach Client-IP ratenbegrenzt. Behandle die URL als vertraulich, da jeder mit Zugriff darauf das Video herunterladen kann.

Fehler

Fehler zur Anfragezeit verwenden den Standard-Fehlerrahmen von Flatkey:

End-to-End-Beispiel

Dieses Beispiel erstellt eine Aufgabe, ruft ihren Status alle fünf Sekunden ab und lädt das fertige Video herunter. Es erfordert jq.