Anleitungen

Webhooks

Benachrichtigungen über den Abschluss von Batch-Jobs empfangen

Für Batch-Jobs, die länger als eine Minute laufen, sind Webhooks günstiger und schneller als Polling. Thunderbit sendet ein POST an deine URL, wenn ein Job einen terminalen Zustand erreicht.

Bei der Einreichung konfigurieren

{
  "urls": ["https://example.com/page1"],
  "webhook": {
    "url": "https://your-server.com/api/webhook/distill",
    "secret": "whsec_your_secret_key",
    "headers": { "X-Custom-Auth": "your-token" }
  }
}

Payload

{
  "id": "batch_abc123",
  "status": "COMPLETED",
  "total": 50,
  "completed": 49,
  "failed": 1,
  "completedAt": "2026-04-26T10:00:00Z"
}

Payloads sind bewusst klein — hol vollständige Ergebnisse via GET /batch/distill/{id} ab, nachdem du den Callback erhalten hast.

Signatur-Verifikation

Wenn secret gesetzt ist, enthält jede Zustellung X-Webhook-Signature: sha256=<hex>. Verifiziere mit HMAC-SHA256.

import hmac, hashlib

def verify(raw_body: bytes, signature: str, secret: str) -> bool:
    expected = "sha256=" + hmac.new(
        secret.encode(), raw_body, hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)

Vertraue in der Produktion niemals einem unsignierten Webhook.

Wiederholungsverhalten

  • Nicht-2xx → 5 Wiederholungen mit exponentiellem Backoff: 10 s, 30 s, 2 min, 10 min, 30 min
  • Pro-Zustellung-Timeout: 15 s
  • Wenn alle Wiederholungen fehlschlagen, ist der Job auf unserer Seite trotzdem abgeschlossen — dein Endpunkt muss idempotent sein

Diese Seite wird mit Debugging-Tipps erweitert — schau bald wieder vorbei.