Email Events

List account email events

Lists account-level email events sorted oldest first by occurred_at asc, id asc. Each row contains a legacy email.-prefixed event_type and an additive canonical_event_type. Gateway rejection renders email.failed with canonical email.gw_reject; ambiguous injection timeout renders email.injection_timeout in both; MTA expiration renders email.bounced with canonical email.expired. Message-scoped queued, sending, sandbox, cancelled, and daily_limit_exceeded rows fan out per durable recipient with stable derived IDs matching webhook delivery. Scheduled is the cardinality exception: account polling retains one message-scoped scheduled row with its stored event ID, while scheduled webhook publication fans out per recipient with derived IDs; reconcile scheduled events by message ID, event type, and occurrence time rather than event UUID. Recipient-scoped stored rows retain their stored UUIDs across polling and webhook delivery. Legacy names are derived from stored rows; an AdminBounce row stored as failed renders email.failed in polling while its webhook retains email.bounced, both with canonical email.failed.

get/email_events

Query parameters

page_sizeinteger

Number of results to return. Defaults to 25; maximum is 100. Invalid values are clamped to the valid range.

page[cursor]string

Opaque URL-safe Base64 cursor returned by a previous event list response. The legacy page[after] and flat page_cursor forms are also accepted.

string
OR
string[]

Comma-separated list of event types to include. Also accepts repeated query parameters (e.g. event_type=delivered&event_type=bounced). Unknown values return no matches.

Dual-name compatibility: values are accepted bare or email.-prefixed. A legacy value keeps matching the rows it matched pre-rename — no widening: failed also matches the rows that now store the canonical names of the outcomes it covered (gw_reject, injection_timeout, expired); bounced matches stored bounced rows only (recipient-scoped Expirations stored failed pre-rename and never matched bounced, so expired is deliberately not a bounced expansion). A canonical value matches its own rows plus legacy rows whose recorded payload evidence proves that outcome (expired also surfaces legacy bounced rows with bounce_category: transient). The additive canonical_event_type field in each response row names the canonical outcome.

email_idstring uuid

Filter events for a specific email message UUID. Invalid UUID values are silently ignored (no filter applied).

fromstring date-time

Inclusive ISO 8601 start timestamp. Defaults to 30 days ago when omitted.

tostring date-time

Inclusive ISO 8601 end timestamp. When from is provided without to, defaults to from + 30 days.

Response

Paginated list of account email events.

Example response

{
  "data": [
    {
      "event_type": "email.delivered",
      "canonical_event_type": "email.delivered"
    }
  ]
}

Changes

Changed in 7 of the 99 revisions of this API.4916

  • 16bfa298dc713214See the full diff
    • ▲

      removed the required property // from the response with the status

      response-required-property-removed

    • ▲

      removed the required property // from the response with the status

      response-required-property-removed

    • ▲

      removed the required property // from the response with the status

      response-required-property-removed

    • ●

      deleted the query request parameter page_cursor

      request-parameter-removed

    • ●

      removed the optional property // from the response with the status

      response-optional-property-removed

    • ○

      added the new optional query request parameter page[cursor]

      new-optional-request-parameter

    • ○

      added the optional property /// to the response with the status

      response-optional-property-added

    • ○

      added the optional property /// to the response with the status

      response-optional-property-added

    • ○

      added the optional property /// to the response with the status

      response-optional-property-added

    • ○

      added the optional property /// to the response with the status

      response-optional-property-added

    • ○

      added the optional property /// to the response with the status

      response-optional-property-added

    • ○

      added the optional property /// to the response with the status

      response-optional-property-added

    • ○

      added the optional property // to the response with the status

      response-optional-property-added

    • ○

      the response property // became required for the status

      response-property-became-required

    • ○

      added the required property // to the response with the status

      response-required-property-added

    • ○

      added the required property // to the response with the status

      response-required-property-added

    • ○

      added the required property /// to the response with the status

      response-required-property-added

    • ○

      added the required property /// to the response with the status

      response-required-property-added

    • ○

      added the required property /// to the response with the status

      response-required-property-added

    This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

    • ●

      added the new 10011 enum value to the // response property for the response status

      response-property-enum-value-added

    • ●

      added the new domain_graduation_limit_exceeded enum value to the // response property for the response status

      response-property-enum-value-added

    • ●

      added the new daily_limit_exceeded enum value to the // response property for the response status

      response-property-enum-value-added

  • 2fb3b617430a21See the full diff
    • ●

      added the new recipient_suppressed enum value to the // response property for the response status

      response-property-enum-value-added

    • ●

      added the new reputation_suspended enum value to the // response property for the response status

      response-property-enum-value-added

    • ○

      added the optional property to the response with the status

      response-optional-property-added

    • ●

      added the new 10027 enum value to the // response property for the response status

      response-property-enum-value-added

    • ●

      added the new 10036 enum value to the // response property for the response status

      response-property-enum-value-added

    This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

    • ○

      endpoint added

      endpoint-added

    This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

    • ▲

      api path removed without deprecation

      api-path-removed-without-deprecation

    This revision also has 111 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

Of the 99 revisions, 1 has no diff computed.