Schnellstart
Füge beim Einreichen einer Aufgabe einwebhook-Feld zum Anfragetext hinzu:
deine URL + /callback.
Andere asynchrone Aufgaben-Endpunkte (Video, Audio usw.) funktionieren genauso – füge einfach das
webhook-Feld zum Anfragetext hinzu.URL-Regeln
Die von dir angegebenewebhook ist die Basis-URL, an die wir automatisch /callback anhängen:
Deine webhook | Wohin wir tatsächlich POST senden |
|---|---|
https://your-server.com | https://your-server.com/callback |
https://your-server.com/api | https://your-server.com/api/callback |
https://your-server.com/api/ | https://your-server.com/api/callback |
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.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.
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.
Nach id deduplizieren
Verwende
id (task_id) als Idempotenzschlüssel, um doppelte Verarbeitung zu vermeiden.Anforderungen an die Rückruf-URL
Aus Sicherheitsgründen muss die Rückruf-URL Folgendes erfüllen:| Anforderung | Beschreibung |
|---|---|
| Öffentlich erreichbar | Darf keine interne / lokale Adresse sein (z. B. 127.0.0.1, 10.x, 192.168.x werden abgelehnt) |
| Protokoll | http oder https (https empfohlen) |
| Port | Standardports verwenden (80 / 443); nicht standardmäßige Ports können blockiert werden |
| Domain | Darf nicht auf unsere eigene Dienst-Domain zeigen |
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.