Docs / API / Analytics & Events

Analytics & Events

Rolled-up daily metrics + raw event stream for every send.

Get analytics summary

GET /api/analytics?days=30

Scopes: events:read

200 OK
{
  "success": true,
  "data": {
    "period": { "start": "2026-04-16", "end": "2026-05-16" },
    "totals": {
      "sent":        12480,
      "delivered":   12203,
      "bounced":     78,
      "complained":  3,
      "opened":      8742,
      "clicked":     2103
    },
    "rates": {
      "delivery":  0.978,
      "open":      0.716,
      "click":     0.172,
      "bounce":    0.006,
      "complaint": 0.0002
    },
    "daily": [ { "date": "2026-05-16", "sent": 420, ... } ]
  }
}

Get event log

GET /api/events

Cursor-paginated. Query parameters:

ParamDescription
cursorFrom a previous response's nextCursor.
limitMax items (default 50, max 200).
typeFilter by event type.
emailFilter by recipient address.
messageIdFilter by SES messageId.
sinceISO-8601 lower bound.

Event types

TypeSource
queuedScheduled send entered the queue
sentSES accepted the message
deliveredMailbox provider accepted delivery (via SNS)
bouncedHard or soft bounce (via SNS)
complainedRecipient marked as spam (via SNS)
openedTracking pixel loaded
clickedTracked link clicked
failedSES rejected the API call
rejectedPre-send check rejected (e.g. invalid From)