language außerdem die Sprache der Fehlermeldung auswählen.
Schnellstart
Füge beim Einreichen einer Aufgabewebhook auf der obersten Ebene des Anfragekörpers hinzu. Um Fehlermeldungen zu übersetzen, füge außerdem language hinzu:
deine URL + /callback.
Andere asynchrone Aufgaben-Endpunkte (Video, Audio usw.) verwenden
webhook auf dieselbe Weise. language gilt derzeit für POST /v1/videos/generations und POST /v1/images/generations; beide Felder gehören auf die oberste Ebene des Anfragekörpers.Sprache der Fehlermeldung auswählen
language ist ein optionaler String-Parameter, der nur error.message in Fehler-Rückrufen beeinflusst. Aufgaben-ID, Status, Fortschritt, Kosten und Ergebnis-URLs ändern sich nicht mit der Sprache. Wird der Parameter weggelassen, wird die ursprüngliche Fehlermeldung des Upstream-Anbieters oder der Plattform zurückgegeben.
- Bei den Werten wird nicht zwischen Groß- und Kleinschreibung unterschieden; führende und nachfolgende Leerzeichen werden automatisch entfernt.
"DE"und" de "werden beispielsweise beide alsdebehandelt. - Verwende die zweistelligen Codes aus der Tabelle. Regionale Tags wie
zh-CN,en-USundpt-BRwerden nicht erkannt. - Ein nicht unterstützter Wert führt nicht dazu, dass die Aufgabeneinreichung fehlschlägt; der Rückruf enthält die ursprüngliche Fehlermeldung.
- Ist die ursprüngliche Meldung bereits in der Zielsprache, wird sie unverändert und ohne erneute Übersetzung zurückgegeben.
- Schlägt die Übersetzung fehl, wird die ursprüngliche Meldung zurückgegeben, ohne den Rückruf zu verzögern oder zu verwerfen.
Verwende beim Polling den
language-Query-Parameter des Aufgabenstatus-Endpunkts, um dieselbe Sprache für Fehlermeldungen auszuwählen. Ein Webhook hat keinen Query-String, daher muss language beim Einreichen der Aufgabe angegeben werden.URL-Regeln
Die von dir angegebenewebhook ist die Basis-URL, an die wir automatisch /callback anhängen:
Dein Server benötigt also einen Endpunkt, der
POST .../callback akzeptiert.
Was du erhältst
Der gesendete Inhalt ist exakt derselbe wie die Antwort des Endpunkts „Aufgabenstatus abrufen” – du kannst ihn mit derselben Parsing-Logik verarbeiten.Bei Videoaufgaben liegt das Ergebnis in
result.videos, bei Audio in result.audios.Im Fehlerbeispiel oben wird
"language": "de" verwendet. Der Sprachparameter ändert nur error.message; alle anderen Felder bleiben gleich.Wiederholungen und Deduplizierung (wichtig)
- Wiederholungen: Wenn dein Server nicht innerhalb von etwa 10 Sekunden
2xxzurückgibt oder5xxzurückgibt, wiederholen wir automatisch, bis zu 3 Mal, in Abständen von etwa 10 s, 30 s und 60 s. Schlagen alle 3 fehl, geben wir auf (innerhalb von etwa 2 Minuten). - Keine Wiederholung: Gibt dein Endpunkt
4xxzurück (als fehlerhafte URL / Anfrage gewertet), geben wir sofort ohne Wiederholung auf. - Deduplizierung: Normalerweise wird eine Aufgabe nur einmal gesendet. In Extremfällen (z. B. ein Neustart auf unserer Seite nach dem Senden, aber vor der Bestätigung) kannst du doppelte Sendungen erhalten. Stelle unbedingt sicher, dass du idempotent nach
id(task_id) dedupliziert, um doppelte Verarbeitung zu vermeiden.
1
So schnell wie möglich 2xx zurückgeben
Zuerst annehmen und in die Warteschlange stellen, dann asynchron verarbeiten – lass uns nicht auf den Abschluss deiner Verarbeitung warten.
2
Nach id deduplizieren
Verwende
id (task_id) als Idempotenzschlüssel, um doppelte Verarbeitung zu vermeiden.3
Signatur konfigurieren und prüfen
Überprüfe in der Produktion die Herkunft der Rückrufanfragen und weise gefälschte ab.
Anforderungen an die Rückruf-URL
Aus Sicherheitsgründen muss die Rückruf-URL Folgendes erfüllen:
URLs, die diese Anforderungen nicht erfüllen, werden verworfen (kein Senden, keine Wiederholung).
Häufige Fragen
Ich habe eine Aufgabe mit Webhook eingereicht, aber keine Sendung erhalten?
Ich habe eine Aufgabe mit Webhook eingereicht, aber keine Sendung erhalten?
Prüfe Punkt für Punkt:
- Ist die Aufgabe tatsächlich abgeschlossen? Prüfe die Aufgabendetails – ist
statuscompleted/failed(während der Verarbeitung wird nicht gesendet)? - Ist deine URL öffentlich erreichbar? Können wir deinen
/callbackerreichen? - Ist der Port ein Standardport (80 / 443)? Nicht standardmäßige Ports können durch Sicherheitsrichtlinien blockiert werden.
- Hat dein
/callbackrechtzeitig 2xx zurückgegeben? Bei 4xx geben wir sofort auf. - Verwendest du
https? Ist das Zertifikat gültig?
Warum ist url im Ergebnis ein Array?
Warum ist url im Ergebnis ein Array?
Einige Modelle erzeugen mehrere Bilder auf einmal, daher kann
images[].url ein Array sein – behandle es einfach als Array.Laufen die Ergebnis-Links ab?
Laufen die Ergebnis-Links ab?
Enthält
result ein expires_at (Unix-Zeitstempel), gibt dies die Ablaufzeit des Links an – sichere/speichere ihn rechtzeitig.Wird der Status 'in Verarbeitung' gesendet?
Wird der Status 'in Verarbeitung' gesendet?
Nein. Wir senden nur einmal, wenn die Aufgabe endgültig erfolgreich ist oder fehlschlägt.
Minimales Empfänger-Beispiel
Python
200 zurück und führe deine Verarbeitungslogik asynchron im Hintergrund aus.