Skip to main content

Getting Started

Rate Limits

Rate limits are applied per API key. Limits vary by plan.

Limits by Plan

PlanRequests/minCalls/dayNotes
FreeNo API access
LiteNo API access
Starter30500
Pro602,000
Team12010,000Per workspace

Rate Limit Headers

Every API response includes headers indicating your current usage.

HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the window
X-RateLimit-RemainingRequests remaining in the window
X-RateLimit-ResetUnix timestamp when the window resets
Retry-AfterSeconds to wait before retrying (only on 429)

Handling 429 Too Many Requests

When rate limited, the API returns HTTP 429 with a Retry-After header. Use exponential backoff to retry.

TypeScript — exponential backoff
async function fetchWithBackoff(url: string, options: RequestInit, retries = 3) {  for (let attempt = 0; attempt < retries; attempt++) {    const res = await fetch(url, options);
    if (res.status !== 429) return res;
    const retryAfter = Number(res.headers.get("Retry-After") ?? 1);    const delay = retryAfter * 1000 * Math.pow(2, attempt);    await new Promise((r) => setTimeout(r, delay));  }  throw new Error("Rate limit exceeded after retries");}