Response headers
Every authenticated response includes:Handling 429
When you exceed the limit the API returns429 Too Many Requests:
X-RateLimit-Reset header to determine when to retry.
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
Request limits and how to handle 429 responses.
| Limit | Scope | Window |
|---|---|---|
| 100 req / 10 s | Per API key | Rolling 10 s |
| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests allowed in the window |
X-RateLimit-Remaining | Requests remaining in the current window |
X-RateLimit-Reset | Unix timestamp when the window resets |
429 Too Many Requests:
{
"http_code": 429,
"status": "failed",
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded. Try again after the reset time."
}
}
X-RateLimit-Reset header to determine when to retry.
async function fetchWithRetry(url, options, retries = 3) {
const res = await fetch(url, options);
if (res.status === 429 && retries > 0) {
const reset = res.headers.get('X-RateLimit-Reset');
const waitMs = reset ? (Number(reset) * 1000 - Date.now()) : 1000;
await new Promise(r => setTimeout(r, Math.max(waitMs, 0)));
return fetchWithRetry(url, options, retries - 1);
}
return res;
}