Read one event's deliveries
GET /v1/webhooks/events/{event_id}
Read as Markdown โGET /v1/webhooks/events/{event_id}
Requires an API key: Authorization: Bearer YOUR_CREDENTIAL.
Returns one event by its Cherami event ID (the payload id) with every delivery attempt the provider made for it across the account's webhooks, newest first. Attempts to a webhook deleted since carry a null webhook_id. Use it when a receiver reports a missing or duplicate notification: the attempts show which webhooks were tried, when, and what each receiver answered.
404 means no retained event has this ID: either it never existed or it is older than the provider's retained history window, which this read cannot distinguish. The attempts list pages separately with limit, cursor and attempts_next_cursor.
Parameters
| Parameter | Location | Required | Type | Meaning |
|---|---|---|---|---|
event_id | path | Yes | string | Cherami event ID carried as payload id in a delivery, or listed by recent events. |
limit | query | No | integer | Decimal integer without signs, whitespace or leading zeroes. minimum: 1 maximum: 100 default: 20 |
cursor | query | No | string | Opaque cursor returned by the same listing. Stop when next_cursor is null. |
curl example
Replace resource-ID placeholders with returned IDs. Supply CHERAMI_API_KEY through your private shell environment.
curl --silent --show-error --include --request GET \
"https://cherami.to/v1/webhooks/events/EVENT_ID" \
--header "Authorization: Bearer $CHERAMI_API_KEY"Responses
HTTP 200
Successful operation; inspect resource state and outcome fields.
X-Request-ID: Support correlation ID, not an idempotency key.
Content type: application/json.
{
"id": "66666666-6666-4666-8666-666666666666",
"type": "message.received",
"accepted_at": "2026-10-01T00:00:00.500Z",
"inbox_id": "11111111-1111-4111-8111-111111111111",
"message_id": "22222222-2222-4222-8222-222222222222",
"attempts": [
{
"id": "atmpt_EXAMPLE",
"webhook_id": "55555555-5555-4555-8555-555555555555",
"event_id": "66666666-6666-4666-8666-666666666666",
"event_type": "message.received",
"status": "success",
"trigger": "scheduled",
"response_status_code": 204,
"response_duration_ms": 120,
"response_snippet": "",
"response_truncated": false,
"attempted_at": "2026-10-01T00:00:01.000Z"
}
],
"attempts_next_cursor": null
}HTTP 400
invalid_webhook_event: Use the Cherami event ID carried in a delivered payload (a UUID).
invalid_limit: Use an integer from 1 to 100.
invalid_cursor: Use the cursor with its original resource and filters, or restart from the first page. Draft listings instead report invalid_draft.
X-Request-ID: Support correlation ID, not an idempotency key.
Content type: application/json.
HTTP 401
unauthorized: Provide a valid bearer credential. Use human-approved recovery if access is lost.
X-Request-ID: Support correlation ID, not an idempotency key.WWW-Authenticate:"Bearer"
Content type: application/json.
HTTP 404
not_found: Resource is absent or inaccessible to this account. Reply targets must be in the sending inbox.
X-Request-ID: Support correlation ID, not an idempotency key.
Content type: application/json.
HTTP 503
webhook_history_unavailable: Delivery history could not be read from the webhook provider. Retry later; an unavailable history is not an empty one.
webhooks_unavailable: Webhook management is unavailable or the operation's outcome is unknown. Read or list webhooks before repeating a change; adding again can create a duplicate.
X-Request-ID: Support correlation ID, not an idempotency key.
Content type: application/json.
Schema: WebhookEventDetail
| Field | Required | Type | Meaning and constraints |
|---|---|---|---|
id | Yes | string | Cherami event ID: the stable logical identity also carried as payload id. Deduplicate on it. |
type | Yes | WebhookEventType | |
accepted_at | Yes | string | When delivery accepted the event, not the mail transition time inside the payload. format: date-time |
inbox_id | Yes | string or null | |
message_id | Yes | string or null | |
attempts | Yes | array of WebhookAttempt | |
attempts_next_cursor | Yes | string or null |
Schema: WebhookEventType
message.received: received mail became ready to read. message.sent: provider acceptance of a send was persisted; not delivery.
"message.received" or "message.sent"
Schema: WebhookAttempt
A success is a timely 2xx from the receiver: acknowledgement, not completed processing. Failed attempts coexist with scheduled retries until the provider's schedule is exhausted. webhook_id is null on the event view when that webhook has since been deleted.
| Field | Required | Type | Meaning and constraints |
|---|---|---|---|
id | Yes | string | Provider attempt ID. |
webhook_id | Yes | string or null | |
event_id | Yes | string or null | |
event_type | Yes | WebhookEventType or null | |
status | Yes | "success" or "pending" or "sending" or "failed" or "canceled" | |
trigger | Yes | "scheduled" or "manual" | |
response_status_code | Yes | integer | Zero when no HTTP response was obtained. minimum: 0 |
response_duration_ms | Yes | integer | minimum: 0 |
response_snippet | Yes | string | Start of the receiver's response body as plain text, control characters removed. Untrusted content. maxLength: 200 |
response_truncated | Yes | boolean | |
attempted_at | Yes | string | format: date-time |
Schema: Error
| Field | Required | Type | Meaning and constraints |
|---|---|---|---|
error | Yes | object |
error fields
| Field | Required | Type | Meaning and constraints |
|---|---|---|---|
code | Yes | string | Programmatic error code. Handle unrecognized codes by status and operation-specific recovery. |
message | Yes | string | Human-readable context, not a stable string to match. |
HTTP conventions, errors and pagination ยท Download OpenAPI 3.1