How it works
Add the OpenAI, Anthropic, Gemini or OpenAI-compatible accounts you already pay for. Tandex doesn’t sell tokens.
Change the base URL in any OpenAI SDK and ask for tandex/auto.
Each response can carry the route Tandex chose and the reason it chose it.
How it routes
Tandex measures the providers you connect and scores each request against those measurements. The scoring is deterministic: no model is asked to choose a model.
A first-class metric, measured per provider and model from real traffic, not read from a price sheet.
Set a cost ceiling per request. Routes above it are rejected; among the rest, cost is weighed alongside latency, load and reliability.
Limit each request to the providers and regions you approve, and to endpoints you have zero-retention terms with. Tandex enforces your choices; your contracts establish residency.
When a provider is slow or unavailable, new requests go to the next eligible route. Your code does not change.
Why Tandex
A proxy forwards your request. A switch decides where each request should go, records why, and keeps working when a route fails.
Every route is scored by rules, not by another model. Each response can carry why that provider was chosen.
Written in Erlang/OTP, the runtime designed for telephone switches, where faults are contained and restarted rather than allowed to spread.
Bring your own provider keys. Tandex doesn't resell tokens, so your pricing, limits and data terms stay yours.
API
Point any OpenAI client at Tandex and ask for tandex/auto. Add the optional routing block when you need limits on latency, cost, region or retention.
from openai import OpenAI client = OpenAI( base_url="https://api.tandex.io/v1", api_key="TANDEX_API_KEY", ) reply = client.chat.completions.create( model="tandex/auto", messages=[...], extra_body={ "tandex": { "max_ttft_ms": 400, "region": "uk", "zero_data_retention": True, } }, )
Early access
Tell us what you run, which providers you use and what latency you need. Early access is open to teams with real-time or regulated workloads.