---
title: "List an email's events"
description: "One sent email's delivery events, oldest first: sent, delivered, delayed, bounced, complained, opened, clicked, failed, suppressed, unsubscribed. `GET /api/v1/email/{id}/events`"
url: https://www.unitpost.com/docs/email/get-email-id-events
section: "Email API reference"
updated: 2026-10-13
---
# List an email's events

`GET /api/v1/email/{id}/events`

One sent email's delivery events, oldest first: sent, delivered, delayed, bounced, complained, opened, clicked, failed, suppressed, unsubscribed. Each carries its detail under the webhook's names (a bounce's `diagnostic_code`, a click's `link`), with the provider's wording redacted as in webhooks. Opens and clicks are recorded once per email per day (clicks once per link per day). Cursor-paginated with `emev_` ids. Requires the `emails:read` capability.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | string | yes | — |
| `limit` | query | integer | no | Max rows to return (default 20, max 100). |
| `after` | query | string | no | Return rows after this id (forward paging). |
| `before` | query | string | no | Return rows before this id (backward paging). |

## Response fields (200)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | — |
| `id` | string | yes | — |
| `type` | string | yes | The event, as webhooks name it (`email.delivered`, `email.bounced`, ...). |
| `created_at` | string | yes | When it happened. |
| `data` | object | yes | The event's own detail, under the webhook's field names: `bounce` { type, sub_type, diagnostic_code[] }, `complaint` { feedback_type }, `open` { user_agent }, `click` { link, user_agent }, `failed` { reason }, `suppressed` { recipients[], reasons[] { email, reason }, full }, `unsubscribe` { scope, source }. Empty for the rest. |

## Responses

| Status | Description |
| --- | --- |
| 200 | A page of events. |
| 401 | Missing or invalid API key. |
| 403 | Insufficient scope. |
| 404 | Email not found. |
| 422 | Invalid pagination params, or an unknown query key. |

## Example request

```bash
curl -X GET 'https://www.unitpost.com/api/v1/email/email_123/events' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'User-Agent: my-app/1.0'
```

## Example response (200)

```json
{
  "object": "list",
  "has_more": false,
  "data": [
    {
      "object": "email_event",
      "id": "id_123",
      "type": "string",
      "created_at": "2026-01-01T00:00:00.000Z",
      "data": {}
    }
  ]
}
```

## Links

- HTML reference (with Node.js, Python, Ruby, PHP, Laravel, Go, Java, Rust, .NET and CLI examples): https://www.unitpost.com/docs/email/get-email-id-events
- OpenAPI 3.1 (full schemas): https://www.unitpost.com/api/v1/openapi.json
