Analytics & Events
Rolled-up daily metrics + raw event stream for every send.
Get analytics summary
GET /api/analytics?days=30
Scopes: events:read
{
"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:
| Param | Description |
|---|---|
cursor | From a previous response's nextCursor. |
limit | Max items (default 50, max 200). |
type | Filter by event type. |
email | Filter by recipient address. |
messageId | Filter by SES messageId. |
since | ISO-8601 lower bound. |
Event types
| Type | Source |
|---|---|
queued | Scheduled send entered the queue |
sent | SES accepted the message |
delivered | Mailbox provider accepted delivery (via SNS) |
bounced | Hard or soft bounce (via SNS) |
complained | Recipient marked as spam (via SNS) |
opened | Tracking pixel loaded |
clicked | Tracked link clicked |
failed | SES rejected the API call |
rejected | Pre-send check rejected (e.g. invalid From) |