Operate
Limits and errors
Design clients that respect their assigned capacity, expose failures clearly, and never turn a retry into duplicate work.
Your limits
A CostIQ key may carry its own request-per-minute, token-per-minute, concurrency, expiry, model, and estimated-spend controls. Use the limits supplied with your key; they can be lower than organization capacity. Keys in a dedicated deployment share the organization envelope shown by the x-ratelimit-team-* headers.
Requests admitted during the configured window.
Combined input and output tokens during the configured window.
In-flight requests, including streams that have not ended.
Estimated USD usage policy, not an invoice or card balance.
HTTP errors
400Invalid inputMalformed JSON, an unsupported policy field, or another invalid request.
401Authentication failedThe key is missing, invalid, expired, or revoked.
403Access deniedThe model, route, or edge request is not allowed.
404Route unavailableThe requested application route does not exist.
413Request too largeThe request exceeds the 15 MiB body limit.
429Limit reachedA request, token, concurrency, budget, or authentication-attempt limit was reached.
502 / 503Service unavailableThe inference upstream or authentication service could not complete the request.
Retry safely
- Respect
Retry-Afterwhenever it is present. - Use capped exponential backoff with jitter for transient
429,502, and503responses. - Do not retry
400,401, or403without correcting the request or credential. - Do not blindly retry tool calls or other work that may have side effects.
Request constraints
- Request bodies must be JSON and no larger than 15 MiB (15,728,640 bytes).
- The transport limit is separate from the model's token context window. JSON structure, tool definitions, and other request fields consume body bytes.
- Only
GET /v1/models,POST /v1/responses, andPOST /v1/chat/completionsare public. - Query strings are rejected except for Codex's exact
client_versionmodel-catalog query; customer-controlled routing or metadata fields remain rejected. - Use only model aliases returned for your key.