Skip to main content
GoModel exposes OpenAI-compatible and Anthropic-compatible APIs, provider-native passthrough, and a set of operations endpoints. Admin and dashboard routes are documented separately in Admin Endpoints. For request and response details, see the dedicated guides: Responses API, Conversations API, Anthropic Messages API, Audio API, Images API, and Usage API.

OpenAI-Compatible API

Realtime translation sessions

Speech translation models (OpenAI gpt-realtime-translate) run on their own session surface, so the gateway mirrors it. Connect to /v1/realtime/translations — or /v1/realtime?intent=translation, which is the same session — and set the target language after the socket opens:
Translation sessions use their own event names (session.input_audio_buffer.append in, session.output_audio.delta and session.output_transcript.delta out) and accept 24 kHz PCM16 audio. Frames relay verbatim, so any client written against the provider’s translation API works unchanged. Translation is an OpenAI surface today. Routing a translation session to a provider that does not serve one fails with a 400 rather than quietly opening an ordinary conversation session in its place. These sessions report no usage events, so the gateway prices them from the input audio it relays, at the model’s per-second input rate. WebRTC translation calls are the exception: their media never transits the gateway, so they are not metered.

Realtime transcription sessions

Transcription sessions (/v1/realtime?intent=transcription) pick their model in session.update rather than in the URL; the model query parameter routes the request and the gateway pins the in-session selection to it. Most transcription models report usage in their conversation.item.input_audio_transcription.completed event — tokens, or seconds for whisper-style models — and that report prices the session. A model that omits usage there reports nothing, so the gateway falls back to the input audio it relayed, at the per-second input rate. The fallback applies only when a session reported no usage of its own, so a session is never billed twice. As with translation, WebRTC calls carry their media outside the gateway and are not metered.

Anthropic-Compatible API

Gateway Extensions

Key verification

GET /v1/auth/verify lets a service in front of the gateway check an API key without holding a copy of the key list. It is disabled by default; enable it with AUTH_VERIFY_ENABLED=true (server.auth_verify_enabled). It is not an /admin route, so it keeps working when the admin API is disabled.
An unknown, disabled, or expired key is rejected by the gateway’s normal authentication with 401, so a 200 means the key authenticates. method says which mechanism accepted it: api_key is a managed key stored in the database, master_key the bootstrap key from GOMODEL_MASTER_KEY. key_id and user_path are present only for managed keys bound to them.
Where the gateway admits unauthenticated callers — no authentication configured at all, or a route an extension excluded from it — there is no key to confirm, and the endpoint answers 200 with {"valid": false, "method": "none"} rather than claiming the key is valid. A status-code consumer such as Caddy’s forward_auth treats that as allowed, matching what the gateway itself does with those requests.

Provider Passthrough

MCP Gateway

Streamable-HTTP MCP (Model Context Protocol) endpoints aggregating the configured upstream MCP servers (when MCP_ENABLED, default on). See MCP Gateway.

Admin Endpoints

Admin REST and dashboard routes (/admin/*) are covered in Admin Endpoints.

Operations Endpoints

Last modified on September 12, 2026