Get metrics
GET /v1/metrics
Optional from and to ISO-8601 timestamps bound the window; omit them for a sensible recent default. The response echoes the resolved range so you always know which window the numbers describe.
The response
Three fields: the resolvedrange, a totals map keyed by event type, and a daily array of { date, counts } — one bucket per day, each with its own counts map.
Response
Counts are keyed by event type. Keys in
totals and each day’s counts are event types — sent, delivery, bounce, complaint, open, click, and the rest. A type with no events in the window is simply absent, so read defensively (treat a missing key as 0).Computing rates
Rates are ratios oversent. Compute them yourself from totals so the denominator is unambiguous:
- Delivery rate —
delivery / sent. The share that reached the mailbox provider. Higher is better. - Bounce rate —
bounce / sent. The single most important number to watch. Keep it well under 4%. - Complaint rate —
complaint / sent. Spam-button presses. Keep it under 0.1%. - Open / click rate — engagement signals. Useful trends, but treat the absolutes with care (privacy proxies inflate opens; not every client loads tracking).
Charting over time
Thedaily series is built for time-series charts. Map each bucket the same way you mapped the totals to get a rate-over-time line:
Reading the numbers
High bounce usually means a stale or unverified recipient list — clean it and lean on suppressions. High complaints usually mean unwanted mail — tighten consent and make unsubscribing easy. The metrics endpoint is your early-warning system; check it before a provider does it for you.Related
Deliverability
What drives these rates and how to keep them healthy.
Webhooks
The per-event stream behind the aggregates — react in real time.
Suppressions
Keep bounces and complaints from repeating.
Metrics API
Parameters and the full response schema.
