Skip to content

Guides

Rate limits

Requests are limited per API key, and every authenticated response tells you where you stand.

The limit

The default is 600 requests per minute, measured in a 60-second window. Accounts with a higher agreed throughput can have a different limit set on individual keys.

The headers

Every authenticated response carries your current position, not just the ones that get refused — so you can back off before you are refused rather than after.

X-RateLimit-Limit: 600
X-RateLimit-Remaining: 597
X-RateLimit-Reset: 1787654461

The OpenAPI document is served outside the authenticated path and carries no rate-limit headers at all.

When you exceed it

Exceeding the limit returns 429 with a Retry-After in seconds. The error is marked retryable; wait the stated time rather than retrying immediately.

HTTP/1.1 429 Too Many Requests
Retry-After: 43
X-Request-Id: 01K3F7XQZ8V2N4M6P8R0T5CJWE
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "This API key is limited to 600 requests per minute.",
    "retryable": true,
    "detail": { "limit": 600, "window_seconds": 60 },
    "request_id": "01K3F7XQZ8V2N4M6P8R0T5CJWE"
  }
}

Two different limits

There are two independent limits and they measure different things. The per-key limit counts HTTP requests. A separate account-wide limit counts recipients, and applies across every surface, not just the API.

The recipient limit works differently: it does not refuse the request. Recipients over the ceiling are dropped from an otherwise accepted batch and reported in rejections with a rate-limit reason code, which is another reason to read that array rather than trusting the status code.