How limits are measured
Every limit is enforced at three scopes — organization, project, and API key — and a request counts against all three.
Tiers
Your tier is the higher of two things:- your subscription plan, and
- the spend tier you earn from your total lifetime payments.
A subscription sets your tier immediately. Spend accumulates over time and graduates you automatically — a free account that has paid $200 in usage reaches Tier 3 without a subscription.
Limits by tier
Values below are per API key.
Project limits are 1.5× and organization limits are 2× the per-key request and token values. Concurrent-request limits are set per scope:
Rate limit headers
Every response reports your current usage. Header names match the OpenAI API.
Reset values are durations, like
42s. The request and token headers report the scope — key, project, or organization — that is closest to its limit.
When you hit a limit
A request over a limit returns429 Too Many Requests with a Retry-After header (seconds to wait). The error body follows the OpenAI format on /v1/chat/completions and /v1/responses, and the Anthropic format on /v1/messages.
Error response body
Error response body
Retry-After when it is present: wait at least that long, then add a small random delay so multiple clients do not retry at the same time. If it is absent, fall back to exponential backoff with jitter. Cap both the attempt count and the total retry time. Do not retry 401, 402, or 403; those require you to fix the key, add credits, or change scope.
Handle a 429
The official SDKs retry eligible429s automatically and honor Retry-After. For most workloads, raise the retry count instead of writing your own loop. Expand an example below.
OpenAI SDK
OpenAI SDK
The OpenAI SDKs retry
429 and transient errors with exponential backoff (2 attempts by default). Raise max_retries for bursty traffic.Pydantic AI
Pydantic AI
Pydantic AI calls abliteration.ai through the OpenAI SDK, so it inherits the same retry and For per-status retries or custom backoff, pass a retrying
Retry-After handling. Configure it on the AsyncOpenAI client you pass to the provider.http_client. See OpenAI-compatible models in the Pydantic AI docs.Anthropic SDK
Anthropic SDK
On
/v1/messages, the Anthropic SDKs retry 429 and honor Retry-After the same way.Custom backoff
Custom backoff
To manage retries yourself, add exponential backoff with jitter. Each example sets Tenacity and backoff are third-party tools; abliteration.ai makes no guarantees about their reliability or security. The manual example is a starting point, not a complete solution; as written it honors neither
max_retries=0 so the SDK’s own retries do not stack.Retry-After nor a total-time cap.Reduce rate-limit errors
- Read
x-ratelimit-remaining-requestsandx-ratelimit-remaining-tokensand slow down before you reach zero. - Cap retry attempts and total retry time. Every attempt, including failed ones, counts against your limit.
- Raise your limits by subscribing or spending more; whichever tier is higher applies.