---
title: "Read one event's deliveries"
method: GET
path: "/v1/webhooks/events/{event_id}"
tags: ["webhooks"]
---

# Read one event's deliveries

`GET /v1/webhooks/events/{event_id}`

## Request

- Base URL: `https://cherami.to`
- URL: `https://cherami.to/v1/webhooks/events/{event_id}`
- Auth: HTTP bearer

Returns one event by its ID (the payload `id`), with every delivery attempt made for it across the account's webhooks, newest first. Use it when your receiver reports a missing or duplicate notification: the attempts show which webhooks were tried, when, and how each answered. Attempts to a webhook deleted since have a null `webhook_id`. A `404` means no recent event has this ID. Page through attempts with `limit`, `cursor` and `attempts_next_cursor`.

## Path parameters

- `event_id` string, required

## Query parameters

- `limit` integer
- `cursor` string

## Response `200`

Success.

- WebhookEventDetail
  - `id` string, required: Event ID, the same as the delivered payload's id. Deduplicate on it.
  - `type` 'message.received' | 'message.sent', required: message.received: a received message is ready to read. message.sent: the provider accepted a sent message, which is not delivery.
  - `accepted_at` string, date-time, required: When the event was handed to delivery; the payload's timestamp is when the mail event happened.
  - `inbox_id` string, nullable, required: Cherami resource ID.
  - `message_id` string, nullable, required: Cherami resource ID.
  - `attempts` WebhookAttempt[], required
    - `id` string, required: Attempt ID.
    - `webhook_id` string, nullable, required: Cherami resource ID.
    - `event_id` string, nullable, required
    - `event_type` 'message.received' | 'message.sent', required: message.received: a received message is ready to read. message.sent: the provider accepted a sent message, which is not delivery.
    - `status` 'success' | 'pending' | 'sending' | 'failed' | 'canceled', required
    - `trigger` 'scheduled' | 'manual', required
    - `response_status_code` integer, required: Zero when no HTTP response was obtained.
    - `response_duration_ms` integer, required
    - `response_snippet` string, required: Start of the receiver's response body, as plain text.
    - `response_truncated` boolean, required
    - `attempted_at` string, date-time, required
  - `attempts_next_cursor` string, nullable, required: Cursor for more of this event's attempts; null at the end.

## Other responses

- `400`: `invalid_webhook_event`: Use a Cherami event ID (a UUID): a delivered payload's `id`, or one listed by recent events. `invalid_limit`: Use an integer from 1 to 100. `invalid_cursor`: Send a cursor only to the listing, filters and order that returned it, or restart from the first page.
- `401`: `unauthorized`: Send a valid API key as `Authorization: Bearer <key>`. If the key stopped working, get a new one through [recovery](https://cherami.to/docs/guides/recovery).
- `404`: `not_found`: The resource does not exist or does not belong to this account. A reply or forward source must also be in the sending inbox.
- `503`: `webhook_history_unavailable`: Delivery history could not be read. Retry later. `webhooks_unavailable`: Webhook management failed. If it was a change, it may have been applied: list or read the webhooks before repeating it.

---

[API](https://skmtc.dev/cherami/apis/cherami-http-api.md) · [All operations](https://skmtc.dev/cherami/apis/cherami-http-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cherami/apis/cherami-http-api/revisions/7bd993d538af?raw)
