Delivery History
View delivery attempt history with status, HTTP codes, and timing. Get detail for a single item or replay a failed delivery attempt.
GET
/v1/delivery/itemsResponse
Response fields
itemsarrayArray of delivery attempt records.
items[].idstringDelivery item UUID.
items[].binding_idstringBinding that produced this attempt.
items[].event_idstringOutbox event ID (BIGSERIAL, as string).
items[].idempotency_keystringSHA-256 idempotency key sent on the wire.
items[].statusstring`in_flight`, `succeeded`, or `failed`.
items[].attemptintegerAttempt number (1-indexed).
items[].http_statusinteger | nullHTTP response status code, if applicable.
items[].error_codestring | nullMachine-readable error code on failure.
items[].error_messagestring | nullHuman-readable error message on failure.
items[].duration_msinteger | nullDelivery duration in milliseconds.
items[].completed_atstring | nullISO 8601 completion timestamp.
items[].created_atstringISO 8601 attempt creation timestamp.
totalintegerTotal number of matching delivery items.
Response
{
"items": [
{
"id": "e5f6a7b8-c9d0-1234-efab-456789012345",
"binding_id": "d4e5f6a7-b8c9-0123-defa-345678901234",
"event_id": "98765",
"idempotency_key": "a3f8c2d1e4b7",
"status": "succeeded",
"attempt": 1,
"http_status": 200,
"error_code": null,
"error_message": null,
"duration_ms": 234,
"completed_at": "2024-09-15T11:00:00.000Z",
"created_at": "2024-09-15T10:59:59.000Z"
}
],
"total": 1280
}Errors
Error responses
401unauthorizedMissing or invalid API key.
429rate_limitedToo many requests. Retry after the period indicated in the Retry-After header.
GET
/v1/delivery/items/:idResponse
Response fields
idstringDelivery item UUID.
binding_idstringBinding that produced this attempt.
event_idstringOutbox event ID.
idempotency_keystringSHA-256 idempotency key sent on the wire.
statusstring`in_flight`, `succeeded`, or `failed`.
attemptintegerAttempt number.
http_statusinteger | nullHTTP response status code.
error_codestring | nullMachine-readable error code.
error_messagestring | nullHuman-readable error message.
request_bodystring | nullTruncated request body (up to 10 KB). Nulled after retention period.
response_bodystring | nullTruncated response body (up to 10 KB). Nulled after retention period.
duration_msinteger | nullDelivery duration in milliseconds.
completed_atstring | nullISO 8601 completion timestamp.
created_atstringISO 8601 attempt creation timestamp.
Response
{
"id": "e5f6a7b8-c9d0-1234-efab-456789012345",
"binding_id": "d4e5f6a7-b8c9-0123-defa-345678901234",
"event_id": "98765",
"idempotency_key": "a3f8c2d1e4b7",
"status": "succeeded",
"attempt": 1,
"http_status": 200,
"error_code": null,
"error_message": null,
"request_body": "{"vendor":"Acme Corp","total":4950.00}",
"response_body": "{"ok":true}",
"duration_ms": 234,
"completed_at": "2024-09-15T11:00:00.000Z",
"created_at": "2024-09-15T10:59:59.000Z"
}Errors
Error responses
401unauthorizedMissing or invalid API key.
404not_foundNo delivery item with this ID exists for your organization.
429rate_limitedToo many requests. Retry after the period indicated in the Retry-After header.
POST
/v1/delivery/items/:id/replayResponse
Response fields
enqueuedbooleanAlways true when the replay was accepted.
idempotency_keystringThe idempotency key that will be sent on the new attempt — identical to the original so receivers can deduplicate.
Response
{
"enqueued": true,
"idempotency_key": "a3f8c2d1e4b7"
}Errors
Error responses
400bad_requestReplay is not available in master view (organization-wide API key).
401unauthorizedMissing or invalid API key.
404not_foundNo delivery item with this ID exists for your organization.
429rate_limitedToo many requests. Retry after the period indicated in the Retry-After header.