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
| Plan | Requests/min | Requests/day | Max Tokens/request |
|---|---|---|---|
| Free | 10 | 100 | 4,096 |
| Basic | 60 | 5,000 | 8,192 |
| Pro | 300 | 50,000 | 32,768 |
| Enterprise | Custom | Custom | Custom |
Rate Limit Headers
Every response includes rate limit information:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1708200000
Retry-After: 30
| Header | Description |
|---|---|
X-RateLimit-Limit | Max requests per window |
X-RateLimit-Remaining | Remaining requests |
X-RateLimit-Reset | Unix timestamp when limit resets |
Retry-After | Seconds to wait (only on 429) |
Handling Rate Limits
When you receive a 429 Too Many Requests:
- Read the
Retry-Afterheader - Wait the specified duration
- 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.