Skip to content
GridRouterhome

Search

Search providers, capabilities and pages

Docs

Rate limits

The limits that apply to your requests, the headers that describe them, and how to handle a 429.

Limits apply in layers. Every 429 says when to retry in retry_after_ms, and the request-rate limits name themselves in error.details.layer (ip, burst, recovery).

LayerApplies toLimitOn limit
ipAnonymous routes (catalog, /openapi.json, /llms.txt), per IP60 per 60 s429 rate_limited
burstEach API key150 per 10 s429 rate_limited, Retry-After: 10
ConcurrencyCalls in flight per workspace200 at once429 rate_limited, retry after 250 ms
recoveryRecovery-code redemption, per IP30 per 60 s, and a workspace lockout after 5 failed codes in 15 min429 rate_limited
Credit limits and budgetsKeys, agents, apps and runs with a spend capas configured403 budget_blocked
Vendor capacityEach vendor and credential, from the vendor's published limitsper vendor503 provider_capacity_unavailable
PlatformEveryone, under extreme load—503 grid_saturated with Retry-After

Dashboard sign-in, sign-up and password reset have their own per-IP limits.

Headers

Responses carry the IETF RateLimit-Policy header for the limiter that applied:

RateLimit-Policy: "burst";q=150;w=10

A 429 also carries RateLimit with nothing remaining and Retry-After:

HTTP/1.1 429 Too Many Requests
RateLimit: "burst";r=0;t=10
Retry-After: 10

These headers are exposed to browsers through CORS.

Vendor limits

Each vendor has a token bucket, a concurrency limit and a circuit breaker per credential, set from the vendor's published limits and your plan with them. When a vendor answers 429, GridRouter honors its Retry-After. A routed /v1/run moves on to the next vendor instead of waiting, and returns 503 provider_capacity_unavailable only when no vendor has capacity. Adding a fallback vendor key gives the governor a second bucket.

Handling a 429

  1. Wait retry_after_ms (or Retry-After seconds), with jitter.
  2. For bulk work, use lists or batch waterfall runs, which pace rows per vendor instead of failing them.
  3. Spread high-volume traffic across several keys only if they belong to separate services; the workspace concurrency limit still applies.

Next