Skip to content

Webhook Events History

Query the webhook delivery history for the current account. Common uses:

  • Diagnose "why didn't I receive a webhook"
  • Monitor dead-letter status
  • Reconcile against your local records

Endpoint

ItemValue
MethodPOST
Path/api/v1/openapi/webhook_events/list
AuthHMAC
IdempotencyNot required

Request Fields

FieldTypeRequiredDescription
event_typestringNoFilter by event type, e.g. card.opened
statusintNoFilter by delivery status (see table)
pageintNoDefault 1
page_sizeintNoDefault 20, max 100

Delivery Status

statusstatus_descMeaning
0pendingAwaiting first delivery
1deliveredDelivered
2failed_retryFailed but still retrying
3dead_letterDead-lettered, no more retries
4skippedSkipped (e.g. webhook URL not set)

Example Request

json
{ "event_type": "card.opened", "status": 1, "page": 1, "page_size": 20 }

Response Fields

Each item in data.list[]:

FieldTypeDescription
event_idstringevt_<uuid> (matches Webhook-Id header without prefix)
event_typestringEvent type
statusintSee table
status_descstringEnglish description
attempt_countintAttempts so far
next_attempt_atstring nullableNext retry time (RFC3339)
last_errorstringMost recent failure reason
last_response_statusintMost recent HTTP status (0 = network failure)
delivered_atstring nullableDelivery time on success
created_atstringEvent creation time

Example Response

json
{
  "code": 200,
  "message": "OK",
  "data": {
    "list": [
      {
        "event_id": "evt_550e8400-e29b-41d4-a716-446655440000",
        "event_type": "card.opened",
        "status": 1,
        "status_desc": "delivered",
        "attempt_count": 1,
        "next_attempt_at": null,
        "last_error": "",
        "last_response_status": 200,
        "delivered_at": "2026-04-29T11:00:13Z",
        "created_at": "2026-04-29T11:00:12Z"
      }
    ],
    "total": 12,
    "page": 1,
    "page_size": 20,
    "total_pages": 1,
    "has_next": false,
    "has_prev": false
  }
}

Common Errors

HTTPmessage_keyDescription
401openapi_invalid_credentialsAuth failure
500openapi_list_webhook_events_failedServer error

Diagnosing Webhook Issues

Scenario 1: Never received a webhook

bash
# Was it ever queued?
{ "status": 0 }    # still pending → system delay, wait a few seconds
{ "status": 4 }    # skipped → URL not set / disabled

# Or in retry loop
{ "status": 2 }    # check last_error / last_response_status

Scenario 2: Suspect missing events

bash
# List all events for the time range
{ "event_type": "card.opened", "page_size": 100 }
# Reconcile with your local receiver records

Scenario 3: Confirm dead-letter

bash
{ "status": 3 }
# Dead-letters typically come from: permanent 4xx / permanent timeout / DNS failure
# After fixing your receiver, contact support to manually re-deliver or ignore

Released under MIT-equivalent terms.