Skip to content

List deliveries of an event

GET/v1/events/{id}/deliveries

Send your API key as a bearer token in the Authorization header. Secret API key: Authorization: Bearer ctp_live_sk_…. A publishable key (ctp_…_pk_…) is accepted by these operations only, which serve reference data: getRate, listAssets, listNetworks (each marked x-publishable-key: true). Every other operation refuses it with 403 publishable_key_not_allowed, whatever Origin the request carries: that header binds browsers, not other clients, and nothing on this API relies on it.

Name Type Description
id required string At most 100 characters.
Name Type Description
limit integer Number of items to return (1 to 100). Default 50. Minimum 1, maximum 100.
starting_after string Return items after this id: pass next_cursor of the previous page. At most 100 characters.
Terminal window
curl "https://api.ctpeway.com/v1/events/{id}/deliveries" \
-H "Authorization: Bearer $CTPEWAY_API_KEY"
Field Type Description
data array of objects
data[].id string 24 hexadecimal characters.
data[].event_id string
data[].event_type string
data[].invoice_id optional string The invoice the event is about, if any. 24 hexadecimal characters.
data[].payment_id optional string The payment the event is about, if any. 24 hexadecimal characters.
data[].webhook_endpoint_id string 24 hexadecimal characters.
data[].trigger string event: the original delivery. resend: a redelivery. test: a test ping. One of event, resend, test.
data[].status string One of pending, succeeded, failed.
data[].attempts integer
data[].attempt_log array of objects
data[].attempt_log[].at string (date-time)
data[].attempt_log[].http_status optional integer
data[].attempt_log[].error optional string Why the attempt failed, e.g. http_500, timeout.
data[].attempt_log[].duration_ms integer
data[].attempt_log[].request object What was sent. The body is the event itself (GET /events/{id}), the same on every attempt.
data[].attempt_log[].request.headers map of string to string The headers the attempt was sent with, by lowercase name. ctpeway-signature shows its timestamp and [redacted] in place of the signature itself.
data[].attempt_log[].response optional object What the endpoint answered. Present only where one delivery is read by its id, never in lists, and only for an attempt the endpoint answered.
data[].attempt_log[].response.headers map of string to string Response headers by lowercase name. Headers that carry a credential (set-cookie, authorization, …) are never kept.
data[].attempt_log[].response.body optional string The first 4,096 characters of the response body, with secret-looking JSON fields replaced by [redacted].
data[].attempt_log[].response.body_truncated boolean The body was longer than what is kept.
data[].next_attempt_at optional string (date-time)
data[].last_attempt_at optional string (date-time)
data[].delivered_at optional string (date-time)
data[].created_at string (date-time)
has_more boolean Whether more items exist after this page.
next_cursor string or null Pass as starting_after to get the next page; null on the last page.
{
"data": [
{
"id": "0123456789abcdef01234567",
"event_id": "string",
"event_type": "string",
"invoice_id": "0123456789abcdef01234567",
"payment_id": "0123456789abcdef01234567",
"webhook_endpoint_id": "0123456789abcdef01234567",
"trigger": "event",
"status": "pending",
"attempts": 0,
"attempt_log": [
{
"at": "2026-01-01T00:00:00.000Z",
"http_status": 0,
"error": "string",
"duration_ms": 0,
"request": {
"headers": {}
},
"response": {
"headers": {},
"body": "string",
"body_truncated": true
}
}
],
"next_attempt_at": "2026-01-01T00:00:00.000Z",
"last_attempt_at": "2026-01-01T00:00:00.000Z",
"delivered_at": "2026-01-01T00:00:00.000Z",
"created_at": "2026-01-01T00:00:00.000Z"
}
],
"has_more": true,
"next_cursor": "string"
}

The values are placeholders generated from the schema. They show the shape, not real data.

A failed request answers with the error format described under Errors.

Besides the codes any endpoint can return, this endpoint can answer with these code values: