cherami.
API referenceWebhooks

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

ParameterLocationRequiredTypeMeaning
event_idpathYesstringCherami event ID carried as payload id in a delivery, or listed by recent events.
limitqueryNointegerDecimal integer without signs, whitespace or leading zeroes. minimum: 1 maximum: 100 default: 20
cursorqueryNostringOpaque 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.

WebhookEventDetail

{
  "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.

Error

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.

Error

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.

Error

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.

Error

Schema: WebhookEventDetail

FieldRequiredTypeMeaning and constraints
idYesstringCherami event ID: the stable logical identity also carried as payload id. Deduplicate on it.
typeYesWebhookEventType
accepted_atYesstringWhen delivery accepted the event, not the mail transition time inside the payload. format: date-time
inbox_idYesstring or null
message_idYesstring or null
attemptsYesarray of WebhookAttempt
attempts_next_cursorYesstring 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.

FieldRequiredTypeMeaning and constraints
idYesstringProvider attempt ID.
webhook_idYesstring or null
event_idYesstring or null
event_typeYesWebhookEventType or null
statusYes"success" or "pending" or "sending" or "failed" or "canceled"
triggerYes"scheduled" or "manual"
response_status_codeYesintegerZero when no HTTP response was obtained. minimum: 0
response_duration_msYesintegerminimum: 0
response_snippetYesstringStart of the receiver's response body as plain text, control characters removed. Untrusted content. maxLength: 200
response_truncatedYesboolean
attempted_atYesstringformat: date-time

Schema: Error

FieldRequiredTypeMeaning and constraints
errorYesobject

error fields

FieldRequiredTypeMeaning and constraints
codeYesstringProgrammatic error code. Handle unrecognized codes by status and operation-specific recovery.
messageYesstringHuman-readable context, not a stable string to match.

HTTP conventions, errors and pagination ยท Download OpenAPI 3.1

On this page