ガイド

Webhook

バッチジョブの完了通知を受け取る

1 分を超えるバッチジョブでは、Webhook はポーリングよりも安価で高速です。Thunderbit はジョブが終了状態に達したときに、あなたの URL に POST します。

サブミット時に設定

{
  "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" }
  }
}

ペイロード

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

ペイロードは意図的に小さく保たれています —— コールバック受信後に GET /batch/distill/{id} で完全な結果を取得してください。

署名検証

secret が設定されている場合、すべての配信に X-Webhook-Signature: sha256=<hex> が含まれます。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)

本番環境では署名のない Webhook を信頼しないでください。

リトライ動作

  • 非 2xx → 指数バックオフで 5 回リトライ:10 秒、30 秒、2 分、10 分、30 分
  • 配信ごとのタイムアウト:15 秒
  • すべてのリトライが失敗しても、私たちの側ではジョブは完了しています —— あなたのエンドポイントは冪等である必要があります

このページはデバッグのヒントを追加して拡張中です —— 近日中に再確認してください。