Provider routing
Integrate once through one multi-provider LLM proxy
Connect through one canonical API or official client, then select any supported text provider and model route without rebuilding the application integration.
AI-assisted builders, startups, product teams, and platform groups that need model choice without repeated provider integrations.
The problem
Adding a provider SDK, credential flow, payload mapper, and error parser for every model family turns model choice into application integration work.
How LLM Proxy helps
LLM Proxy gives callers one tenant-secret-authenticated POST /v2 messages contract. Provider and model selection change the route while provider-specific credentials and wire formats stay behind the proxy.
How it works
- Choose direct HTTP, the official Go package, the official Python package, or the installable CLI.
- Authenticate the application with one tenant client key while provider API keys stay server-side.
- Send canonical messages through POST /v2 and omit provider or model when managed defaults should apply.
- Change provider and model selectors when the product needs another supported route; keep the integration contract unchanged.
Feature-to-benefit table
| Feature | Why it matters here | Example |
|---|---|---|
| One canonical request | Every bundled client sends the same POST /v2 messages shape. | A prototype can begin with curl and move to Go or Python without adopting a provider payload. |
| Explicit route selection | Provider and model values change routing instead of the client library. | The same application request can target a supported Gemini, Anthropic, OpenAI, Meta, or compatible route. |
| Server-side adapters | The proxy owns provider authentication, payload mapping, validation, and status translation. | Product code does not parse separate OpenAI Responses, Anthropic Messages, and Gemini Interactions contracts. |
| Current capability catalog | The public matrix comes from the validated registry used by request routing. | A caller can verify image input, audio input, reasoning, web search, dictation, and output-limit support before selecting a route. |
Use-case examples
AI-assisted prototype
Generated application code calls one documented endpoint and never receives an upstream provider key.
Product model comparison
A startup sends the same transcript to supported OpenAI, Anthropic, and Gemini routes by changing only route selection.
Institutional application platform
A platform team gives several applications separate client keys while managing provider credentials and route defaults centrally.
Objections and limitations
- The public capability matrix defines the currently supported provider, model, and feature combinations.
- A configured server-side provider credential is required before that provider can serve a tenant request.
- Provider-specific capabilities remain route-specific and must be declared by the selected model.
- Provider lifecycle, model-onboarding, and hosted uptime commitments are outside the current catalog contract pending an approved support and SLA policy.
Repository evidence
curl -X POST "https://llm-proxy-api.mprlab.com/v2?key=$LLM_PROXY_SECRET&provider=gemini" -H "Content-Type: application/json" -d '{"messages":[{"role":"user","content":"Summarize this"}]}'
Verified 2026-08-08 by Tyemirov on GitHub against README.md.
FAQ
What changes when an application switches providers?
The caller changes the provider selector and optionally the model. POST /v2, tenant client-key authentication, messages, response formatting, and proxy status behavior remain on the same contract.
Which official LLM Proxy clients are available?
The repository supplies a typed Go package, a synchronous Python package, and an installable Go command-line client. Direct HTTP callers use the same canonical POST /v2 operation.
Can every model use every capability?
No. The generated model matrix publishes the exact capabilities declared for each supported route, and the proxy rejects unsupported route-capability combinations before provider dispatch.
Does the supported catalog include an uptime or model-addition SLA?
The catalog states the current implemented routing contract. Provider lifecycle, model-onboarding time, and hosted availability are outside that contract pending a separately approved support and SLA policy.
What should I read next?
A closely related resource is Switch OpenAI, Claude, and Gemini behind one endpoint, which covers OpenAI Claude Gemini one endpoint.
Related resources
Choose one integration surface
Start with direct HTTP, Go, Python, or the command line, then use the live catalog to select a supported route.
Compare integration options