One endpoint for every AI model.
Point your existing SDK at Business AI instead of the provider. The call goes out under your company key, gets metered and attributed on the way through, and fails over to the next provider if the first one is down. Nothing about your code changes except a base URL.
What the gateway actually does to a request
It swaps the key and forwards the bytes. Business AI holds your provider keys encrypted, matches the incoming Business AI key to your workspace, attaches the real provider credential, and passes the request upstream unchanged.
The request and response bodies are never parsed or reshaped. That is a deliberate design decision, and it is why the provider features that usually break behind a proxy keep working: tool use, vision, prompt caching, audio, file uploads and batch endpoints all pass through, because we are not standing in the middle of them rewriting JSON.
The practical consequence is that a provider shipping a new API feature needs no work on our side. Only three small facts are provider-specific: where the upstream lives, which header carries the key, and how to read token usage back out.
Which providers are live
Three providers are wired for HTTP today, each with its own upstream and its own auth header.
| Provider | Upstream | Key travels as |
|---|---|---|
| Anthropic | api.anthropic.com | x-api-key |
| OpenAI | api.openai.com | Authorization: Bearer |
| Google Gemini | generativelanguage.googleapis.com | x-goog-api-key |
Adding a fourth is one entry in the provider registry plus a price row. It is not a migration, and it does not touch the metering, limits or billing paths, because those sit downstream of the registry.
Three ways to call it
- Native passthrough
- ALL /api/gw/:provider/* forwards raw bytes. Point the provider's own SDK here and you keep the full provider surface, including streaming and non-chat endpoints.
- Unified OpenAI-compatible
- POST /api/ai/v1/chat/completions accepts one request shape and translates it per provider, so a single integration reaches all three. Chat only, and non-streaming in this version.
- Realtime voice
- A WebSocket proxy for OpenAI Realtime and Gemini Live. Anthropic is absent from this list because Anthropic does not currently ship a realtime WebSocket product, not because it is unsupported.
What happens when a provider goes down
You set a priority list once per workspace. A provider with no key configured is skipped. A provider returning a 5xx is skipped and the call moves on to the next one.
The failover happens before any bytes are sent back to your product, so the caller sees one clean response rather than a half-streamed failure it has to unwind.
Errors that are genuinely yours do not trigger failover. A 402 for being over budget, a 429 for rate limiting, and surfaced 4xx errors are returned to you as-is, because retrying them against a different provider would hide a real problem and spend money doing it.
Keys, scopes and rotation
Products authenticate with a Business AI gateway key rather than a provider key. The key is stored hashed, so a database dump does not yield a working credential.
A key can carry a product scope, and every call made with it is attributed to that product. That is what makes per-product cost reporting possible without asking anyone to tag their requests.
Rotation issues a replacement while the old key keeps working until a grace deadline, so a rotation is a scheduled change rather than a coordinated outage across every service that holds it.
Straight answers.
No. The native passthrough takes the provider's own SDK, so the change is a base URL and a key. Because request and response bodies are forwarded byte for byte, the SDK behaves exactly as it does against the provider directly, including streaming, tool use and vision.
It adds one network hop and a key swap. Bodies are not parsed on the passthrough path, so there is no serialisation or transformation cost in the middle of the call.
It is skipped and the call moves to the next provider on your priority list, before any bytes reach your product. A 402, a 429 or a surfaced 4xx is returned to you instead of being retried, because those describe a real condition rather than a transient upstream fault.
Yes, through the OpenAI-compatible endpoint, which translates one request shape per provider. It covers chat and is non-streaming in this version. For streaming or non-chat features, use the native passthrough with the provider SDK.
Live in production
Build your company’s AI System.
Bring one real workflow to the call. We run it through the gateway while you watch, metered and attributed, before you decide anything.
30 minutes · no deck · reply within 24h