Two budgets, both counted
Every request spends from two budgets at once:- the key’s own, so one runaway script cannot use up everything;
- the workspace’s, shared by every key in the workspace and every MCP sign-in connection, so ten keys cannot multiply the workspace’s ceiling.
There is also a ceiling per calling address on the
/v1 routes. It sits well above a key’s budget, so a single job meets the key and workspace budgets first.
Report pages weigh more
A page of the brands, domains or URLs report costs about as much to build as several ordinary reads, so it counts as several requests against both budgets. The table above gives the weight. The MCP report tools count the same as their REST routes, and theRateLimit-* headers on the response include the whole weight. An MCP report tool that would go over a budget, or that is refused as busy (below), does not get an HTTP 429 or Retry-After: it answers with an error result whose text starts rate_limited or busy.
One report at a time per workspace
Run report requests one after another, not side by side. While one of your workspace’s report requests is running, a second one gets503 with the code busy at once. When the API is already building as many reports as it allows for everyone, a new request waits briefly and then gets busy too. busy is not a rate limit: your budgets are untouched, and the Retry-After header says how many seconds to wait before trying again. (A 503 with the code query_timeout is different: the request asked for too much at once, and retrying it unchanged is likely to time out again. See Errors.)
Reading your budget
Every authenticated response carries:
A refused request is
429 with the code rate_limited, and a Retry-After header giving the seconds to wait.
Limits only widen
Every limit in the table is a floor. Inside v1 a limit may be raised and is never lowered, so a job that fits today keeps fitting. The weight of a report page is a cost rather than a limit, so it is not part of that promise. See Versioning.Related
Reports
Budgets in prompt-engine-days, and paging.
Errors
rate_limited, busy and query_timeout.Pagination
Cursors and page sizes.
Pulling data nightly
A daily job that fits on every plan.