Skip to main content

Other Providers

Observra routes by URL segment, with one dedicated adapter per provider.

For copy-paste code covering raw HTTP, native SDKs, and agent frameworks per language, see Python, PHP, Node.js, and Go.

Currently supported providers

URL segmentUpstreamNotes
/openaiapi.openai.comReference integration - see OpenAI SDK Integration
/anthropicapi.anthropic.comNative Anthropic Messages API protocol supported directly
/groqapi.groq.comOpenAI-compatible protocol
/geminigenerativelanguage.googleapis.comNative Gemini protocol; model can be taken from the URL path (/models/{model}:generateContent) instead of the body
/ollamaollama.com (or your own Ollama host)NDJSON/JSONL streaming responses
/openrouteropenrouter.aiOpenAI-compatible protocol
/azureCustomer-supplied, via X-Azure-Endpoint headerAzure OpenAI has no fixed upstream base URL - see below

Each provider's upstream base URL can be overridden per-deployment via a {PROVIDER}_UPSTREAM_URL environment variable (e.g. OPENAI_UPSTREAM_URL), useful for pointing at a proxy or regional endpoint.

Cross-protocol calls

Because the gateway detects the incoming client protocol independently of the target provider, you can call a non-OpenAI provider using an OpenAI-shaped request body (or vice versa) and the gateway will translate it - see Routing & Providers for how protocol detection and translation work, and their current limits.

Azure OpenAI specifics

Azure requires an additional X-Azure-Endpoint header carrying your Azure OpenAI resource's https:// endpoint (validated to be an *.openai.azure.com/.azure.us/.azure.eu host) - Azure has no single static upstream URL the way other providers do, since each customer has a dedicated resource endpoint. See Gateway Authentication.

What "supported" means today

Support means: an adapter exists that can build the upstream request and, where cross-protocol translation is needed, translate request/response/streaming-chunk shapes. It does not imply cost data is available for every model on every provider - if Observra doesn't have pricing for a specific model yet, cost is simply left unset for that observation.