Limits
| Limit | Default | Over it |
|---|---|---|
| Requests per minute, per project | 600, bursts of up to 100 | 429 too_many_requests with Retry-After |
| Input tokens per minute, per organization | 1,000,000 | 429 too_many_requests with Retry-After |
| Concurrent requests, per organization | 4 | 429 too_many_requests with Retry-After |
| Input tokens per UTC month, per organization | 100,000,000 | 429 insufficient_quota, until the next UTC month |
A request’s input tokens count once it has finished. To see the limits in force for a project,
open Service quotas in the console, run ezgh inference limits --project <project>, or
read them from the API (inference.limits.read). To raise a
limit, contact support.
Each model also has per-request limits, its properties in the catalog: for
qwen3-embedding-0.6b, 128 inputs per request, 8,192 tokens per input and a 1 MiB body.
Rate-limit headers
Responses carry OpenAI’s rate-limit headers, for the project’s requests and the organization’s input tokens per minute:
| Header | Value |
|---|---|
x-ratelimit-limit-requests, x-ratelimit-limit-tokens |
The limit per minute |
x-ratelimit-remaining-requests, x-ratelimit-remaining-tokens |
What’s left now |
x-ratelimit-reset-requests, x-ratelimit-reset-tokens |
How long until it’s back to the limit |
Errors
Errors use OpenAI’s body, with EZGH’s stable code in code, so the OpenAI SDKs raise their usual
exceptions:
{ "error": { "message": "Input 3 is longer than the model's 8192 tokens", "type": "invalid_request_error", "param": "input[3]", "code": "input_too_long" } }| Status | type |
code |
Meaning |
|---|---|---|---|
| 400 | invalid_request_error |
invalid_request |
The request isn’t valid; param names the field |
| 400 | invalid_request_error |
token_input_unsupported |
input is token IDs; send text (LangChain) |
| 400 | invalid_request_error |
input_too_long |
An input is over the model’s tokens per input; param is input[<i>], or input when the input isn’t known |
| 400 | invalid_request_error |
dimensions_out_of_range |
dimensions is outside the model’s range |
| 401 | authentication_error |
unauthenticated |
No credential, or one that isn’t valid |
| 403 | permission_error |
access_denied |
The credential’s owner lacks the action on the project |
| 404 | not_found_error |
not_found |
No such organization or project, or you aren’t in it |
| 404 | not_found_error |
model_not_found |
No such model, or it isn’t offered by Inference |
| 409 | invalid_request_error |
organization_deletion_pending |
The organization is being deleted |
| 410 | invalid_request_error |
model_retired |
The pinned version is retired |
| 413 | invalid_request_error |
payload_too_large |
The body is over 1 MiB |
| 429 | rate_limit_error |
too_many_requests |
A rate or concurrency limit; retry after Retry-After |
| 429 | insufficient_quota |
insufficient_quota |
The organization’s monthly input tokens are used up. It has no Retry-After, and x-should-retry: false tells the OpenAI SDKs not to retry |
| 500 | api_error |
internal_error |
An error on our side; retry |
| 502 | api_error |
inference_failed |
The model failed; retry |
| 503 | api_error |
capacity_unavailable |
No capacity right now; retry after Retry-After |
| 503 | api_error |
unavailable |
The service is briefly unavailable; retry after Retry-After |
| 504 | api_error |
inference_timeout |
The request took longer than 60 seconds |
Nothing is metered for a request that fails.