高度な機能

Webhooks

重要なイベントに関するリアルタイムのHTTPコールバックを受信します:使用額の閾値、APIキーのステータス変更、レート制限の警告、システムインシデント。

利用可能なイベント

イベントトリガー推奨アクション
spending.alert月間利用額が予算の 50%、80%、90%、100% に到達財務に通知;100% でキーが自動無効化
key.disabledAPI キーが無効化(予算上限到達、手動、または漏洩)オンコールに警告;バックアップキーに切り替え
rate_limit.warning使用量が RPM または TPM 制限の 80% に到達クライアントをスロットル;制限引き上げをリクエスト
system.incidentサービス低下または停止を検知必要に応じて手動フェイルオーバーを有効化

設定

  1. api.tokspan.com/dashboard でダッシュボードにログインします
  2. 設定 → Webhooks に移動します
  3. エンドポイントを追加 をクリックし、HTTPS URL を入力します
  4. サブスクライブするイベントを選択します
  5. 署名シークレットwhsec_ で始まります)をコピーします — ペイロードの検証に必要です
署名は必ず検証してください。誰でも Webhook エンドポイントに HTTP リクエストを送信できます。X-TokSpan-Signature ヘッダーには、シークレットを使用したペイロードの HMAC-SHA256 署名が含まれています。処理前に必ず検証してください。

署名検証

各 Webhook 配信には、生のリクエストボディの HMAC-SHA256 16進ダイジェストを含む X-TokSpan-Signature ヘッダーが含まれます:

python
import hmac
import hashlib
import json

def verify_webhook_signature(payload: bytes, signature: str, secret: str) -> bool:
    expected = hmac.new(secret.encode(), payload, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, signature)

# In your webhook endpoint handler:
def handle_webhook(request):
    signature = request.headers.get("X-TokSpan-Signature", "")
    if not verify_webhook_signature(request.body, signature, "whsec_your_secret"):
        return 401, "Invalid signature"

    event = json.loads(request.body)
    print(f"Received event: {event['type']}")
    return 200, "OK"

ペイロード形式

すべての Webhook ペイロードは以下の構造に従います:

json — Example: spending.alert
{
  "type": "spending.alert",
  "created": 1700000000,
  "data": {
    "api_key_id": "key_abc123",
    "api_key_name": "production-backend",
    "threshold_pct": 80,
    "monthly_budget": 500.00,
    "current_spend": 400.00,
    "currency": "USD"
  }
}

配信とリトライ

  • タイムアウト:エンドポイントは 10 秒以内に 2xx ステータスで応答する必要があります
  • リトライ:失敗した配信は指数バックオフでリトライされます:5秒 → 30秒 → 5分 → 30分 → 1時間。5回失敗すると配信は破棄されます
  • 順序: イベントは順不同で到着する可能性があります。到着順ではなく created タイムスタンプを使用してください。
  • 冪等性: 同じイベントが複数回配信される可能性があります。重複排除には id を使用してください。