Email stats
GET /stats/emails returns aggregated send and engagement counts over a time range: totals
plus a dense series (empty buckets are zero rows, so it charts directly):
curl "https://api.sendsignal.dev/stats/emails?from=2026-08-01T00:00:00Z&bucket=day" \ -H "Authorization: Bearer ss_..."{ "from": "2026-08-01T00:00:00Z", "to": "2026-08-20T00:00:00Z", "bucket": "day", "totals": { "sent": 1200, "delivered": 1180, "bounced": 12, "complained": 1, "failed": 7, "opened": 640, "clicked": 210, "delivery_rate": 0.983, "bounce_rate": 0.01, "open_rate": 0.542, "click_rate": 0.178 }, "buckets": [ { "time": "2026-08-01T00:00:00Z", "sent": 80, "delivered": 79, "...": 0 } ]}Parameters
Section titled “Parameters”| Param | Meaning |
|---|---|
from / to |
RFC 3339 range (to exclusive). Defaults: last 30 days, ending now |
bucket |
day (default) or hour. Max range: 366 days for day, 31 for hour |
stream_id |
Scope to one message stream |
domain_id |
Scope to one sending domain |
tag |
Scope by tag: a key (campaign) or key:value (campaign:launch) |
opened and clicked count unique emails, not raw pixel loads or clicks. Rates are
derived: delivery_rate and bounce_rate divide by sent; open_rate and click_rate
divide by delivered.