Skip to content
unzoi docs

Quotas and overage

A monthly allowance of requests, counted per tenant, resetting at the start of each calendar month (UTC).

PlanPriceIncluded requestsAt the ceiling
Free Free 1,000/month Stops
Build $29/mo 50,000/month Bills overage
Scale $199/mo 500,000/month Bills overage
Archive $799/mo 2,000,000/month Bills overage

What counts as a request

Every authenticated call to a query endpoint, on either surface. A tools/call over MCP costs exactly what the equivalent REST call costs — there is no separate budget and no discount.

CountsDoes not count
/search, /stories, /top-headlines, /doc/{id}, /similar/{id}, /account, and every MCP tools/call initialize and tools/list; /healthz, /readyz, /metrics; the public documentation endpoints

Errors count. A request that returns 404, or one whose filter value matches nothing, still consumed a rate-limit token and origin work. A 401 does not — it never reached the index.

The headers

x-quota-limit: 50000
x-quota-used: 12483
x-quota-remaining: 37517
x-quota-reset: 394200

used comes from durable counters rather than an in-memory tally, so every replica reports the same number and it matches the invoice. reset is seconds until the next calendar month.

On an unlimited account the quota headers are absent rather than zero — advertising a limit of 0 would read as "blocked".

Hard cap, or overage

What happens at the ceiling depends on one flag, reported by /account:

  • hard_cap: true — requests stop with 429 until the month resets. Only the free tier defaults to this, because there is no card on file. It is the safe default, not a punishment.
  • hard_cap: false — requests keep working and overage is billed. Paid tiers default here, so a traffic spike degrades your bill rather than your product.

Either behaviour can be set on any paid plan from the console.

Overage

PlanPer 1,000 requests beyond quota
Free Not offered — this tier stops instead
Build $1.00
Scale $0.60
Archive $0.40

Rounded up to the next whole thousand, matching how the figure is published. Volume buys a better unit rate at every step.

Hitting the ceiling

On a hard-capped key:

HTTP/1.1 429 Too Many Requests
retry-after: 394200
x-quota-remaining: 0

monthly quota exceeded and this key is set to stop at its quota rather than bill overage

Note this shares a status with the per-minute limit, and the two want completely different handling. Tell them apart with x-quota-remaining: 0 means the quota, and retrying will not help for another retry-after seconds — possibly days.

Over MCP the same refusal is a tool error carrying "code": "quota_exceeded", on an open session, so the agent can report it and keep working the moment the account is topped up. The exact shape is here.

How billing sees it

Usage is metered continuously and reported to Stripe against the account's subscription. The figures in /account, in the console, and on the invoice are the same durable counters — there is no separate accounting, and nothing rounds differently between them.