Rate limits
How many emails you can send how fast. Two independent caps. Neither is keyed by IP — only account and API key. If our counter store is down we refuse (503), we never fail open.
Per-minute bucket
Default 120 requests per minute per key (overridable per key at mint). Exceeded → 429 with body Rate limit exceeded.
HTTP/1.1 429 · Retry-After: 42 X-RateLimit-Limit: 60 X-RateLimit-Remaining: 0 { "message": "API rate limit exceeded: used 60 of 60 requests this minute. Wait for the next minute window, or raise the key/plan API rate limit.", "type": "limit_exceeded", "limit": { "dimension": "api_rate", "binding": "plan", "limit": 60, "used": 60, "lift": "Wait for the next minute window, or raise the key/plan API rate limit." } }
Daily send limit
Plan / account / application / member min() chain. Only counts accepted sends. Exceeded → 429 with Daily send limit exceeded. Monthly quota is commercial signal only — overage sets over_monthly_quota: true on the 202 and does not block the send.
HTTP/1.1 429 · Retry-After: 60 { "message": "Daily send limit exceeded: plan daily send limit — used 1,000 of 1,000. Upgrade your plan to raise the daily send cap, or wait until midnight (UTC).", "type": "limit_exceeded", "limit": { "dimension": "daily_send", "binding": "plan", "limit": 1000, "used": 1000, "lift": "Upgrade your plan to raise the daily send cap, or wait until midnight (UTC)." } }
Response headers
Every authenticated API response includes X-RateLimit-Limit and X-RateLimit-Remaining. Captured LOCAL on a successful POST: Limit: 120 · Remaining: 119. On 429, honour Retry-After and reuse the same Idempotency-Key.