Skip to main content
Two independent limits apply to every organization: Both are counted per organization, not per API key. Splitting traffic across keys does not raise either limit.
Rollout status. Organization-level burst limits and the X-RateLimit-*, X-Quota-*, and X-LLM-Stats-Plan headers are planned. Today, requests are limited per client and per route (/v1/models and /v1/rankings 60/min, /v1/scores 120/min, /v1/updates 30/min) and return 429 with Retry-After when exceeded. Those route limits remain in place as an abuse backstop after launch and are not the product quota. See the changelog.

Burst limits by plan

The counter increments on every authenticated request, including 304, 4xx, and 5xx responses. Requests rejected before authentication (missing or invalid key) are limited per client IP instead.

Response headers

Once plan enforcement ships, every authenticated /stats/v1/* response — including error responses — carries these headers. Until then they are absent (see the rollout status above).
Headers reflect the state after the current request was counted. A response with X-Quota-Remaining: 0 succeeded; the next data request will return 429.
Commercial organizations with an unlimited daily quota receive X-Quota-Limit: unlimited and X-Quota-Remaining: unlimited; X-Quota-Used still reports today’s count. Header values are read from a fast counter and may lag the exact number by a few requests under heavy parallelism. Treat them as guidance, not a ledger.

Handle 429 responses

A 429 carries the standard error envelope and tells you which limit you hit.
Recommended handling:
  1. Read error.limit_type.
  2. For burst, sleep for Retry-After seconds (add a little jitter) and retry. Bound the retries.
  3. For daily_quota, stop making data requests until reset_at. Retrying sooner returns the same error. Surface the condition to whoever can upgrade the plan.
  4. Never retry in a tight loop: 429 responses still count toward the burst limit.

Idempotency-Key

Send Idempotency-Key (up to 128 characters) on requests you might retry after a client-side timeout. Repeated requests with the same key from the same organization and API key on the same UTC day reserve one unit of daily quota, not one per attempt. The key does not affect the burst counter or the response body.
Keys are scoped to a single UTC day; reuse across days counts as new requests.

Caching headers

Data routes return standard HTTP caching headers. Using them is the cheapest way to save quota, because a 304 costs nothing.
ETag and Last-Modified ship with plan enforcement. Until then, data routes return 200 with Cache-Control only.

Check your quota

GET /v1/account is a meta route (exempt from the daily quota) that returns your plan and current usage.
plan.daily_quota is the base quota for your plan; usage.limit includes any verified-attribution bonus. usage.limit, usage.remaining, and plan.daily_quota are null for unlimited Commercial plans. usage.reset_at is the Unix timestamp of the next 00:00:00 UTC.
/v1/account is planned and ships with plan enforcement. Until then, view usage in the developer console.