Status codes
Notes
- 402 is a pre-check. The gateway verifies a positive balance before calling the provider, so an empty balance fails fast and costs nothing.
- 502 carries the upstream message. When a provider rejects a request (e.g. its
own rate limit or billing), the gateway forwards the provider’s message under
error.messagewithtype: upstream_error. - Streaming errors. If an error happens mid-stream, the gateway emits a final SSE event describing it and then closes the stream.
/v1/messagesuses Anthropic’s error shape. The Messages surface returns{"type": "error", "error": {...}}with Anthropic error types instead of the table above —not_found_errorfor an unknown model,api_errorfor upstream/provider failures — andmax_tokensis required there (400if missing).
Limitations
- The documented endpoints only. The gateway implements Chat Completions,
Responses, Messages, Gemini-native
generateContent, image generation, embeddings, audio transcription, and text to speech. Other OpenAI / Anthropic endpoints (assistants, batches, fine-tuning, files, etc.) are not implemented, and models do not produce file output. - Audio and video input is modality-gated. Only models that declare the modality accept it — today the Gemini family; see Audio & video input.
- No reranking endpoint.
- A curated model catalog. See Models & pricing for what’s live;
GET /v1/modelsis the complete list and anything outside it is a404— except a bare id on an endpoint that natively speaks one provider (a bare Anthropic id on/v1/messages, a bare Google id ongenerateContent), which is prefixed with that provider before lookup. You can route any supported model through your own credential — see BYOK. - No rate limiting. The gateway does not impose request or token rate limits;
your effective limits are the upstream providers’ (surfaced as
502 upstream_error). Spend is bounded by your credit balance.

