Skip to main content

Rate Limits

Rate limits depend on your plan. The Free plan allows 10 requests/min and 100/day; Basic allows 60/min and 5,000/day; Pro allows 300/min and 50,000/day; Enterprise is custom. Every response carries X-RateLimit-* headers, and exceeding a limit returns 429 Too Many Requests with a Retry-After value telling you how long to wait.

Limits by Plan

PlanRequests/minRequests/dayMax Tokens/request
Free101004,096
Basic605,0008,192
Pro30050,00032,768
EnterpriseCustomCustomCustom

Rate Limit Headers

Every response includes rate limit information:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1708200000
Retry-After: 30
HeaderDescription
X-RateLimit-LimitMax requests per window
X-RateLimit-RemainingRemaining requests
X-RateLimit-ResetUnix timestamp when limit resets
Retry-AfterSeconds to wait (only on 429)

Handling Rate Limits

When you receive a 429 Too Many Requests:

  1. Read the Retry-After header
  2. Wait the specified duration
  3. Retry the request
async function callWithRetry(payload, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const res = await fetch(url, { method: 'POST', body: JSON.stringify(payload) });
if (res.status !== 429) return res;
const wait = parseInt(res.headers.get('Retry-After') || '5');
await new Promise(r => setTimeout(r, wait * 1000));
}
throw new Error('Rate limit exceeded after retries');
}

Common questions

What happens when I exceed the rate limit?

You receive a 429 Too Many Requests response with a Retry-After header, in seconds. Wait that long, then retry — see Handling Rate Limits for a ready-made retry helper.

How do I raise my rate limit?

Upgrade your plan (Free → Basic → Pro), or contact us for an Enterprise plan with custom per-minute, per-day, and max-token limits.