Deliverability time series
Time-bucketed counts of sent, delivered, bounced, complained,
and suppressed, with a per-bucket delivery_rate. Numbers match
what you see in the SendOps dashboard. Buckets are aligned to UTC
(day = midnight UTC; week = Monday 00:00 UTC; month = first of month
00:00 UTC). Empty periods are not zero-filled — buckets with no
underlying events are omitted entirely.
delivered counts SES Delivery events: messages accepted by the receiving server (SMTP 250); not inbox placement.
Providers filter after accepting — a message can be accepted and still
be filed as spam or quarantined, and SES never sees that — so
delivery_rate is an acceptance rate, not an inbox rate.
Formula: delivery_rate = delivered / sent, a ratio in [0, 1]. When
sent is zero, delivery_rate is 0.0 (never null). suppressed
counts SES Reject events — sends SES dropped against the
account-level suppression list — not the size of your suppression
table.
Default window is the trailing 30 days. A from older than your
plan's retention returns 403 plan_retention_exceeded with a
retention_days extension.
Query parameters
from string<date-time> optional Window start (RFC 3339). Defaults to 30 days ago.
to string<date-time> optional Window end (RFC 3339). Defaults to now.
group_by string enum optional Time-bucket size for the report. UTC-aligned: day = midnight UTC;
week = Monday 00:00 UTC (ISO week); month = first of month
00:00 UTC. Buckets with no underlying events are omitted, not
zero-filled.
channel string optional Filter by channel — its UUID, or the channel's name, which is the handle GET /v1/channels returns and GET /v1/channels/{name} is keyed on. A value that names no channel in the org returns 422 validation_failed rather than an empty page, so a typo reads as a typo instead of as a channel with no traffic.
identity string optional Filter by sending identity. Accepts a full email address (the local-part is ignored — only the domain matches) or a bare domain.
Responses
Errors follow the RFC 7807 problem format — see the error reference.
data array<object> required Each entry in data:
period string<date-time> required sent integer<int64> required delivered integer<int64> required SES Delivery events in this bucket: messages accepted by the receiving server (SMTP 250); not inbox placement.
bounced integer<int64> required complained integer<int64> required suppressed integer<int64> required delivery_rate number<double> required delivered / sent: the share of sends accepted by the receiving server (SMTP 250); not inbox placement.
validation_failed Problem. When the refusal is about a
reference — a segment key, template slug, topic or attribute name the
organization does not have — it additionally carries validation_code,
field, line/column, missing, candidates and next_step, so a
client can correct the call without a second round of guessing. See
ValidationProblem.
application/problem+json code is internal_error. The
request_id field can be quoted to SendOps support to investigate.
application/problem+json