Rate Limits

Limits protect the platform and keep latency low for everyone. Handle 429s with exponential backoff.

Limits by plan

PlanRequests / minCalls / monthBurst
Free605,00010
Pro600250,000100
Scale3,0002,000,000500
EnterpriseCustomUnlimitedCustom

Response headers

Every response includes headers describing your current limit state:

X-RateLimit-Limit: 600
X-RateLimit-Remaining: 418
X-RateLimit-Reset: 1723651200

Handling 429s

When you exceed a limit you'll receive a 429 with a Retry-After header. Back off and retry:

backoff.ts
async function withRetry(fn: () => Promise<Response>, max = 5) {
  for (let i = 0; i < max; i++) {
    const res = await fn()
    if (res.status !== 429) return res
    const wait = Number(res.headers.get("Retry-After") ?? 2 ** i)
    await new Promise((r) => setTimeout(r, wait * 1000))
  }
  throw new Error("rate limited")
}