X-RateLimit-* headers. A 429 Too Many Requests can come from one of the sources below. In every case, wait for Retry-After when it is present and back off before retrying.
Where a 429 comes from
Per-model success limit
Some models cap how many successful calls one account can make to that model within a rolling window of hours. Failed calls do not count toward the limit. Most models have no such limit. When the cap is reached, the gateway returns429 with a Retry-After header (seconds) and this body:
reset_at is when the oldest counted call leaves the window and a slot frees up.
Handling 429 responses
1
Honor Retry-After
When the header is present, wait at least that many seconds before the next attempt. Never retry immediately.
2
Use exponential backoff with jitter
Without
Retry-After, start around 1 second, double the delay on each consecutive 429, add ±25% jitter, and cap the delay. See Retry guidance.3
Switch models for success limits
model_success_rate_limit_exceeded is per model. If you cannot wait until reset_at, send the request to a different model.4
Queue instead of looping
For batch workloads, queue requests and drain them at a steady rate rather than retrying in a tight loop.
Example: retry on 429
Need more capacity?
If a per-model limit or upstream throttling blocks a production workload, contact developer@aisa.one with the model or endpoint, your expected peak request rate, and a short description of the use case.Related
Error Codes
Response formats and retry guidance.
Usage Logs
Per-request status and billing in the dashboard.