List an email's events
GET/api/v1/email/{id}/events
GET /email/{id}/events
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'Response · 200
{
"object": "list",
"has_more": false,
"data": [
{
"object": "email_event",
"id": "id_123",
"type": "string",
"created_at": "2026-01-01T00:00:00.000Z",
"data": {}
}
]
}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.
Parameters4 fields
| Field | Type | Description |
|---|---|---|
idrequired | string · path | — |
limit | integer · query | Max rows to return (default 20, max 100). |
after | string · query | Return rows after this id (forward paging). |
before | string · query | Return rows before this id (backward paging). |
Response · 200 fields5 fields
| Field | Type | Description |
|---|---|---|
objectrequired | string | — |
idrequired | string | — |
typerequired | string | The event, as webhooks name it (`email.delivered`, `email.bounced`, ...). |
created_atrequired | string | When it happened. |
datarequired | object | 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. |
200401403404422