Skip to main content
GET
/
v1
/
webhooks
/
{id}
/
deliveries
curl https://api.aioka.io/v1/webhooks/3fa85f64-5717-4562-b3fc-2c963f66afa6/deliveries \
  -H "X-API-Key: aik_basic_..."
{
  "webhook_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "deliveries": [
    {
      "delivered_at": "2026-04-18T14:32:10Z",
      "event_type": "verdict.new",
      "status_code": 200,
      "success": true,
      "attempt": 1,
      "response_ms": 143
    },
    {
      "delivered_at": "2026-04-18T14:01:55Z",
      "event_type": "ghost.signal",
      "status_code": 503,
      "success": false,
      "attempt": 3,
      "response_ms": 5012
    }
  ],
  "count": 2
}

Overview

Returns up to 50 of the most recent delivery attempts for a webhook subscription. Use this to debug failed deliveries and inspect HMAC signatures. Tier: Basic 🔒 Rate limit: 60/minute

Path Parameters

id
string
required
UUID of the webhook subscription.

Response

webhook_id
string
UUID of the webhook subscription.
deliveries
array
Array of delivery attempt objects, newest first.
count
integer
Number of delivery records returned (max 50).

HMAC Verification

Every delivery includes an X-AIOKA-Signature header. Verify it on your server:
import hmac, hashlib

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

Retry Policy

Failed deliveries are retried up to 3 times with exponential backoff: 5s → 25s → 125s. After 10 consecutive failures the subscription is automatically disabled.
curl https://api.aioka.io/v1/webhooks/3fa85f64-5717-4562-b3fc-2c963f66afa6/deliveries \
  -H "X-API-Key: aik_basic_..."
{
  "webhook_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "deliveries": [
    {
      "delivered_at": "2026-04-18T14:32:10Z",
      "event_type": "verdict.new",
      "status_code": 200,
      "success": true,
      "attempt": 1,
      "response_ms": 143
    },
    {
      "delivered_at": "2026-04-18T14:01:55Z",
      "event_type": "ghost.signal",
      "status_code": 503,
      "success": false,
      "attempt": 3,
      "response_ms": 5012
    }
  ],
  "count": 2
}