Rate posture
Honest current state, no marketing fog: what limits exist today, what is reserved for later, and where the numbers live.
Today, at beta
- No per-key limits. A valid key sends as fast as your workload wants; we do not throttle individual keys during beta.
- A platform-wide capacity ceiling exists. During beta the shared upstream capacity is approximately 50 requests / 2 million tokens per 5-second window, platform-wide across all customers. Bursts beyond it are absorbed by provider failover; sustained traffic beyond it surfaces as
503 no_provider_availableonce the chain is exhausted (see errors). This number is published here so you can size against reality, and it will move — upward — as the platform scales. - A 503 today means back off and retry — the envelope is standard and no state was created.
- The
429 rate_limit_errorenvelope has one live emitter: two concurrent requests against the samesession_id— the second waits behind a bounded lock (30 s default) and then answers429 rate_limitedwith nothing stored (see sessions). Per-key throttling remains future work; these pages will say so when it lands.
Reserved headers, documented now
These response header names are reserved and documented from day one, so your client can wire the plumbing once:
| Header | Meaning | Status |
|---|---|---|
x-ratelimit-limit-requests |
requests allowed per window | reserved — absent until limits are enforced |
x-ratelimit-limit-tokens |
tokens allowed per window | reserved — absent until limits are enforced |
x-ratelimit-remaining-requests |
requests left in this window | reserved — absent until limits are enforced |
x-ratelimit-remaining-tokens |
tokens left in this window | reserved — absent until limits are enforced |
x-ratelimit-reset-requests |
seconds until the request window resets | reserved — absent until limits are enforced |
x-ratelimit-reset-tokens |
seconds until the token window resets | reserved — absent until limits are enforced |
Their absence today is not a contract break — they are present in the API contract and will start being populated when per-key rate limiting lands. Until then, the only throttles are the platform-wide ceiling above and the same-session lock wait.
Attribution headers
HTTP-Referer and X-Title are accepted on any request, logged for abuse triage, and change nothing about your request's behavior. Send them if your client naturally carries them.