List webhook delivery attempts
Page over the per-attempt delivery feed for your organization-level webhooks.
Cursor pagination is ordered newest first; the next-page cursor surfaces
in meta.next_cursor.
Filters combine with AND. since and until bound the time range.
http_status_min and http_status_max bound the response code (a min
greater than max returns 422). endpoint_id and event_type are exact
matches; event_type is validated against the known event catalog, so a
typo returns 422 rather than a silent empty page. outcome is one of
success, retry, or dead.
Requires the webhooks:read scope.
Authenticate by sending your API key as a bearer token:
Authorization: Bearer am_live_.... Every request is automatically
scoped to the organization that owns the key and to the scopes granted
to that key.
In: header
Query Parameters
501 <= value <= 200uuid"brand.vetted" | "brand.vetting_failed" | "campaign.approved" | "campaign.rejected" | "campaign.shared" | "wallet.balance_low" | "wallet.balance_zero" | "subscription.past_due" | "subscription.canceled" | "api_key.created" | "api_key.rotated" | "api_key.revoked" | "phone_number.bulk_order.completed" | "phone_number.campaign.assigned" | "consent_pending.confirmed" | "consent_pending.expired" | "lookup.completed""success" | "retry" | "dead"date-timedate-time100 <= value <= 599100 <= value <= 599Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/webhooks/deliveries"{
"success": true,
"data": [
{
"id": "0190a1b2-c3d4-e5f6-a7b8-c9d0e1f2a3d5",
"endpoint_id": "0190a1b2-c3d4-e5f6-a7b8-c9d0e1f2a3b4",
"event_id": "0190a1b2-c3d4-e5f6-a7b8-c9d0e1f2a3c5",
"event_type": "wallet.balance_low",
"url": "https://hooks.example.com/y3labs/ops",
"attempt": 1,
"outcome": "success",
"response_status": 200,
"response_time_ms": 142,
"request_body_sha256": "f4e2…b7",
"request_body_bytes": 312,
"response_body_excerpt": "{\"ok\":true}",
"request_headers": {
"Content-Type": "application/json",
"User-Agent": "AgentMessage/webhook-relay",
"X-AmCore-Event-ID": "evt_018f2d0c-7a4c-7f3e-8f1f-3a2b9c1d2e0f",
"X-AmCore-Event-Type": "wallet.balance_low",
"X-AmCore-Signature": "t=1761480000,v1=19c2…cb5"
},
"error": null,
"occurred_at": "2026-04-29T14:32:00Z"
},
{
"id": "0190a1b2-c3d4-e5f6-a7b8-c9d0e1f2a3d4",
"endpoint_id": "0190a1b2-c3d4-e5f6-a7b8-c9d0e1f2a3b4",
"event_id": "0190a1b2-c3d4-e5f6-a7b8-c9d0e1f2a3c4",
"event_type": "brand.vetted",
"url": "https://hooks.example.com/y3labs/ops",
"attempt": 2,
"outcome": "retry",
"response_status": 503,
"response_time_ms": 502,
"request_body_sha256": "9b1c…a3",
"request_body_bytes": 248,
"response_body_excerpt": "upstream timeout",
"request_headers": {
"Content-Type": "application/json",
"User-Agent": "AgentMessage/webhook-relay",
"X-AmCore-Event-ID": "evt_018f2d0c-7a4c-7f3e-8f1f-3a2b9c1d2e0e",
"X-AmCore-Event-Type": "brand.vetted",
"X-AmCore-Signature": "t=1761479940,v1=4ef1…0ab"
},
"error": null,
"occurred_at": "2026-04-29T14:31:00Z"
}
],
"meta": {
"total": 0,
"limit": 50,
"offset": 0,
"next_cursor": "eyJ0cyI6IjIwMjYtMDQtMjlUMTQ6MzE6MDBaIiwiaWQiOiIwMUhYSlo0UTNBMFBaNFFINzdKWkw2UzBSM00ifQ=="
}
}{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "authentication failed",
"request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
}
}{
"success": false,
"error": {
"code": "FORBIDDEN",
"message": "missing required scope",
"request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
}
}{
"success": false,
"error": {
"code": "VALIDATION_FAILED",
"message": "validation failed",
"request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM",
"details": {
"to": "must be E.164",
"body": "must be 1..1600 chars"
}
}
}