Speko Router
One OpenAI-compatible endpoint across 23 providers, ranked by measured benchmarks, with automatic failover.
Point an OpenAI client at https://api.speko.ai/v1, send model: "auto", and the router picks the model — ranked by a measured benchmark board, not a hardcoded default — then fails over if that provider errors.
23 providers and 43 models sit behind it. You hold one Speko key; the router holds the provider credentials. Only the base URL and the key change: your request bodies, streaming loops and response parsing stay as they are.
- Ranked selection —
model: "auto"ranks live candidates for your language and objective. See routing headers. - Failover — an upstream 5xx, 429 or auth failure advances to the next candidate. See errors.
- Policy on the key — language, objective and pins live on the key, so callers send no routing headers. See key policy.
- Accent-aware TTS —
es-PRnarrows to voices that produce that accent. See languages and accents.
OpenAI-compatible does not mean routing through OpenAI. OpenAI is 9 of the 43 models — one vendor among 23. Borrowing their HTTP shape is what makes adoption a config edit instead of a rewrite; the router translates each request into the chosen vendor's own protocol.
Router or Platform API
Two products, separate base URLs, separate keys, no shared concepts.
| Router | Platform API | |
|---|---|---|
| Base URL | api.speko.ai/v1 | api.speko.dev |
| Shape | OpenAI-compatible | Speko-native |
| Unit of work | One request | Agents, sessions, phone calls |
| Keys | platform.speko.ai/router/keys | platform.speko.dev/api-keys |
Use the Router for request-shaped work: transcribe a file, synthesize a line, complete a turn. Use the Platform API for long-lived sessions, deployed agents, phone numbers, recordings and webhooks. Router requests carry none of the platform's routing surface — X-Speko-Intent, optimizeFor, constraints.allowedProviders, /v1/complete and region selection do not exist here.