Skip to main content
Geben Sie bei einem Task webhook.url an, und wir senden das Ergebnis per POST dorthin, sobald der Task einen Endzustand erreicht: COMPLETED oder FAILED.

Zustell-Payload

Wir senden per POST mit Content-Type: application/json diesen Body:
object
erforderlich
Dieselben Task-Metadaten wie beim Einreichen, jetzt mit einem End-status und Ihrem zurückgegebenen idempotencyKey.
object
erforderlich
Die Credit-Kosten der Engine: 2 für Perplexity, 3 für ChatGPT usw. (1–3 Credits je nach Engine). creditsCharged ist 0, wenn der Task fehlgeschlagen ist. Anders als die Antworten beim Einreichen und Pollen, die immer null melden, ist dieses Feld nicht null.
object
erforderlich
Das engine-spezifische Ergebnis. Siehe Engines. Bei einem fehlgeschlagenen Task steht hier { "error": "<reason>" } statt des Engine-Ergebnisses.
Auch ein fehlgeschlagener Task wird zugestellt:

Wiederholungen

Geben Sie zur Bestätigung einen beliebigen 2xx zurück. Alles andere, auch ein Timeout, gilt als Fehlschlag, und wir wiederholen mit exponentiellem Backoff: Nach dem fünften Versuch wird die Zustellung aufgegeben und protokolliert. Es gibt keine Dead-Letter-Queue, die Sie lesen können. Um das Ergebnis über die Task-API abzurufen, pollen Sie innerhalb des 24-stündigen öffentlichen Polling-Fensters. Dieses Fenster bestimmt nicht die Speicherdauer des zugrunde liegenden Datensatzes. Jeder Versuch hat ein Anfrage-Timeout von 30 Sekunden.
Aus Sicht des Tasks ist die Zustellung „Fire and Forget“. Ein abgeschlossener Task, dessen Webhook nie zugestellt werden kann, zeigt in GET /v1/async/task/{id} weiterhin COMPLETED: Der Status beschreibt die Arbeit der Engine, nicht die Benachrichtigung.

Einen sicheren Handler schreiben

1

Schnell bestätigen

Geben Sie 200 zurück, sobald Sie den Payload dauerhaft in eine Warteschlange gelegt haben. Parsen und Datenbankschreibvorgänge erledigen Sie danach. Ein langsamer Handler verbraucht das 30-Sekunden-Timeout und löst eine unerwünschte Wiederholung aus.
2

Über idempotencyKey deduplizieren

Wegen der Wiederholungen kann Ihr Handler denselben Task legitim mehrfach erhalten. Gleichen Sie über task.idempotencyKey (oder task.id) ab und machen Sie den Schreibvorgang idempotent.
3

Nach Status verzweigen, nicht nach Vorhandensein

Prüfen Sie task.status === "FAILED" explizit. Auch ein fehlgeschlagener Task stellt einen Webhook zu.
Webhook-Anfragen tragen weder Signatur noch gemeinsames Geheimnis. Ist Ihr Endpunkt öffentlich, behandeln Sie den Payload als nicht vertrauenswürdig und verwenden Sie einen nicht erratbaren URL-Pfad, oder stellen Sie den Handler hinter netzwerkseitige Beschränkungen.