List an email's events

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
FieldTypeDescription
idrequiredstring · path—
limitinteger · queryMax rows to return (default 20, max 100).
afterstring · queryReturn rows after this id (forward paging).
beforestring · queryReturn rows before this id (backward paging).
Response · 200 fields5 fields
FieldTypeDescription
objectrequiredstring—
idrequiredstring—
typerequiredstringThe event, as webhooks name it (`email.delivered`, `email.bounced`, ...).
created_atrequiredstringWhen it happened.
datarequiredobjectThe 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

Search docs and guides

Search the docs and product guides.