Rate limits
Docs / Sending

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.

response body
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.

response body
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.