Rate limits
Quotas apply per API key and per brand, grouped as below. Over a quota the API answers RATE_LIMIT_EXCEEDED with a 429.
Requests are subject to quotas applied per API key and per brand, grouped as shown below. When a quota is exceeded, the API returns RATE_LIMIT_EXCEEDED; the response's details.retry_after_seconds indicates how long to wait before retrying, and details.scopes identifies the quota groups that were exceeded. The exact limit for each group is available in the dashboard.
Requests made with an API key
| Group | Scope (details.scopes) |
|---|---|
| General | global |
| AI Analysis | ai_analysis |
| Data Records | data_records |
Requests an AI client makes
| Group | Scope (details.scopes) |
|---|---|
| General | mcp |
| AI Analysis | mcp.ai_analysis |
| Data Records | mcp.data_records |
Handling a 429
The error carries details.retry_after_seconds, which is how long to wait, and details.scopes, which names the groups that were hit. Every client retries a safe request on a 429 for you, honouring that wait. Writes are never retried, because the API publishes no idempotency key.
Reading usage.retrieve costs no quota, so an agent can check what is left before spending it.