Request limits
Per-minute request ceilings are returned by the live /api/v1/limits route. The exact values depend on the authenticated key's current tier and include both requests_per_minute and rungs_per_minute.
Public bearer access currently requires the Developer tier or higher. In the live tier mapping, Developer keys use the Growth envelope (300 requests per minute, 5000000 rungs per minute) and Premium keys use the Scale envelope (1000 requests per minute, 20000000 rungs per minute).
What comes back
{
"tier": "developer",
"requests_per_minute": 300,
"rungs_per_minute": 5000000,
"monthly_allowance": 10000000,
"monthly_used": 128400
}Monthly usage
Current-period usage is returned by /api/v1/usage, historical periods are returned by /api/v1/usage/history, and live allowance totals are returned by /api/v1/limits.
The usage response includes allowance, remaining, and estimated_cost_pence. The current implementation returns 0 for estimated cost rather than a live metered overage calculation.
For the exact JSON contract of those endpoints, use Usage API.
{
"period_start": "2026-04-01T00:00:00+00:00",
"period_end": "2026-05-01T00:00:00+00:00",
"input_rungs": 48100,
"output_rungs": 80300,
"total_rungs": 128400,
"request_count": 93,
"allowance": 10000000,
"remaining": 9871600,
"estimated_cost_pence": 0
}Rate limit headers
Successful non-stream responses emit the rate headers plus rung-usage headers. 429 responses carry a different envelope: x-ratelimit-limit, x-ratelimit-remaining, x-ratelimit-reset, and retry-after: but no x-evaesi-*-rungs headers, because no inference ran.
| Header | Description |
|---|---|
x-ratelimit-limit | Requests-per-minute ceiling |
x-ratelimit-remaining | Remaining requests in the current minute |
x-ratelimit-reset | Returned on 429 only. Seconds until the window resets (a delta, not a Unix timestamp) |
x-evaesi-input-rungs | Input bytes billed for the request |
x-evaesi-output-rungs | Output bytes billed for the request |
x-evaesi-total-rungs | Total bytes billed for the request |
x-evaesi-region-count | Regions activated; present only when the request set include_regions: true |
retry-after | Returned on 429 responses. Computed from the shared limiter's window and varies. Always read the header rather than assuming a fixed value |
Example headers
x-ratelimit-limit: 300
x-ratelimit-remaining: 287
x-evaesi-input-rungs: 29
x-evaesi-output-rungs: 118
x-evaesi-total-rungs: 147Handling a limit
You receive a 429 RATE_LIMITED response with retry-after, x-ratelimit-reset, and the remaining-request count. Wait the advertised number of seconds before retrying. If a request would exceed a project hard cap instead, the platform returns 402 BUDGET_EXCEEDED before inference is dispatched. See Error Codes for retry guidance.