Core concepts

Rate limits

.md

Per-key request limits and 429 handling.

Each API key is limited to a number of requests per minute based on your workspace plan. Limits are counted per key in one-minute windows and are approximate, so do not rely on reaching the exact number.

PlanRequests per minute (per key)
Free120
Starter600
Pro1,500
Enterprise6,000

Rate limit headers

When the limit is exceeded, the API responds with HTTP 429 and error "Rate limit exceeded". These headers are included on 429 responses only (successful responses do not carry them):

HeaderDescription
X-RateLimit-LimitMaximum requests per minute for your plan.
X-RateLimit-RemainingRequests left in the current window (0 on a 429).
X-RateLimit-ResetUnix timestamp (seconds) when the window resets.
Retry-AfterSeconds to wait before retrying.
429 response
JSON
01{
02 "error": "Rate limit exceeded",
03 "message": "You have exceeded the limit of 120 requests per minute for your plan (free). Retry after 12 seconds."
04}
UTF-8 · LF · JSONtickos.dev

On a 429, wait Retry-After seconds before retrying. If you retry in a loop, add exponential backoff (e.g. 1s, 2s, 4s) up to a maximum delay.

Not the same as plan quotas
Plan quotas (monthly, daily or hourly email limits, storage, recipients per email) also return 429, but with error "Limit exceeded" and no rate limit headers. See Errors for details.
Need more headroom?
Upgrade your plan from Settings > Billing to raise the per-minute limit.