Skip to main content
Beim Einreichen asynchroner Generierungsaufgaben wie Video / Bild / Audio kannst du eine Rückruf-URL angeben. Sobald die Aufgabe abgeschlossen ist (erfolgreich oder fehlgeschlagen), senden wir das Ergebnis aktiv per POST an deine URL, sodass du nicht ständig abfragen musst. Bei Video- und Bildgenerierungsaufgaben kannst du mit language außerdem die Sprache der Fehlermeldung auswählen.

Schnellstart

Füge beim Einreichen einer Aufgabe webhook auf der obersten Ebene des Anfragekörpers hinzu. Um Fehlermeldungen zu übersetzen, füge außerdem language hinzu:
Nach Abschluss der Aufgabe senden wir eine POST-Anfrage an 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 als de behandelt.
  • Verwende die zweistelligen Codes aus der Tabelle. Regionale Tags wie zh-CN, en-US und pt-BR werden 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.
POST /mj/submit/* und POST /v1/images/edits unterstützen webhook / language nicht. Offizielle xAI-Bildmodelle unterstützen language nicht und geben bei Angabe dieses Parameters 400 parameter "language" is not supported zurück. Sende diesen Parameter nicht an diese Modelle.

URL-Regeln

Die von dir angegebene webhook 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.
Wir senden nur, wenn eine Aufgabe einen Endzustand erreicht (completed / failed); während der Verarbeitung senden wir nicht.

Wiederholungen und Deduplizierung (wichtig)

  • Wiederholungen: Wenn dein Server nicht innerhalb von etwa 10 Sekunden 2xx zurückgibt oder 5xx zurü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 4xx zurü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.
Empfehlungen für deinen Empfangs-Endpunkt:
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

Prüfe Punkt für Punkt:
  1. Ist die Aufgabe tatsächlich abgeschlossen? Prüfe die Aufgabendetails – ist status completed / failed (während der Verarbeitung wird nicht gesendet)?
  2. Ist deine URL öffentlich erreichbar? Können wir deinen /callback erreichen?
  3. Ist der Port ein Standardport (80 / 443)? Nicht standardmäßige Ports können durch Sicherheitsrichtlinien blockiert werden.
  4. Hat dein /callback rechtzeitig 2xx zurückgegeben? Bei 4xx geben wir sofort auf.
  5. Verwendest du https? Ist das Zertifikat gültig?
Einige Modelle erzeugen mehrere Bilder auf einmal, daher kann images[].url ein Array sein – behandle es einfach als Array.
Nein. Wir senden nur einmal, wenn die Aufgabe endgültig erfolgreich ist oder fehlschlägt.

Minimales Empfänger-Beispiel

Python
Gib so schnell wie möglich 200 zurück und führe deine Verarbeitungslogik asynchron im Hintergrund aus.