Migration guide
Migrating from OpenRouter
The base URL is a one-line change. Model names are not — the two services do not use the same naming, so budget time for a mapping pass. Everything else is a decision about whether you should migrate at all.
Should you migrate?
Probably not if OpenRouter works and the only complaint is the 5.5% credit fee. Moving to us means giving up 445 models for 477 and giving up a paid path you can plan around. The fee is real; so is what you get for it.
Consider it if you want Anthropic-format endpoints without a translation layer, if free-first routing is what you actually need, or if you are also adopting the agent layer above the gateway.
The three-line change
# Before (OpenRouter)
OPENAI_BASE_URL = "https://openrouter.ai/api/v1"
OPENAI_API_KEY = "sk-or-..."
# After (FreeModel)
OPENAI_BASE_URL = "https://freemodel.online/v1"
OPENAI_API_KEY = "sk-..." # from the console
For Anthropic-format clients, the base URL is different:
ANTHROPIC_BASE_URL = "https://freemodel.online/api/gateway"
ANTHROPIC_API_KEY = "sk-..."
The part that takes longer: model names
OpenRouter names models vendor/model — openai/gpt-4o,
anthropic/claude-sonnet-4. FreeModel does not use that scheme, and it also
exposes routing aliases like auto/best-coding that have no OpenRouter
equivalent. So this is a mapping pass, not a find-and-replace.
# Pull the live list before mapping anything — do not hard-code from memory
curl https://freemodel.online/v1/models
# No key required. If a model you depend on is not in the list,
# that is your answer about whether to migrate.
Two things to check while you map:
- Drop the
:freesuffix. On OpenRouter it selects a free model; here routing is free-first by default, so the suffix is meaningless and may not resolve. - Some OpenRouter models are simply not here. We serve 477 models against their 445. If your workload depends on a specific one, verify it before you start.
What changes in behaviour
| OpenRouter | FreeModel | |
|---|---|---|
| Which model handles a request | You name it | The router decides by task |
| Free model selection | Explicit :free suffix | Default, automatic |
| Model naming | vendor/model | Own scheme plus routing aliases |
| Fallback order | Configurable | Ours |
The routing change is the one that surprises people. If your code depended on a specific model answering — because you tuned prompts against it, or you are benchmarking — name a model explicitly rather than relying on routing. Otherwise the same request can land on a different model tomorrow.
Migration checklist
[ ] Pull https://freemodel.online/v1/models and diff it against what you use
[ ] Confirm every model you depend on is present
[ ] Get a key from the console
[ ] Point base_url at https://freemodel.online/v1 (or /api/gateway for Anthropic format)
[ ] Strip :free suffixes
[ ] Pin model names anywhere the specific model matters
[ ] Run one request per model you actually use, not just one smoke test
[ ] Check latency — routing adds a decision step
If you decide not to migrate
That is a reasonable outcome, and worth saying plainly. OpenRouter has more models, a longer track record, and integrations everywhere. The honest summary:
Stay on OpenRouter if you need a specific model, a paid path you can
budget against, or you are following someone else's
setup guide
Switch to FreeModel if you want Anthropic-format endpoints directly,
free-first routing by default, or the agent layer
above it
If you are still weighing it, the two direct comparisons go deeper on each: vs OpenRouter covers the feature differences, alternatives covers what else exists if neither of us is right.
Last updated 2026-09-20. Model counts and endpoints verified on this date — pull the live model list rather than trusting any page, including this one.