Quotas and overage
A monthly allowance of requests, counted per tenant, resetting at the start of each calendar month (UTC).
| Plan | Price | Included requests | At 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.
| Counts | Does 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 with429until 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
| Plan | Per 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.