Swap one base URL and reach 300+ models from every major lab. Smart routing across upstream providers, automatic failover, per-token pricing, one bill.
from openai import OpenAI
# point your existing code at OpenLink —
# nothing else changes
client = OpenAI(
base_url="https://api.openlink.ai/v1",
api_key="OPENLINK_API_KEY",
)
resp = client.chat.completions.create(
model="deepseek/deepseek-v3", # or any of 300+
messages=[{"role": "user",
"content": "Hello!"}],
)
print(resp.choices[0].message.content)
One base URL, one key, one SDK. No per-provider clients, no separate accounts, no separate invoices to reconcile.
Requests go to the upstream provider with the best price and latency for that model. When one goes down, the next takes over mid-flight.
No subscriptions, no markup on idle time. Spend across every model lands on a single dashboard and a single invoice.
$ curl https://api.openlink.ai/v1/chat/completions \
-H "Authorization: Bearer $OPENLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"deepseek/deepseek-v3",
"messages":[{"role":"user","content":"Hello!"}]}'
{"id":"cmpl-8f2a…","choices":[{"message":{"role":"assistant",…
Anything that speaks the OpenAI Chat Completions API works unchanged — the official SDKs, LangChain, LlamaIndex, Vercel AI SDK, or plain HTTP. Streaming, tool calls and structured outputs are all passed through.
| Model | Model ID | Tokens / week | Latency | Weekly growth |
|---|---|---|---|---|
| DeepSeek-V3 | deepseek/deepseek-v3 | 42.1B | 610ms | +14.2% |
| Qwen3 235B A22B | qwen/qwen3-235b | 28.7B | 540ms | +9.8% |
| Kimi K2 | moonshot/kimi-k2 | 19.3B | 720ms | +21.4% |
Three of 300+. Call GET /v1/models for the full catalog, or list it from the CLI.
The same model is served by several upstream providers at different prices and speeds. Pick the axis that matters for the call — we handle the rest.
resp = client.chat.completions.create(
model="qwen/qwen3-235b",
messages=messages,
extra_body={"route": {
"order": "latency", # or "price"
"fallback": True,
}},
)
If the selected provider times out, rate-limits or returns an error, the request is retried against the next candidate before your code ever sees a failure.
14:02:41 route qwen3-235b → provider-a
14:02:42 warn provider-a 429 rate limited
14:02:42 route retry → provider-b
14:02:43 ok 1,284 tokens · 540ms · $0.0021
14:02:44 route deepseek-v3 → provider-c
14:02:45 ok 3,910 tokens · 610ms · $0.0038
Every request is metered per token and attributed to a model, a provider and a key. Query it from the dashboard, the API, or the CLI.
$ openlink usage --period month --group-by model
MODEL TOKENS REQUESTS COST
deepseek/deepseek-v3 182.4M 41,208 $164.16
qwen/qwen3-235b 124.9M 33,570 $137.39
moonshot/kimi-k2 83.6M 19,044 $100.32
390.9M 93,822 $401.87
Server-sent events pass straight through. Time-to-first-token is measured per provider and factored into latency routing.
Function and tool-call schemas are forwarded untouched for every model that supports them.
JSON mode and schema-constrained responses work the same way they do against the provider directly.
Issue separate keys per environment or per team, each with its own spend cap and model allowlist.
Shared limits across upstream providers, so a single provider's quota does not become your ceiling.
Prompts and completions are not used to train any model. Requests are forwarded, metered, and dropped.
Running your own weights instead? Rent the GPUs directly — from $0.35/hr across 20,000+ cards.
base_url and api_key and leave everything else alone. The official OpenAI SDKs, LangChain, LlamaIndex and the Vercel AI SDK all work unchanged.route in extra_body with order set to price or latency. Setting fallback: false pins the request to a single provider.One OpenAI-compatible endpoint for 300+ models, with routing and failover.
You are hereSearch GPUs, deploy containers and script the whole workflow from your shell.
OpenLink CLI →A typed client for compute and models. Build agents that scale their own GPUs.
Python SDK →Get an API key and send the first request in under a minute.