One API key. Every LLM gateway. Zero lock-in.
freerouter.com · September 2026
Typesafe just released Jev. Your gateway does not have it yet.
A developer has spent months integrating one LLM gateway: keys, model ids, streaming, tools, error handling. Jev launches. Their gateway is not carrying it. Another gateway is.
What do they do?
Without FreeRouter
Wait for the gateway to add Jev, or re-integrate against a second gateway and maintain two code paths.
With FreeRouter
Swap the base URL and key to FreeRouter, add the gateway that carries Jev as a provider, and point Jev at it with a remap or a failover target. The existing gateway keeps serving everything else.
That is the whole change. Jev is live in the app the same afternoon, and the next model launch is a dashboard edit.

2
Jev is live on three gateways. They do not charge the same.
Swap providers on the backend.
Put Vercel first in the key's routing rule. The next request goes there. Your code did not change.
Keep the others as failover.
OpenRouter and Cloudflare stay in the rule as backup targets, so a Vercel 429 or 5xx is still served.
Move volume as prices move.
When another gateway undercuts, reorder the rule or shift a percentage split. No redeploy, no migration project.
Price becomes a dashboard decision instead of an integration commitment.

3
Your app keeps sending one model id. FreeRouter decides what serves it.
A model remap rewrites the incoming model before the key's routing rule runs:
Incoming request model: "openai/gpt-4o"
Remap on the key openai/gpt-4o → typesafe/jev-1.13
Upstream request model: "typesafe/jev-1.13" (sent to the gateway that carries it)No deploy.
The remap lives on the FreeRouter key next to its routing rule. Add or remove it in the dashboard and the next request follows it.
Canary first.
Set the remap to 10% and watch the Logs. Move to 100% when you are happy. The other 90% follow the normal rule untouched.
Never less reliable.
If the remap destination returns a retryable error, the request falls back to the key's normal targets.
Every API shape.
OpenAI, OpenRouter, Anthropic, and Google requests all match on the normalized model id.
Migrate off a deprecated model, arbitrage a cheaper equivalent, or adopt a launch-day model, while your code keeps saying openai/gpt-4o.

4
A meta router for LLM inference. Think ad mediation for AI.
Sits above the gateways.
One level above the gateways you already use: OpenRouter, Vercel AI Gateway, Cloudflare AI Gateway, OrcaRouter, Requesty, Concentrate, LLM Gateway, Baseten, Darkbloom, Sail.
Bring your own keys.
FreeRouter forwards each request with your gateway key and never resells inference.
Built-in extensions.
Turn-key tools such as web search, weather, finance, real estate, and hundreds more. Enable them from the dashboard and the model calls them on the same key.
No affiliation.
Not affiliated with any gateway. No preferential rates, no steered traffic. Your keys, your rules.

5
A gateway decouples you from the model labs. It does not decouple you from the gateway.
Model lag.
New models land on different gateways on different days. If yours is late, you wait.
Price and policy risk.
A markup change, a deprecated model, or a ToS update is a migration project.
One outage, no plan B.
A 429 or a 5xx at your gateway is a 429 or a 5xx for your users.
One API shape.
Switching gateways usually means touching every call site.
FreeRouter turns each of these into a dashboard edit.

6
Not every gateway gets every model at the same time. Your app should not care.
Merged catalog.
GET /v1/models fans out to every gateway on your key in parallel and merges the results.
Failover on missing models.
A gateway answering 404 for a model id is treated as failover fuel: the request moves to the next target instead of failing.
Model remaps.
Keep sending one model id while FreeRouter serves it from any provider's model. Migrate, arbitrage cost, or canary a replacement at 1–100% of traffic.
Portable ids.
openai/gpt-4o-mini means the same model on OpenRouter, Vercel, Cloudflare, OrcaRouter, Requesty, and LLM Gateway. A live translation table covers the rest.
Ship against the model, not against whoever happens to host it this month.

7
OpenRouter already separates your app from the model labs. FreeRouter takes the same idea one level up.
Priority with failover:
Dashboard order is the priority. Connection errors, slow first byte, 5xx, 429, and missing models advance to the next gateway.
Percentage split:
Send 80/20 to two gateways, or 50/50 for evals. Weight 0 means failover-only.
Rules apply on the next request.
No deploy. No code change.
You hold the option. When a gateway raises prices, drops a model, or degrades, the fix is an edit, not a rewrite.

8
Change one line. Keep your code.
Every FreeRouter key has an API shape. Pick the one your code already uses:
Using the Anthropic SDK today? The swap is two environment variables:
# Before
ANTHROPIC_BASE_URL=https://api.anthropic.com
ANTHROPIC_API_KEY=sk-ant-...
# After — that's the whole diff
ANTHROPIC_BASE_URL=https://api.freerouter.com
ANTHROPIC_API_KEY=fr_live_...Same request bodies, same streaming, same tools. Error envelopes mirror your shape. Behind the key, FreeRouter can still fail over or split across any gateway.

9
Turn every response into revenue. One click away.
Per-key toggle.
Flip Companion Ads on for a key. FreeRouter can provision placements on first request, or use the ad-network account you paste in Settings.
One extra object in, one extra array out.
Send ad_request next to your normal body. Get an ads array next to choices, with title, brand, CTA, click and impression URLs.
Inference always wins.
A missing ad_request, a down ad network, or a no-fill never fails the LLM call. ads: [] is not an error.
Fetched in parallel, streaming-safe.
Ads never block the first token. Streaming clients get one extra event before [DONE].
Mediation for ads, too.
Priority failover or percentage split across ad networks, the same way you route models.
Privacy by default.
Emails and phones are hashed before they leave FreeRouter. ad_request is stripped before anything reaches a gateway.
Works identically on OpenAI, OpenRouter, Anthropic, and Google shapes.

10
When a reply mentions products, FreeRouter hands you the links.
After the model answers, a small extractor scores the brands, product names, and model numbers in the reply. Exact model number outranks product line, which outranks bare brand. Generic nouns never qualify.
Your response carries a keyterms array: the verbatim span, a destination URL with your publisher id, how many times it occurs, and a score.
FreeRouter never rewrites the assistant text. Your app decides which terms to hyperlink before rendering.
Prompt: "Best travel headphones?"
"keyterms": [
{ "keyterm": "Sony WH-1000XM5",
"url": "https://…/go?term=Sony%20WH-1000XM5&pid=…",
"occurrences": 2, "score": 0.95 }
]Per-key checkbox. Same "inference always wins" guarantee. Affiliate revenue without touching your prompt.

11
"What was the Longhorns score last week?"
Your app still calls POST /v1/chat/completions. No extra request field. No SDK change.
FreeRouter offers the enabled tools to the model, runs the tool calls in parallel, feeds results back on the same routing rule, and returns the final answer.
Fails open. If a tool server is down or times out, the chat still returns. Tools never turn a good model call into a 5xx.
Most MCP setups bind tools to a single model host. Here the catalog stays attached to the key, so it survives a gateway swap, a model remap, or a failover.

12
Monid is a catalog of 2,000+ third-party data endpoints across 70+ providers. Each one you enable becomes a first-class tool the model can call.
Three steps, all in the dashboard.
A car-shopping app enables Carfax and Cars.com. A real-estate app enables Zillow. A news app enables web search. Same key, same code. Spend hits your own Monid wallet.

13
Steering messages.
Tools tell the model what it can call. A steering message tells it when. Up to 2,000 characters, appended to every request on a key. Example: "Use Monid for anything about real estate listings."
IP allowlists.
Workspace and per-key lists of addresses or CIDR ranges. Rejections return 403 naming the address FreeRouter saw.
Observability on the wire.
X-FreeRouter-Provider, X-FreeRouter-Attempts, and X-FreeRouter-Failover name who served the request and every gateway skipped, with the reason.
Usage and logs.
Requests, errors, latency, top models, and per-provider breakdown. Router overhead runs sub-millisecond for simple rules, 20–30 ms with remaps and translation.
Management API and MCP server.
Mint keys, set routing, and read usage from your own backend or from Cursor and Claude with a fr_mgmt_… key. Read-only reporting keys available.
What is never stored: response bodies, token counts, per-request cost.

14
FreeRouter is not a competitor to gateways. It sends them traffic, with the customer's own key, and lets no single vendor be a single point of failure.
LLM gateway? Partner with us: freerouter.com

15
https://api.freerouter.com/v1.Verify with the X-FreeRouter-Provider header, then watch the request land on Logs.
Day one, nothing behaves differently. That is the point. Rollback is a one-line revert. The old key still works. From here, adding a second gateway, a remap, ads, or tools is a dashboard edit.

16
Try it: app.freerouter.com. Free to use during the preview period.
Read the docs: docs.freerouter.com, including the OpenRouter migration guide and a copy-paste prompt for your coding agent.
Partner with us: LLM gateways, ad networks, and tool providers. freerouter.com
FreeRouter is a Multify Inc product.

17
Why FreeRouter?