Quotas and rate limits
These numbers appear in several places — the pricing page, the MCP connector guide, error messages. They are documented here; anywhere else should link to this page rather than restate them, because a second copy is a copy that drifts.
Burst limit — everyone
30 requests per 60 seconds. This applies to every caller on every tier, authenticated or not. It is DDoS protection and key-sharing detection, not a commercial limit.
Exceeding it returns 429 with Retry-After: 60.
Daily limits
| Caller | Calls per day | Notes |
|---|---|---|
| Anonymous (no key) | 50 per IP | validate and dsl-reference only |
| Free tier key | 25 | Counted per user, not per key |
| Pro tier key | unlimited | Burst limit still applies |
| Enterprise key | unlimited | Burst limit still applies |
Anonymous access exists so an agent or a script can try the API before anyone signs up. It covers the endpoints that do not need a key — see Overview.
The free-tier counter is keyed to your user account, not to the key. Rotating a key gives you a new secret, not a new day's allowance.
Keys per account
| Tier | Active keys |
|---|---|
| Free | 1 |
| Pro | 1 |
| Enterprise | 5 |
"Active" means not revoked. An expired-but-not-revoked key still occupies its slot — rotate and extend it, or revoke it first.
Response headers
Every rate-limited response carries its budget, so a well-behaved client never has to guess:
| Header | Meaning |
|---|---|
X-RateLimit-Limit | The applicable limit |
X-RateLimit-Remaining | Calls left in the current window |
X-RateLimit-Reset | ISO-8601 instant when the window resets |
Retry-After | Seconds to wait — present on 429 |
X-API-Key-Tier | The tier the request was served under |
Anonymous responses additionally carry X-Upgrade-URL and X-Upgrade-Hint.
Behaviour under load
The limiter fails open. If its backing store is briefly unreachable, requests are allowed and a warning is logged, rather than the API going down because the thing counting requests went down.
On a horizontally-scaled deployment without a shared store, each replica counts independently — so effective limits multiply by the replica count. The hosted service uses a shared store; this only matters if you self-host.
Other limits
Uploading your own NodeSet2 files (BYOM) is bounded separately, and deliberately not by tier:
| Limit | Value |
|---|---|
| Largest single NodeSet2.xml | 25 MB |
| Dependencies per model | 20 |
| Total uploaded per user | 200 MB |
Signed dependency download URLs live for 5 minutes.