Rate Limits

Rate Limits

Limits by tier

TierRequests/minBurst
Trial (100 free credits)6010
Credit Packs (paid)30050
Metered (pay-as-you-go)30050
EnterpriseCustomCustom

Burst is the maximum number of concurrent requests in a single second.

Rate limit headers

Every response includes these headers:

HeaderDescription
X-RateLimit-LimitMaximum requests per minute for your tier
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the window resets

Handling 429 responses

When you exceed the rate limit, the API returns a 429 status with a RATE_LIMITED error code. The X-RateLimit-Reset header tells you when you can retry.

const res = await fetch(url, options);
 
if (res.status === 429) {
  const resetAt = parseInt(res.headers.get("X-RateLimit-Reset"));
  const waitMs = (resetAt * 1000) - Date.now();
  console.log(`Rate limited. Retrying in ${Math.ceil(waitMs / 1000)}s`);
  await new Promise(r => setTimeout(r, waitMs));
  // Retry the request
}

Best practices

  • Cache responses client-side. Image responses are cached server-side for 24 hours, so identical requests within that window are free.
  • Use geographic filters (country, state, city) to reduce response size and improve latency.
  • For bulk operations, space requests evenly rather than bursting. A 200ms delay between calls keeps you well under all tier limits.