FreeRouter is a mediation layer for AI inference. Integrate once and route every request across OpenRouter, Vercel, Cloudflare and more — swap gateways any time, with no code changes. Zero lock-in.
Other ways to think about FreeRouterSupported gateways
# Change one line. Keep your code. client = OpenAI( base_url="https://api.freerouter.com/v1", api_key="fr_live_...", ) resp = client.chat.completions.create( model="openai/gpt-4o-mini", messages=[{"role": "user", "content": "Hello, FreeRouter!"}], ) # FreeRouter routes it per your rules.
Drop in the keys for the gateways you already use — OpenRouter, Vercel, Cloudflare and more.
FreeRouter issues a single key you use in your app. Behind the scenes it swaps keys and normalizes formats.
Split traffic by percentage, or set priorities with failover — "use Cloudflare for cheap models, fail over to Vercel if OpenRouter is slow."
Change providers any time from the dashboard. Zero code changes, zero migration projects.
A neutral layer between you and every gateway. If a provider raises prices or drops a model, flip a routing rule — no migration.
One API key, one base URL, one integration. FreeRouter normalizes the request shape and forwards it wherever your rules point.
Bring your own keys. You keep control of your provider relationships and often pay providers directly — cheaper than a gateway's markup.
The default shape is OpenAI-compatible /v1/chat/completions — the
format 90% of developers already use. Prefer another? Toggle the shape per key to OpenRouter,
Anthropic, or Google with one click.
BASE_URL at https://api.freerouter.com/v1# Before export OPENAI_BASE_URL="https://openrouter.ai/api/v1" export OPENAI_API_KEY="sk-or-..." # After — that's the whole diff export OPENAI_BASE_URL="https://api.freerouter.com/v1" export OPENAI_API_KEY="fr_live_..."
70% to Provider A for cost, 30% to Provider B for performance or compliance. No single vendor gets all of your spend.
A provider raises prices, drops a model, or restricts usage? Flip a routing rule. Zero code changes, zero migration.
Priority ordering with automatic failover means a slow or down gateway never takes your app down with it.
Your app keeps sending one model id while FreeRouter serves it from any provider's model — migrate, arbitrage cost, or canary a replacement with zero code changes.
A personal workspace with multiple API keys. Each key has its own API shape and routing rule.
Your prompts are yours. Request-body logging is off by default — turn it on per workspace only when you need it for debugging.
Companion Ads ride alongside your inference responses. Bring your ad-network key, flip a toggle, and monetize — without touching your inference code path.
Flip a toggle on any API key and paste your ad-network key in Settings.
Send ad_request as a sibling of your OpenAI, Anthropic, or
Google body. FreeRouter strips it before forwarding, so gateways never see it.
Ads arrive as an ads sibling of your model response. A
no-fill returns an empty slot and problems surface as ads_error — your LLM
call always succeeds.
Ads fetch alongside the LLM call, never blocking first token. Streaming
clients get one extra event before [DONE] that OpenAI SDKs ignore. OpenAI,
OpenRouter, and Anthropic streams only — Google keys are JSON-only.
Priority failover or percentage split across ad networks, with per-key overrides of your workspace default — the same routing model as inference.
Turn LLM procurement into a commodity routing problem. Run competitive bids, A/B test providers by real traffic, and shift volume to whoever wins — contractually free of exclusivity traps.
Talk to us"We route 10M tokens/month — who gives the best enterprise rate?" Shift volume based on who wins.
Multi-vendor routing by design removes the single-vendor relationship risk from your AI spend.
Use your own provider keys and pay providers directly — often cheaper than a gateway's markup.
A neutral layer you own — the foundation for audit logs and compliance on your terms.
/v1/chat/completions) and the OpenAI
Responses API (/v1/responses), plus Anthropic Messages, Gemini
generateContent, and System One decisions — each on a key you configure once.
Responses is an extra endpoint on the OpenAI dialect rather than a separate setting, so the
same key calls both. Backend gateways do not all implement both endpoints — Ramp Router, for
instance, serves only Responses — so FreeRouter translates whichever direction is needed,
per request. That means your choice of gateway never decides which endpoints you can
call. See the
API reference.Practical notes from the team on routing inference with one API key.
Point Agent-Native’s OpenAI engine at one FreeRouter key, and move model and gateway choices to a dashboard rule.
· The FreeRouter Team
Read the guideTwo anonymous models per prompt, both with web search — enabled from the dashboard, with no change to the app.
· The FreeRouter Team
Read the case studyPoint Opencode at one FreeRouter key through the custom-provider dialog or opencode.json, and move model and gateway choices to a dashboard rule.
· The FreeRouter Team
Read the guideFree during the preview period. Bring your own keys and start routing in minutes.
Get your key