Schnellstart mit den offiziellen SDKs
Die offiziellen SDKs bündeln den gesamten Ablauf (Erstellen → Abfragen → Herunterladen) mit automatischen Idempotenzschlüsseln und typisierten Fehlern. Das Node-SDK hat keine Abhängigkeiten, das Python-SDK hängt nur von httpx ab. Sie werden vorerst als GitHub-Repositorys bereitgestellt; Veröffentlichungen auf npm und PyPI werden gesondert angekündigt.
Node
npm install github:openaiav/sdk-node # npm release to be announced
import { OpenAiav } from '@openaiav/sdk'
const client = new OpenAiav({ apiKey: process.env.OPENAIAV_API_KEY })
const task = await client.generations.createAndWait({
model: 'seedance-2.5-oa', prompt: 'She walks into the sunlight.',
resolution: '480p', aspectRatio: 'adaptive', durationSeconds: 4,
generateAudio: false
})
await client.generations.downloadToFile(task.id, './out.mp4')Python
pip install git+https://github.com/openaiav/sdk-python # PyPI release to be announced
from openaiav import OpenAiav
client = OpenAiav(os.environ["OPENAIAV_API_KEY"])
task = client.generations.create_and_wait({
"model": "seedance-2.5-oa", "prompt": "She walks into the sunlight.",
"resolution": "480p", "aspectRatio": "adaptive", "durationSeconds": 4,
"generateAudio": False,
})
client.generations.download_to_file(task["id"], "./out.mp4")In vier Schritten integrieren
- Rufen Sie mit der serverseitigen Umgebungsvariable
OPENAIAV_API_KEYhttps://api.openaiav.com/v1/models auf und lesen Sie die aktuellen Modellschlüssel, Preise und reference_modes. - Senden Sie prompt, referenceMode und referenceImages per POST an /v1/generations. Referenzbilder sind öffentliche HTTPS-URLs und müssen nicht vorab registriert werden. Erfolg ist HTTP 201.
- Speichern Sie die zurückgegebene id und fragen Sie nach poll_after_ms dieselbe GET /v1/generations/{id} ab. Bei processing, result_pending und submission_unknown warten Sie weiter; erstellen Sie keine neue Aufgabe.
- Sobald der Status succeeded ist, laden Sie mit GET /v1/generations/{id}/content herunter. Eine vollständige Antwort ist HTTP 200, ein einzelner Byte-Bereich 206.
Authentifizierung und Idempotenz
export OPENAIAV_API_KEY='oav_...'
# One Idempotency-Key per create intent: every run of this script makes a new one.
# Reuse it only when retrying this same create. No uuidgen? IDEMPOTENCY_KEY=$(python3 -c 'import uuid;print(uuid.uuid4())')
IDEMPOTENCY_KEY=$(uuidgen | tr 'A-Z' 'a-z')
echo "Idempotency-Key: $IDEMPOTENCY_KEY (reuse this value only when retrying this same create)"Senden Sie bei jeder Anfrage Authorization: Bearer oav_... und bewahren Sie den Schlüssel serverseitig auf. Das Erstellen erfordert generation:create, Abfragen und Download erfordern generation:read. Generieren Sie für jede Erstellungsabsicht einen neuen Idempotency-Key (eine UUID), sodass jeder Lauf eines Beispiels einen neuen Schlüssel erhält. Verwenden Sie ihn nur erneut, wenn Sie genau diese Erstellung nach einem unklaren Netzwerkergebnis wiederholen; kombinieren Sie einen Schlüssel nie mit unterschiedlichen Inhalten.
Anfrage-Header
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| Authorization | string | Pflicht | Jede /v1-Anfrage verwendet Bearer oav_...; bewahren Sie den Schlüssel auf Ihrem Server auf. |
| Idempotency-Key | string | Pflicht beim Erstellen von Aufgaben | Generieren Sie für jede Erstellungsabsicht einen neuen Wert (zum Beispiel eine UUID) und verwenden Sie ihn nur erneut, wenn Sie genau diese Erstellung wiederholen; mit demselben Wert und Inhalt wird nichts doppelt erstellt oder berechnet. |
| Content-Type | string | Pflicht bei POST | Das Erstellen von Generierungen verwendet application/json. |
Endpunkte
| Methode | Pfad | Erfolg | Berechtigung | Beschreibung |
|---|---|---|---|---|
| GET | /v1/models | 200 | Jeder gültige API-Schlüssel | Liest die aktuell verfügbaren Modelle, Preise, Auflösungen, Dauern und reference_modes. Prüfen Sie die Funktionen vor dem Absenden anhand des Katalogs. |
| POST | /v1/generation-quotes | 201 | generation:create | Zeigt den aktuellen Preis ohne Preisbindung an. Beim Erstellen wird neu berechnet und genau reserved_usd aus der Erstellungsantwort als fester Betrag belastet; fehlgeschlagene Aufgaben werden vollständig erstattet. quoteId bleibt zulässig, expires_at empfiehlt nur eine Aktualisierung. |
| POST | /v1/generations | 201 | generation:create | Erstellt eine asynchrone Aufgabe; senden Sie Referenzbilder und referenceMode in derselben JSON-Anfrage. |
| GET | /v1/generations/{id} | 200 | generation:read | Fragt dieselbe Aufgabe gemäß poll_after_ms ab, bis sie einen Endzustand erreicht. |
| GET | /v1/generations/{id}/content | 200 / 206 | generation:read | Lädt die Ausgabe nach erfolgreichem Abschluss herunter; eine Anfrage mit einem einzelnen Byte-Bereich liefert 206. |
Schritt 1: Modellfunktionen abrufen
Legen Sie Modellfunktionen nicht fest im Code fest. Senden Sie nur Modi, die in reference_modes aufgeführt sind, und blenden Sie inkompatible Kombinationen vor dem Absenden aus oder sperren Sie sie. Das minimale Beispiel zeigt eine Anfrage mit 4 Sekunden, 480p und ohne Audio mit seedance-2.5-oa.
curl --fail-with-body 'https://api.openaiav.com/v1/models' \
--header "Authorization: Bearer $OPENAIAV_API_KEY"Minimales öffentliches Videobeispiel
Das Beispiel enthält den gesamten Ablauf: Erstellen → dieselbe Aufgabe abfragen → Herunterladen. first_frame verwendet ein Referenzbild und adaptive; generateAudio=false verzichtet auf Audio. Die Erfolgscodes sind 201, 200 und 200/206; prüfen Sie bei Fehlern zuerst HTTP und dann error.code.
# Keep OPENAIAV_API_KEY in an environment variable; do not paste secrets into shell history.
# One Idempotency-Key per create intent: every run of this script makes a new one.
# Reuse it only when retrying this same create. No uuidgen? IDEMPOTENCY_KEY=$(python3 -c 'import uuid;print(uuid.uuid4())')
IDEMPOTENCY_KEY=$(uuidgen | tr 'A-Z' 'a-z')
echo "Idempotency-Key: $IDEMPOTENCY_KEY (reuse this value only when retrying this same create)"
# 1. Create — success: HTTP 201. On failure, the response body contains error.code.
# Lost response (timeout or dropped connection)? Re-run this same command in this shell:
# the unchanged $IDEMPOTENCY_KEY returns the original task instead of creating a second one.
curl --fail-with-body --request POST 'https://api.openaiav.com/v1/generations' \
--header "Authorization: Bearer $OPENAIAV_API_KEY" \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "seedance-2.5-oa",
"prompt": "A young woman finishes a letter and walks from a stone cottage into the morning sunlight",
"resolution": "480p",
"aspectRatio": "adaptive",
"durationSeconds": 4,
"referenceMode": "first_frame",
"referenceImages": [
"https://developers.openaiav.com/samples/seedance-letter-reference.webp"
],
"generateAudio": false,
"outputFormat": "mp4"
}'
# 2. Save the returned id as TASK_ID. Poll the same id — success: HTTP 200.
curl --fail-with-body 'https://api.openaiav.com/v1/generations/TASK_ID' \
--header "Authorization: Bearer $OPENAIAV_API_KEY"
# Repeat step 2 after poll_after_ms until status is succeeded or failed.
# Never recreate a task whose status is submission_unknown.
# 3. After succeeded, download — success: HTTP 200 (or 206 with Range).
curl --fail-with-body --location 'https://api.openaiav.com/v1/generations/TASK_ID/content' \
--header "Authorization: Bearer $OPENAIAV_API_KEY" \
--output 'result.mp4'Anfrageparameter
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| model | string | Pflicht | Verwenden Sie den model-Wert aus GET /v1/models; das minimale Videobeispiel nutzt seedance-2.5-oa. |
| prompt | string | Pflicht | 1–4000 Zeichen. Bei der Omni-Referenz können Sie Bilder in der Reihenfolge des Arrays als @Image1, @Image2 usw. ansprechen. |
| resolution | string | Optional | Muss in den resolutions des gewählten Modells enthalten sein; das minimale Videobeispiel nutzt 480p. |
| aspectRatio | string | Optional | Muss in den aspect_ratios des gewählten Modells enthalten sein; verwenden Sie adaptive, wenn das Modell es für Startbild-Anfragen verlangt. Bei Bildmodellen mit image_size_options senden Sie resolution und aspectRatio als Paar aus dieser Liste: Nicht jedes Seitenverhältnis gibt es in jeder Auflösung. |
| durationSeconds | integer | Optional | Die Videodauer muss mit durationSeconds als ganze Zahl im Katalogbereich duration_seconds angegeben werden; bei Auslassung gilt die Mindestdauer des Modells. Das Mindestbeispiel verwendet 4 Sekunden. |
| referenceMode | first_frame | omni_reference | Pflicht bei Referenzbildern für Videos | Nur mit Seedance-Videomodellen verwenden, die den Modus in reference_modes ausdrücklich aufführen. Pro Anfrage ist nur ein Modus möglich. |
| referenceImages | string[] | Zusammen mit referenceMode angeben | Öffentliche HTTPS-Bild-URLs. first_frame verlangt genau ein Bild; das Limit für omni_reference steht in reference_images_max. |
| inputImages | string[] | Optional | Eingabebilder (Referenzbilder) für Bild-zu-Bild, nur für Bildmodelle. Jeder Eintrag ist eine öffentliche HTTPS-Bild-URL oder eine Data-URL der Form data:image/png;base64,…, data:image/jpeg;base64,… oder data:image/webp;base64,…. Die Grenzen jedes Modells finden Sie in GET /v1/models: input_images_max, input_image_max_bytes (pro Bild, per URL oder Data-URL) und input_image_mime_types. Referenzbilder können den Betrag erhöhen. Kombinieren Sie sie nicht mit einem Video-Referenzmodus. |
| generateAudio | boolean | Optional | Standardmäßig true bei Videomodellen mit Audiounterstützung. Das günstigste Beispiel sendet ausdrücklich false; der aktuelle Katalog weist keinen separaten Audioaufschlag aus, und für die Abrechnung ist immer GET /v1/models maßgeblich. |
| outputFormat | mp4 | mov | Optional | Nur Werte aus output_formats im Katalog wählen; das minimale Beispiel nutzt mp4. |
Referenzmodi
first_frame
first_frame: Das Referenzbild wird zum ersten Bild und bestimmt den Bildaufbau. Senden Sie genau einen Eintrag in referenceImages; aspectRatio stammt aus den aspect_ratios des Modells und ist auf adaptive festgelegt, wenn der Katalog es anbietet (die Ausgabe folgt dem Referenzbild).
first_last_frame: Senden Sie genau 2 referenceImages. Die Reihenfolge im Array ist Startbild, dann Endbild, und das Modell ergänzt den Übergang. Die beiden Bilder müssen nicht gleich groß sein. Bildmodi lassen sich nicht mit omni_reference kombinieren.
{
"model": "seedance-2.5-oa",
"prompt": "A young woman finishes a letter and walks from a stone cottage into the morning sunlight",
"resolution": "480p",
"aspectRatio": "adaptive",
"durationSeconds": 4,
"referenceMode": "first_frame",
"referenceImages": [
"https://developers.openaiav.com/samples/seedance-letter-reference.webp"
],
"generateAudio": false,
"outputFormat": "mp4"
}omni_reference
omni_reference: Referenzmedien halten Motiv, Stil und Szene konsistent, ohne zum ersten Bild zu werden. Neben referenceImages akzeptieren geeignete Modelle auch referenceVideos und referenceAudios; die Limits je Typ stehen in der Tabelle unten, und jeder Typ, den der Katalog nicht deklariert, führt beim Absenden zu 400. Prompts sprechen Elemente in ihrer Reihenfolge innerhalb des Typs an: @Image1, @Video1, @Audio1.
{
"model": "seedance-2.5-oa",
"prompt": "Keep the identity and outfit from @Image1; a young woman walks from a stone cottage into the morning sunlight",
"resolution": "480p",
"aspectRatio": "16:9",
"durationSeconds": 4,
"referenceMode": "omni_reference",
"referenceImages": [
"https://developers.openaiav.com/samples/seedance-letter-reference.webp"
],
"generateAudio": false,
"outputFormat": "mp4"
}Aktuelle Kompatibilität
Eine Integration für alle Videomodelle: derselbe Endpunkt, dieselben Felder. Um das Modell zu wechseln, ändern Sie nur model. Alle Unterschiede deklariert der Katalog, und die Tabelle unten ist dieser Katalog: pro Modell, welche Referenzmodi es unterstützt und wie viele Medien jedes Typs es akzeptiert. Alles, was der Katalog nicht deklariert, wird beim Absenden ausdrücklich abgelehnt und nie stillschweigend ignoriert.
Details zum Startbild und Weitergabe des Endbilds
Details zum Startbild: first_frame und omni_reference schließen sich aus; eine Anfrage wählt genau einen Modus. Bei der Omni-Referenz können Sie ein Referenzbild per Prompt in Richtung Eröffnungsbild lenken; wenn es genau dem Startbild entsprechen muss, senden Sie dieses Bild im Modus first_frame. Bei Seedance 2.5 ist das Seitenverhältnis von Startbild-Aufgaben auf adaptive festgelegt (die Ausgabe folgt dem Startbild). Endbild weitergeben: Übergeben Sie beim Erstellen returnLastFrame: true, dann liefert eine erfolgreiche Aufgabe zusätzlich last_frame_url (ein PNG ohne Wasserzeichen in Videogröße, 24 Stunden aufbewahrt). Übergeben Sie diese URL direkt als referenceImages für first_frame der nächsten Anfrage, um mehrere Einstellungen ohne Vorabregistrierung aneinanderzureihen.
Preise für Referenzvideos
- Referenzvideos mit messbarer Dauer werden zum Festpreis abgerechnet, den Sie vorab in einer Vorschau sehen können. Ist die Dauer nicht messbar, wird die Vorschau ohne Belastung abgelehnt.
- Rufen Sie
POST /v1/generation-quotesfür eine Preisvorschau auf. URL-Videos werden beim Erstellen erneut gemessen und bepreist;reserved_usdder Erstellungsantwort ist der tatsächliche Betrag.quoteIdbindet den Preis nicht,expires_atempfiehlt nur die Aktualisierung. - Der Modellkatalog legt Dauer pro Video und insgesamt, Anzahl und Mindestabrechnungszeit fest. Jedes Referenzvideo muss bei der Seedance-2.0-Reihe 2–15 Sekunden und bei anderen unterstützten Modellen 2–30 Sekunden lang sein. Gemessene Eingaben außerhalb der Grenzen liefern ohne Belastung 422
REFERENCE_DURATION_OUT_OF_RANGE. - Verwenden Sie einen öffentlichen HTTPS-Direktlink zu MP4/MOV. Bekannte Dateien über 200 MiB liefern
REFERENCE_VIDEO_TOO_LARGE; auch ohne Größenangabe ist ein Angebot möglich. Private URLs liefernREFERENCE_URL_NOT_PUBLIC, ausgelastete Prüfungen 429REFERENCE_PROBE_BUSY. Für Uploads in der Konsole gilt 32 MiB. - Bei jeder Aufgabe wird beim Erstellen ihr Festpreis
reserved_usdberechnet; bei Erfolg bleibt es bei genau diesem Betrag, bei Fehlschlag wird er vollständig erstattet.price_usdeiner Vorschau entspricht dem, was das Erstellen in diesem Moment kosten würde; geben Sie eine Ausgabedauer statt -1 an. - Öffentliche Video-URLs werden für die Vorschau und beim Erstellen geprüft und danach ohne Speicherung oder Asset-Registrierung direkt übergeben. Halten Sie den Inhalt stabil. Uploads nutzen einen separaten Weg; Beschränkungen für echte Gesichter gelten weiter.
Preise für Bildmodelle
- Bildmodelle werden pro Bild nach
resolutionundaspectRatioabgerechnet (image_pricing.rates). Bei den Modellengpt-image-*undnano-banana-*gelten die angezeigten Preise für einen kurzen Prompt ohne Referenzbilder. - Bei diesen Modellen erhöhen Referenzbilder und längere Prompts den Betrag. Rufen Sie vor dem Erstellen einer Aufgabe
POST /v1/generation-quotesmit demselben Body auf:price_usdist der Betrag für diese Anfrage zu aktuellen Preisen. Fehlgeschlagene Aufgaben werden vollständig erstattet.
Polling und Download
Nur succeeded und failed sind Endzustände. Bei submission_unknown wird die Annahme noch bestätigt, result_pending wird abgeschlossen: Behalten Sie die ursprüngliche Aufgaben-ID, fragen Sie weiter ab und wiederholen Sie die Erstellung nie. Verwenden Sie nach Erfolg den authentifizierten Pfad /content statt Adressen außerhalb von Open AIav. Ergebnisse werden 24 Stunden aufbewahrt (die Detailantwort enthält output_expires_at; abgelaufene Downloads liefern 410 OUTPUT_EXPIRED, speichern Sie also rechtzeitig).
| Status | Endzustand | Maßnahme |
|---|---|---|
| processing | Nein | Angenommen; fragen Sie nach poll_after_ms erneut ab. |
| result_pending | Nein | Das Ergebnis wird abgeschlossen. Behalten Sie die Aufgaben-ID und fragen Sie dieselbe Aufgabe weiter ab; erstellen Sie sie nicht neu. |
| submission_unknown | Nein | Die Annahme wird noch bestätigt; wiederholen Sie die Erstellung nicht. Behalten Sie die ursprüngliche Aufgaben-ID und fragen Sie sie weiter ab. |
| succeeded | Ja | Erfolgreich; laden Sie die Ausgabe über /content herunter. |
| failed | Ja | Endgültig fehlgeschlagen, der Betrag wurde vollständig erstattet; prüfen Sie error_code. |
Migration eingestellter Endpunkte
/v1/assets, /v1/assets/content, /v1/assets/{id}, /v1/asset-groups und /v1/asset-groups/{id} sind eingestellt; ein gültiger Schlüssel mit dem entsprechenden alten Scope erhält HTTP 410 / ENDPOINT_RETIRED. Neue Integrationen dürfen diese Pfade nicht aufrufen; geben Sie referenceMode und referenceImages in derselben Generierungsanfrage an.Fehlercodes
Vollständige Übersicht: HTTP-Status, Code, Bedeutung, empfohlene Maßnahme und SDK-Fehlerklasse. Diese Tabelle nutzt dieselbe Datenquelle wie die Fehlerzuordnung der SDKs; unbekannte neue Codes behandelt das SDK nach HTTP-Status.
| HTTP | Code | Bedeutung | Empfohlene Maßnahme | SDK |
|---|---|---|---|---|
| 401 | UNAUTHENTICATED | API-Schlüssel fehlt oder wird nicht erkannt. | Senden Sie Authorization: Bearer oav_…; bewahren Sie den Schlüssel serverseitig auf. | AuthenticationError |
| 401 | INVALID_API_KEY | Der API-Schlüssel ist ungültig oder widerrufen. | Prüfen Sie den Schlüssel in der Konsole; rotieren Sie ihn bei Bedarf, um einen neuen zu erhalten. | AuthenticationError |
| 403 | INSUFFICIENT_SCOPE | Dem Schlüssel fehlt die für diesen Vorgang nötige Berechtigung (Scope). | Das Erstellen erfordert generation:create; Abfragen und Download erfordern generation:read. | PermissionError |
| 429 | RATE_LIMITED | Die Anfragen haben das Ratenlimit des Schlüssels überschritten. | Warten Sie gemäß Retry-After / retryAfterSeconds und versuchen Sie es erneut; das SDK erledigt das automatisch. | RateLimitError |
| 400 | IDEMPOTENCY_KEY_REQUIRED | Das Erstellen erfordert einen Idempotency-Key-Header. | Erstellen Sie pro neuer Anfrage einen eindeutigen Schlüssel und verwenden Sie ihn bei Wiederholungen erneut. Das SDK erstellt ihn automatisch. | InvalidRequestError |
| 409 | IDEMPOTENCY_KEY_CONFLICT | Derselbe Idempotenzschlüssel wurde mit einem anderen Inhalt verwendet. | Verwenden Sie für andere Parameter einen neuen Schlüssel; halten Sie Schlüssel und Inhalt bei Wiederholungen identisch. | InvalidRequestError |
| 400 | MODEL_NOT_FOUND | Unbekannte Modell-ID. | Verwenden Sie IDs aus GET /v1/models (z. B. seedance-2.5-oa). | InvalidRequestError |
| 503 | MODEL_NOT_AVAILABLE | Das Modell kann derzeit nicht aufgerufen werden. | Es wurde nichts berechnet. Prüfen Sie den status des Modells in GET /v1/models und versuchen Sie es später erneut. | ServerError |
| 400 | INVALID_PROMPT | Der Prompt ist leer oder zu lang. | Prompts müssen 1–4000 Zeichen lang sein. | InvalidRequestError |
| 400 | INVALID_DURATION | durationSeconds liegt außerhalb des Modellbereichs. | Geben Sie die Videodauer als ganzzahligen Wert durationSeconds im Katalogbereich an. | InvalidRequestError |
| 400 | INVALID_RESOLUTION | Das Modell unterstützt diese Auflösung nicht. | Wählen Sie einen Wert aus den resolutions im Katalog. | InvalidRequestError |
| 400 | INVALID_ASPECT_RATIO | Das Modell unterstützt dieses Seitenverhältnis nicht. | Wählen Sie aus aspect_ratios im Katalog; bei first_frame ist oft adaptive festgelegt. | InvalidRequestError |
| 400 | INVALID_REFERENCE_IMAGES | referenceImages muss ein Array öffentlicher HTTPS-URLs sein. | Geben Sie https://-Bild-URLs an, die während der gesamten Aufgabe lesbar bleiben. | InvalidRequestError |
| 400 | INVALID_REFERENCE_IMAGE | Ein Eintrag bei den Referenzbildern ist keine gültige URL. | Die Meldung enthält den Index (referenceImages[i]); korrigieren Sie diesen Eintrag. | InvalidRequestError |
| 400 | REFERENCE_IMAGE_URL_NOT_HTTPS | Eine Referenzbild-URL ist keine öffentliche HTTPS-Adresse. | http-, private Netzwerk- und data-URLs werden abgelehnt; stellen Sie das Bild öffentlich per HTTPS bereit. | InvalidRequestError |
| 400 | REFERENCE_MODE_REQUIRES_IMAGES | referenceMode wurde ohne Referenzbilder angegeben. | Geben Sie referenceMode und referenceImages zusammen an. | InvalidRequestError |
| 400 | REFERENCE_MODE_NOT_SUPPORTED | Das Modell unterstützt den angefragten Referenzmodus nicht. | Wählen Sie first_frame / omni_reference gemäß reference_modes im Katalog. | InvalidRequestError |
| 400 | FIRST_FRAME_REQUIRES_ONE_IMAGE | first_frame akzeptiert genau ein Referenzbild. | Senden Sie genau ein Bild; für mehrere Bilder verwenden Sie omni_reference. | InvalidRequestError |
| 400 | TOO_MANY_REFERENCES | Die Anzahl der Referenzbilder überschreitet das Limit im Katalog. | Siehe reference_images_max im Katalog. | InvalidRequestError |
| 400 | INVALID_INPUT_IMAGES | inputImages muss ein Array sein. | Jeder Eintrag ist eine HTTPS-URL oder data:image/*-base64. | InvalidRequestError |
| 400 | INVALID_INPUT_IMAGE | Ein Eintrag bei den Eingabebildern ist fehlerhaft. | Jeder Eintrag muss eine HTTPS-URL oder data:image/*-base64 sein; die Meldung enthält den Index. | InvalidRequestError |
| 400 | INPUT_IMAGE_URL_NOT_HTTPS | Eine Eingabebild-URL verwendet kein HTTPS. | Verwenden Sie eine https://-URL oder eine Data-URL wie data:image/png;base64,…. | InvalidRequestError |
| 400 | INPUT_IMAGE_TOO_LARGE | Ein eingebettetes Bild ist größer als 10 MiB. | Komprimieren Sie es auf unter 10 MiB. Modelle mit input_image_max_bytes wenden dieselbe Grenze auf HTTPS-URLs an: Ein zu großes Bild lässt die Aufgabe mit REFERENCE_INPUT_INVALID fehlschlagen, der Betrag wird vollständig erstattet. | InvalidRequestError |
| 400 | IMAGE_INPUT_NOT_SUPPORTED | Das Modell akzeptiert keine Bildeingabe. | Nur Bildmodelle mit input_images_max>0 akzeptieren inputImages. | InvalidRequestError |
| 400 | TOO_MANY_INPUT_IMAGES | Zu viele Eingabebilder. | Siehe input_images_max im Katalog. | InvalidRequestError |
| 422 | REFERENCE_DURATION_OUT_OF_RANGE | Die gemessene Dauer des Referenzvideos überschreitet die Modellgrenzen. | Prüfen Sie im Katalog die Grenzen je Video, für die Gesamtdauer und die Anzahl und zeigen Sie den Preis erneut an; es wurde nichts berechnet. | InvalidRequestError |
| 422 | REFERENCE_DURATION_UNVERIFIED | Die Dauer des Referenzvideos konnte nicht gemessen werden. | Verwenden Sie eine normale MP4/MOV-Datei, möglichst mit faststart, von einem Host mit Range-Unterstützung. | InvalidRequestError |
| 422 | REFERENCE_URL_NOT_PUBLIC | Die URL des Referenzvideos ist keine öffentliche HTTPS-Adresse. | Verwenden Sie eine öffentliche HTTPS-Datei-URL auf Port 443 ohne Anmeldung. | InvalidRequestError |
| 422 | CONTENT_TYPE_MISMATCH | Die Referenzvideo-URL liefert nicht das erforderliche Videoformat. | Stellen Sie sicher, dass die URL MP4/MOV-Bytes statt einer Webseite oder eines Bildes liefert. | InvalidRequestError |
| 422 | REFERENCE_VIDEO_TOO_LARGE | Das Referenzvideo überschreitet die Dateigrößenbegrenzung. | Öffentliche URLs sind auf 200 MiB begrenzt, Konsolen-Uploads auf 32 MiB. Komprimieren oder kürzen Sie die Datei und zeigen Sie den Preis erneut an. | InvalidRequestError |
| 429 | REFERENCE_PROBE_BUSY | Zu viele Referenzvideos werden gleichzeitig gemessen. | Versuchen Sie es nach retry_after_seconds erneut; es wurde nichts berechnet. | RateLimitError |
| 400 | INSUFFICIENT_BALANCE | Das Guthaben reicht für diese Aufgabe nicht aus. | Laden Sie Ihre Wallet auf oder lösen Sie einen Code ein und versuchen Sie es dann erneut. | InvalidRequestError |
| 400 | LEGACY_ASSET_REFERENCE_RETIRED | Verweise per Asset-ID sind eingestellt. | Senden Sie referenceMode + referenceImages (öffentliches HTTPS) in derselben Anfrage. | InvalidRequestError |
| 404 | NOT_FOUND | Die Aufgabe existiert nicht oder gehört zu einem anderen Konto. | Prüfen Sie, ob Aufgaben-ID und Schlüssel zum selben Konto gehören. | InvalidRequestError |
| 409 | OUTPUT_NOT_READY | Die Ausgabe ist noch nicht bereit. | Fragen Sie die Aufgabe gemäß poll_after_ms weiter ab, bis ein Endzustand erreicht ist. | InvalidRequestError |
| 410 | OUTPUT_EXPIRED | Der Download-Zeitraum (24 Std. nach Erfolg) ist abgelaufen. | Speichern Sie Ausgaben rechtzeitig; nach Ablauf müssen Sie neu generieren. Für Countdowns können Sie output_expires_at verwenden. | OutputExpiredError |
Fehlercodes fehlgeschlagener Bildaufgaben
Endet eine Bildaufgabe mit status=failed, lesen Sie error_code und gleichen Sie den Code mit der Tabelle ab. Fehlgeschlagene Aufgaben werden vollständig erstattet. Die SDKs lösen GenerationFailedError mit demselben Code aus.
| Code | Bedeutung |
|---|---|
| CONTENT_POLICY_REJECTED | Der Inhalt hat die Prüfung nicht bestanden. Überarbeiten Sie ihn, bevor Sie erneut senden. |
| REFERENCE_INPUT_INVALID | Prüfen Sie Format und Größe der Referenz sowie die Anforderungen des Modells. |
| REFERENCE_SOURCE_UNREACHABLE | Die Referenz-URL kann nicht gelesen werden. Prüfen Sie ihre Gültigkeit oder laden Sie die Datei erneut hoch. |
| REFERENCE_SERVICE_UNAVAILABLE | Die Verarbeitung der Referenzen ist nicht verfügbar. Wenden Sie sich mit der Aufgaben-ID an den Support; ein Austausch des Bildes ist nicht nötig. |
| GENERATION_INPUT_INVALID | Die Generierungsparameter erfüllen die Anforderungen dieses Modells nicht. |
| GENERATION_RATE_LIMITED | Für den Generierungsdienst gilt vorübergehend ein Ratenlimit. Bitte versuchen Sie es später erneut. |
| GENERATION_REJECTED | Die Generierungsanfrage wurde abgelehnt. Wenden Sie sich mit der Aufgaben-ID an den Support, um den Grund zu klären. |
| GENERATION_SERVICE_UNAVAILABLE | Der Generierungsdienst ist vorübergehend nicht verfügbar. |
| GENERATION_FAILED | Die Aufgabe konnte nicht abgeschlossen werden. Wenden Sie sich mit der Aufgaben-ID an den Support. |
Codes, die nur in der Konsole zurückgegeben werden
| HTTP | Code | Bedeutung | Empfohlene Maßnahme |
|---|---|---|---|
| 400 | REFERENCE_UPLOAD_NOT_FOUND | Der Upload-Verweis fehlt, ist abgelaufen oder gehört zu einem anderen Konto. | Laden Sie die Datei im Playground erneut hoch und führen Sie die Aufgabe erneut aus (Uploads sind nur kurz gültig). |
| 429 | UPLOAD_QUOTA_EXCEEDED | Zu viele ungenutzte Uploads. | Führen Sie eine Aufgabe aus, die Ihre Uploads verwendet, oder warten Sie, bis sie ablaufen. |
| 429 | WEBHOOK_ENDPOINT_LIMIT | Maximale Anzahl an Webhook-Endpunkten erreicht. | Löschen oder deaktivieren Sie einen nicht genutzten Endpunkt. |
| 400 | INVALID_WEBHOOK_URL | Die Callback-URL ist keine öffentlich erreichbare HTTPS-Adresse. | Verwenden Sie eine öffentliche HTTPS-Adresse; private Hosts und Loopback-Adressen werden abgelehnt. |