Skip to main content
Errors are returned as JSON with a stable shape:

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.message with type: 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/messages uses Anthropic’s error shape. The Messages surface returns {"type": "error", "error": {...}} with Anthropic error types instead of the table above — not_found_error for an unknown model, api_error for upstream/provider failures — and max_tokens is required there (400 if missing).

Not supported yet

  • The documented endpoints only. The gateway implements Chat Completions, Responses, Messages, Gemini-native generateContent, image generation, embeddings, and audio transcription. Other OpenAI / Anthropic endpoints (assistants, batches, fine-tuning, files, text-to-speech, etc.) are not implemented, and models do not produce speech or 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 fixed model catalog on the shared (operator) key path. See Models & pricing for what’s live. You can route any supported model through your own credential instead — 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.