Migrate from OpenRouter
If you're on OpenRouter, switching to Ollima is a base URL change. We adopt OpenRouter's HTTP-Referer + X-Title attribution convention, accept the same OpenAI-compat request shapes, and add a few things OpenRouter doesn't have. Routing through us tends to be 2-7× cheaper for the same model on the same provider.
The one-line change
client = OpenAI( base_url="https://api.ollima.com/v1", # was https://openrouter.ai/api/v1 api_key="sk-t0-…", ) # Your existing default_headers carry over verbatim.
The headers you already set keep working
OpenRouter's customer convention is HTTP-Referer + X-Title for app attribution. We capture these headers exactly the same way — you don't change a thing.
client = OpenAI( base_url="https://api.ollima.com/v1", api_key="sk-t0-…", default_headers={ "HTTP-Referer": "https://your-app.com", "X-Title": "your-app-name", }, )
They show up in Dashboard → Logs under the App column. See App attribution.
Model name mapping
Most OpenRouter slugs map to an Ollima alias:
| OpenRouter slug | Ollima alias (recommended) |
|---|---|
deepseek/deepseek-chat | deepseek-v4 |
qwen/qwen-2.5-coder-32b-instruct | qwen3-32b |
z-ai/glm-4.6 | glm-5.1 |
minimaxai/minimax-m1 | minimax-m3 |
If we don't have an alias for a model you use, set up a custom one on the dashboard's Routes page — alias any short name to one or more upstream targets with failover.
What you keep
- OpenAI-shape API — chat completions, embeddings, streaming, tool calling, JSON mode.
- BYOK — same idea, simpler pricing. See BYOK.
- App attribution —
HTTP-Referer+X-Title, byte-identical handling. - Per-request
userfield — captured for sub-user tracking. - Usage in the response — terminal
usagechunk on streams (stream_options.include_usage).
Where we differ
| Feature | OpenRouter | Ollima |
|---|---|---|
| Billing | USD, prepaid credits | INR + GST invoices, post-paid via Razorpay (USD on Enterprise) |
| BYOK fee | 5% of provider cost | Flat ₹0.10 per 1k output tokens |
| Per-key spend cap | Wallet-level only | Per-key hard cap, settable at mint time |
| Per-key time-series chart | Aggregate Activity page | Per-key line chart on Usage page — find the runaway key visually |
| App attribution | X-Title + HTTP-Referer | X-Title + HTTP-Referer (identical convention) |
| Auto-router | Yes — NotDiamond / Fusion / Pareto | Not yet — on roadmap, see GitHub |
| Model marketplace UI | Yes | /models page with INR pricing |
| Provider fallback chains | Yes via provider.order | Not yet in request body; configurable per-route on dashboard |
| Compression layer | No | Phase-1 observability shipped; active compression rolling out |
Why customers move
The structural reasons we hear most:
- "OpenRouter's BYOK fee is 5% of provider cost — Ollima's is a flat ₹0.10 / 1k tokens, predictable at any scale." Above ~$2-3K/mo on one provider, Ollima wins.
- "We needed per-key caps as a hard rail, not a soft alert." OpenRouter's wallet-level cap doesn't help when one key out of fifteen is the runaway.
- "INR billing + GST invoices stop our finance team from re-keying USD receipts." Tactical but real for India-based orgs.
- "The per-key time-series chart is how we found a misbehaving cron-job after 10 days." See Observability.