Understand the request limits for each environment and how to handle
429 Too Many Requests responses gracefully.
| Environment | Requests / minute | Requests / day |
|---|---|---|
| Sandbox | 60 | 1,000 |
| Production | 300 | Unlimited |
Limits are applied per organization, across all API keys.
Every API response includes these headers:
| 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 |
When you receive a 429, wait until the window resets before retrying.
Use exponential backoff with jitter for robustness:
async function fetchWithRetry(url, options, retries = 3) {
const response = await fetch(url, options);
if (response.status === 429 && retries > 0) {
const reset = response.headers.get('X-RateLimit-Reset');
const waitMs = reset
? Math.max(0, Number(reset) * 1000 - Date.now())
: 1000 * (4 - retries);
await new Promise(r => setTimeout(r, waitMs + Math.random() * 200));
return fetchWithRetry(url, options, retries - 1);
}
return response;
}
Start typing to search...
Select the APIs you want to integrate. A ready-to-use Markdown file with full API specs and a project context template will be generated and downloaded. Paste it into your AI assistant to get started instantly.