Rate limits & quotas
Limits are enforced per API key. Exceeding either the monthly or daily limit returns a 429 RATE_LIMITED response.
REST API
| Plan | Monthly requests | Daily limit | Price |
|---|---|---|---|
| Free | 500 | 50 | £0 |
| API Starter | 5,000 | Unlimited | See pricing |
| API Pro | 25,000 | Unlimited | See pricing |
| API Business | 100,000 | Unlimited | See pricing |
Monthly quotas reset on the first of each month at 00:00 UTC. Daily caps reset at 00:00 UTC every day.
MCP server
| Plan | Queries | Resets | Price |
|---|---|---|---|
| Free | 50 / month | Monthly | £0 |
| MCP Pro | 200 / day | Daily | £20/mo — see pricing |
Free MCP quota resets on the first of each month at 00:00 UTC. MCP Pro daily quota resets at 00:00 UTC every day. Team per-seat quota resets daily at 00:00 UTC.
Agent plans
Agent plans have two independent quotas: an OAuth quota (monthly, shared with interactive MCP use) and a service-token quota (monthly, consumed only by automated pipeline calls). Exceeding either returns a 429 RATE_LIMITED response for that quota type — the other bucket is unaffected.
| Plan | OAuth quota | Service-token quota | Price |
|---|---|---|---|
| Agent Starter | 5,000 / month | 5,000 / month | £49/mo — see pricing |
| Agent Pro | 25,000 / month | 25,000 / month | £149/mo — see pricing |
Both OAuth and service-token quotas reset on the first of each month at 00:00 UTC. Service tokens are available on Agent plans only — see Authentication → Service tokens.
Handling 429 responses
When you exceed your limit, the API responds with a 429 and a Retry-After header containing the number of seconds until your quota resets.
HTTP/1.1 429 Too Many Requests
Retry-After: 3600
Content-Type: application/json
{
"error": {
"code": "RATE_LIMITED",
"message": "Daily request quota exceeded. Resets at 00:00 UTC.",
"correlationId": "req_01j8x4k2m9n..."
}
}Always read the Retry-After value rather than hardcoding a backoff duration — the value differs between monthly and daily limit exhaustion.
Monitoring usage
Current usage is visible in Dashboard → Usage. Usage data is updated in near-real time.
To avoid hitting limits unexpectedly, implement a counter in your application and check the Retry-After header on every 429 rather than assuming a fixed window.
Need higher limits? See all plans → For error code details, see the API troubleshooting →