Skip to content

Events (webhooks) ​

Webhook events: backfill and resend

Use when a webhook was missed. Event types: deposit.confirmed; withdraw.broadcasted / confirmed / failed / rejected.

List events ​

http
GET /v1/events

API key scope: read

List events: newest first, cursor pagination; filter by delivery status to find undelivered ones (e.g. FAILED)

Parameters

NameInTypeRequiredDescription
typequerystringnoEvent type: optional
delivery_statusquerystringnoDelivery status: optional
start_timequerystringnoStart time: by event time, Unix milliseconds, inclusive
end_timequerystringnoEnd time: by event time, Unix milliseconds, inclusive
page_sizequeryintegernoPage size: default 20, max 100 (larger values are treated as 100)
page_tokenquerystringnoPage token: the next_page_token from the previous page; omit for the first page. Opaque — pass it back unchanged

Response (200, EventPage)

FieldTypeDescription
eventsobject (Event)[]
events[].created_atstringEvent time (Unix milliseconds)
events[].dataobjectEvent data: identical to the resource returned by the matching GET endpoint (deposit.confirmed → GET /v1/deposits/{deposit_id}), as a snapshot at event time
events[].delivery_statusstringDelivery status: PENDING (queued) / RETRY (failed, waiting to retry) / SUCCESS (merchant returned 2xx) / FAILED (retries exhausted)
events[].event_idstringEvent ID (the X-Webhook-Id header and event_id in the body)
events[].last_http_statusintegerHTTP status of the last delivery; 0 if none
events[].retry_countintegerRetry rounds (up to 3 immediate retries per round, then backoff until the next round; marked FAILED after the limit)
events[].typestringEvent type: deposit.confirmed / withdraw.broadcasted / withdraw.confirmed / withdraw.failed / withdraw.rejected
next_page_tokenstringpage_token for the next page; empty means no more pages

Response example:

json
{
  "events": [
    {
      "created_at": "1762650000000",
      "data": {},
      "delivery_status": "PENDING",
      "event_id": "evt_1987654321098754",
      "last_http_status": 0,
      "retry_count": 0,
      "type": "deposit.confirmed"
    }
  ],
  "next_page_token": ""
}

On failure the unified error body is returned; see Errors.

Resend event ​

http
POST /v1/events/{event_id}/resend

API key scope: read

Resend event: immediately redeliver once using the merchant's current webhook URL and secret (event_id is unchanged; dedupe by it)

Parameters

NameInTypeRequiredDescription
event_idpathstringyesEvent ID: starts with evt_

Request body

FieldTypeDescription
event_idstringEvent ID: starts with evt_

Request example:

json
{
  "event_id": "evt_1987654321098754"
}

Response (200, Event)

FieldTypeDescription
created_atstringEvent time (Unix milliseconds)
dataobjectEvent data: identical to the resource returned by the matching GET endpoint (deposit.confirmed → GET /v1/deposits/{deposit_id}), as a snapshot at event time
delivery_statusstringDelivery status: PENDING (queued) / RETRY (failed, waiting to retry) / SUCCESS (merchant returned 2xx) / FAILED (retries exhausted)
event_idstringEvent ID (the X-Webhook-Id header and event_id in the body)
last_http_statusintegerHTTP status of the last delivery; 0 if none
retry_countintegerRetry rounds (up to 3 immediate retries per round, then backoff until the next round; marked FAILED after the limit)
typestringEvent type: deposit.confirmed / withdraw.broadcasted / withdraw.confirmed / withdraw.failed / withdraw.rejected

Response example:

json
{
  "created_at": "1762650000000",
  "data": {},
  "delivery_status": "PENDING",
  "event_id": "evt_1987654321098754",
  "last_http_status": 0,
  "retry_count": 0,
  "type": "deposit.confirmed"
}

On failure the unified error body is returned; see Errors.