Skip to main content
Wenn Sie mit Doubao Seedance Assets referenzieren möchten, die von der abgebildeten Person selbst bestätigt wurden, lesen Sie zuerst den Leitfaden zu Doubao-Assets realer Personen.

Schnellstart

Die Videogenerierung ist immer asynchron. Das Beispiel verwendet wan2.6-t2v und eine ganzzahlige duration in Sekunden.

Wie findet man asynchrone Medienmodelle und ruft ihre Schemas ab?

Die Ermittlung erfolgt in zwei Schritten. Rufen Sie zuerst Text-zu-Bild- oder Text-zu-Video-Modelle mit Unterstützung für die asynchronen APIs aus dem öffentlichen Modellkatalog ab. Verwenden Sie anschließend die model_id, um das Anfrageschema der Endpunkte des Modells abzurufen.

Modelle mit Unterstützung für die asynchronen APIs auflisten

Der Modellkatalog verwendet dieselbe Datenquelle wie Playground. Nutzen Sie type=image_generation für Text-zu-Bild-Modelle und type=video für Text-zu-Video-Modelle. Mit schema_checked=true enthält die Liste nur Modelle mit veröffentlichtem und geprüftem Anfrageschema.
Beide Anfragen verwenden denselben Endpunkt. Der Filter type akzeptiert derzeit einen Wert. Fragen Sie daher jeden Modelltyp separat ab. Die Antwort hat die Form {success, message, data}. Für asynchrone Medienintegrationen sind die folgenden Felder in data relevant.

Anfrageschema eines einzelnen Modells abrufen

Unterstützte Felder, Aufzählungswerte und Wertebereiche können je nach Modell variieren. Rufen Sie vor einer Bild- oder Videoanfrage über den folgenden öffentlichen Endpunkt die verfügbaren Endpunkte und Anfrage-JSON-Schemas des gewählten Modells ab.
Die Antwort enthält für modality den Wert image oder video. Jeder Eintrag im Array endpoints beschreibt ein verfügbares Aufrufprotokoll. Ein Modell kann sowohl /ai/v1-Endpunkte als auch OpenAI-kompatible /v1-Endpunkte zurückgeben. OpenAI-kompatible Endpunkte unterstützen die neuesten Modelle möglicherweise noch nicht. Verwenden Sie daher bevorzugt die /ai/v1-Endpunkte. Wählen Sie für die asynchronen Aufgaben-APIs den Eintrag mit dem path /ai/v1/images/generations oder /ai/v1/videos aus und verwenden Sie dessen request.schema. Verlassen Sie sich nicht auf die Position eines Eintrags im Array endpoints. Die folgenden Befehle extrahieren das Anfrageschema für die beiden asynchronen Aufgabenendpunkte.
Der Endpunkt gibt 404 model_not_found zurück, wenn das Modell nicht existiert oder keine auffindbaren Endpunkte besitzt. Wenn die Endpunktdaten vorübergehend nicht verfügbar sind, wird 500 endpoints_unavailable zurückgegeben.

Wie erstellt man Videoaufgaben?

Videoanfragen werden immer asynchron ausgeführt und lassen sich mit Prefer: wait nicht in synchrones Warten umwandeln. Das Standardprotokoll verwendet für duration eine ganze Zahl in Sekunden:

Standardfelder für Videos

Struktur eines input_references-Eintrags:
type kann image_url, video_url oder audio_url sein. Struktur eines frame_images-Eintrags:
frame_type kann first_frame oder last_frame sein.

Objekt einer Medienaufgabe

Die dedizierten Endpunkte für Bilder und Videos geben folgende Struktur zurück:
Einträge in output für Medien:

Statusbeschreibung

Der Client kann alle 15 Sekunden abfragen, bis der Status completed, failed oder cancelled lautet. Die 15 Sekunden sind eine Empfehlung für das clientseitige Polling und keine Einschränkung des Serverprotokolls.

Wie fragt man Medienaufgaben ab?

Mediendetails abfragen

Die Detailendpunkte für Medien können einen aktualisierten Aufgabenstatus zurückgeben. Verwenden Sie zum Polling von Medien daher den jeweiligen Detailendpunkt für Bilder oder Videos.

Medienliste abfragen

Falls die Erstellungsantwort verloren geht, können Sie die Aufgaben-ID über die entsprechende Medienliste wiederfinden:
Medienlisten geben eine Momentaufnahme zum Abfragezeitpunkt zurück und aktualisieren den Aufgabenstatus nicht aktiv.

Wie verwendet man einheitliche Aufgabenendpunkte?

Die einheitlichen Aufgabenendpunkte unterstützen folgende Filter:
Details einer einheitlichen Aufgabe:
Einheitlicher output-Eintrag einer Medienaufgabe:
Fordern Sie bei einem einzelnen Artefakt direkt /ai/v1/tasks/{id}/content an. Bei Aufgaben mit mehreren Artefakten müssen Sie /ai/v1/tasks/{id}/content/{result_id} anfordern. Ohne Ergebnis-ID wird 400 result_id_required zurückgegeben.
Die einheitlichen Endpunkte für Aufgabenlisten, Details und Inhalte sind nach dem Bearer Token isoliert, mit dem die Aufgabe erstellt wurde. Andere API Keys desselben Kontos können die Aufgabe nicht lesen.

Medienergebnisse herunterladen

Videos herunterladen

Ergebnisse können ablaufen und einer Begrenzung der Downloadanzahl unterliegen. Nach Ablauf wird 410 artifact_expired zurückgegeben, bei Überschreitung der Downloadbegrenzung 429 too_many_downloads.

Webhooks verwenden

Asynchrone Bilder und Videos unterstützen Webhooks auf Aufgabenebene:
webhook_url darf höchstens 512 Zeichen lang sein und nicht auf den lokalen Rechner, ein privates Netzwerk oder eine andere eingeschränkte Adresse verweisen. Wenn Sie webhook_events_filter weglassen, sendet die Plattform completed, failed und cancelled. Bei expliziter Angabe darf das Array weder leer sein noch Duplikate enthalten und muss zusammen mit webhook_url verwendet werden. Wenn die Anfrage keine webhook_url enthält, versuchen asynchrone Bilder und Videos, die im Konto konfigurierte Standard-Callback-URL zu verwenden. Eine ungültige Standardadresse des Kontos wird ignoriert und verhindert die Erstellung der Aufgabe nicht.

Callback-Anfrage

results ist nur vorhanden, wenn das Ergebnis archiviert wurde. Für den Download ist weiterhin ein Bearer Token erforderlich.

Wiederholungsversuche und Deduplizierung

Die Plattform stellt mindestens einmal zu. Dasselbe Ereignis kann daher mehrfach eintreffen:
  • HTTP 2xx kennzeichnet einen erfolgreichen Empfang.
  • HTTP 5xx, Netzwerkfehler oder Zeitüberschreitungen lösen einen erneuten Versuch aus.
  • Bei HTTP 3xx und 4xx erfolgt kein erneuter Versuch.
  • Es erfolgen höchstens 6 Zustellversuche mit Abständen von 1, 4, 16, 64 und 256 Sekunden.
Der Empfänger sollte event_id speichern und beim erneuten Empfang desselben Ereignisses direkt 2xx zurückgeben.
Webhooks auf Aufgabenebene besitzen keinen eigenen Signaturschlüssel. Wenn Sie eine Signaturprüfung benötigen, konfigurieren Sie ein Webhook-Abonnement auf Kontoebene und behalten Sie die Abfrage der Aufgabendetails als Bestätigung des Ergebnisses bei.

Fehlerantworten und Fehlercodes

Dieser Abschnitt gilt für /ai/v1/videos/* und Videoaufgaben. Bildfehler finden Sie in der Bild-API.
  • Fehler der aktuellen Anfrage: Ein HTTP-Status außerhalb von 2xx bedeutet, dass die aktuelle Anfrage zum Erstellen, Abfragen oder Herunterladen fehlgeschlagen ist. Siehe Fehler bei HTTP-Anfragen.
  • Fehler bei der Aufgabenausführung: Die Abfrage liefert HTTP 200, die Aufgabe hat jedoch status=failed. Die Ursache steht im Feld error der Aufgabe. Siehe Fehler bei der Aufgabenausführung.
  • Lesefehler beim Ergebnis einer einzelnen Listenzeile: Die Liste liefert HTTP 200, eine Aufgabe enthält jedoch output_error. Siehe Lesefehler bei einzelnen Listenergebnissen.
Die Spalten message enthalten die englischen Antwortmeldungen. Die Beschreibungen erläutern deren Bedeutung und die erforderlichen Schritte. Für Fehler bei der Parametervalidierung sind allgemeine Meldungen angegeben; die tatsächliche Antwort kann konkrete Felder und Einschränkungen nennen. Clients sollten den Fehlertyp anhand von code bestimmen und sich nicht auf den Abgleich der vollständigen message verlassen.

HTTP-5xx-Fehler melden

Wenn eine Anfrage HTTP 5xx zurückgibt, melden Sie den Fehler und geben Sie error.tid an.

Fehler bei HTTP-Anfragen

Nach dem Erstellen einer Videoaufgabe werden Generierungsergebnisse über den Aufgabenstatus gemeldet. Die folgenden HTTP-Statuscodes gelten für direkte Fehler der aktuellen Anfrage.

Anfrageparameter und Medieneingaben

Größenbeschränkungen
  • Mediengröße: Videoaufgaben, die die Grenze überschreiten, geben media_too_large zurück, auch beim Hochladen von Referenzbildern. Die genaue Grenze steht in der Fehlermeldung oder in error.details.max_bytes.
  • Gesamte Anfragegröße: request_too_large bedeutet, dass der HTTP-Anfragetext 32 MiB überschreitet, einschließlich Text, Parametern und der Kodierung eingebetteter Medien. Wird nur eine URL übermittelt, zählt die URL selbst zum Anfragetext; die referenzierte Datei muss weiterhin die Mediengrenzen des Modells einhalten.
  • Tatsächliche Größe: error.details.actual_bytes wird nur angegeben, wenn die vollständige Größe bestätigt ist. Wird ein Medium über eine URL gelesen und beim Erreichen der Grenze abgebrochen, kann dieses Feld fehlen.
Unterstützte Formate Die unterstützten Formate hängen vom gewählten Modell ab. Prüfen Sie zuerst error.details.allowed_mime_types oder die Formatliste in der Fehlermeldung. Falls keine Liste angegeben ist, lesen Sie das Schema des Modells. Platzhalter in Meldungen
  • {media_kind}: Der tatsächliche Medientyp. Wenn der Typ bestätigt ist, verwenden auch die Meldungen für invalid_media_data und media_url_unreachable den Wert image oder video.
  • {max_bytes}: Die Größenbeschränkung in Bytes.
  • {allowed_formats}: Die Liste zulässiger Formate. Meldungen zu Formatfehlern können Use one of: {allowed_formats}. anhängen.

Generierungsanfragen und zurückgegebene Ergebnisse

Konto und Berechtigungen

Dienstverfügbarkeit und Ratenbegrenzung

provider_unavailable weist auf einen eindeutig festgestellten Fehler des Modellanbieters hin. Ein allgemeiner Status 429 oder 4xx allein bestätigt kein Problem mit dem Kontingent, der Inhaltsmoderation oder den Parametern.

Aufgabenabfragen und Ergebnisdownloads

Fehler bei der Aufgabenausführung

Nach erfolgreicher Erstellung einer Aufgabe werden Generierungsfehler durch status=failed und das Feld error der Aufgabe gemeldet. Eine erfolgreiche Abfrage liefert weiterhin HTTP 200.
Fehler bei Medieneingaben können auch in fehlgeschlagenen Aufgaben erscheinen. Die Codes haben dieselbe Bedeutung wie in der obigen Tabelle zu Medieneingaben; erfolgreiche Abfragen liefern weiterhin HTTP 200. Bei Fehlern zur Mediengröße endet message mit submit a new task. und fordert dazu auf, das Medium vor dem Einreichen einer neuen Aufgabe zu verkleinern. provider_empty_output bestätigt, dass kein nutzbares Videoergebnis vorliegt. result_delivery_failed bedeutet, dass ein generiertes Ergebnis vorhanden ist, dessen Speicherung oder Bereitstellung fehlgeschlagen ist. Kontaktieren Sie in diesem Fall zuerst den Support, um das vorhandene Ergebnis prüfen zu lassen.

Lesefehler bei einzelnen Listenergebnissen

Einzelne Zeilen in Bild- und Videoaufgabenlisten können output_error enthalten:
Dieses Feld zeigt an, dass die Ausgabe dieser Zeile bei der aktuellen Anfrage nicht gelesen werden konnte. Die Liste liefert weiterhin HTTP 200 und für diese Zeile output=[]. Die ursprünglichen Werte von id, status und error sowie die Paginierung bleiben unverändert; andere lesbare Aufgaben sind nicht betroffen. Prüfen Sie auch bei status=completed das Feld output_error, bevor Sie beurteilen, ob das Ergebnis gelesen werden kann. Kontaktieren Sie den Support mit output_error.tid. Falls dieses Feld keine tid enthält, geben Sie die Anfrage-ID aus den aktuellen Antwortheadern an. Dieser Fehler ändert weder den Aufgabenstatus noch die Kosten und löst keinen Webhook aus. Bild- und Videolisten behalten einen bereits ermittelten Wert für expires_at bei. Zeilen mit nicht lesbarer Ausgabe in der einheitlichen Liste /ai/v1/tasks können expires_at=null zurückgeben; für die Ergebnisse gilt weiterhin die ursprüngliche Aufbewahrungsdauer. Diese Behandlung gilt nur, wenn die Ausgabe einer einzelnen Zeile nicht gelesen werden kann und keine Rückfallmöglichkeit verfügbar ist. Schlägt die Abfrage eines gesamten Stapels in der einheitlichen Aufgaben-API fehl, wird weiterhin ein HTTP-Fehler zurückgegeben; derselbe Fehlertyp beim Lesen von Aufgabendetails liefert weiterhin HTTP 500. Verwandte Dokumentation: Bild-API · Video-API · Asynchrone Aufgaben

Vollständiges Beispiel

Diese Beispiele erstellen eine Aufgabe, fragen sie ab und laden das MP4-Ergebnis herunter.