Skip to main content
Every response tells you exactly where you stand. Check your limit with one request:

Limits

API keys can carry custom per-key limits. See authentication.

How counting works

  • Limits are enforced in fixed 1-second windows. The counter is shared across server instances, so the limit holds globally, not per instance.
  • Every request that passes authentication consumes one token, regardless of outcome. The rate-limit decision happens before request validation, so a 400 validation_error still costs a token — hammering with malformed requests will hit 429. Requests rejected with 401 or 403 during authentication are refused before the limiter and do not consume a token.
  • On the MCP server, each JSON-RPC message counts as one request.

Response headers

The three X-RateLimit-* headers are set on every response that reaches the rate limiter — success and error alike, including 400s and 429s. The only exceptions are requests rejected during authentication (401/403), which are refused before rate limiting runs and carry no X-RateLimit-* headers.
There is no Retry-After header. On a 429, wait until X-RateLimit-Reset — at most about one second away — or use exponential backoff. The SDKs and CLI already do this: they retry 429s (and 5xxs) automatically with exponential backoff, so you only need to handle 429 yourself when calling the raw API.
For direct HTTP agents, keep retries narrow:
Do not fan out retries after a 429. Retry the same request once after the reset window, then continue with fewer concurrent calls.

The access block in response bodies

Every success envelope mirrors the headers in an access block:
Two caveats: search responses at response.verbosity: "ids_only" shed the access block to save tokens, and error envelopes never include it. The X-RateLimit-* headers are always present on responses that reach the rate limiter and are the source of truth.

The 429 response

When you exceed your limit, the request fails with status 429, X-RateLimit-Remaining: 0, and the standard error envelope:
See errors for the full envelope contract.

Abuse controls

Caesar’s limits are deliberately permissive: abuse is handled by detection and response — throttling or blocking abusive traffic patterns — rather than preventive caps on everyone else.