Sign in

Rate limits

Understand the request limits for each environment and how to handle 429 Too Many Requests responses gracefully.

Limits by environment

EnvironmentRequests / minuteRequests / day
Sandbox601,000
Production300Unlimited

Limits are applied per organization, across all API keys.

Rate limit headers

Every API response includes these headers:

HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the window resets

Handling 429 responses

When you receive a 429, wait until the window resets before retrying. Use exponential backoff with jitter for robustness:

JavaScript
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;
}