Read the FreeRouter Manifesto

One API key.
Every LLM gateway.

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 FreeRouter

Supported 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.

Used by

One integration. Every gateway.

01

Paste your keys

Drop in the keys for the gateways you already use — OpenRouter, Vercel, Cloudflare and more.

02

Get one key

FreeRouter issues a single key you use in your app. Behind the scenes it swaps keys and normalizes formats.

03

Set routing rules

Split traffic by percentage, or set priorities with failover — "use Cloudflare for cheap models, fail over to Vercel if OpenRouter is slow."

04

Ship & switch

Change providers any time from the dashboard. Zero code changes, zero migration projects.

Free from lock-in, complexity, and risk

Free from lock-in

A neutral layer between you and every gateway. If a provider raises prices or drops a model, flip a routing rule — no migration.

Free from complexity

One API key, one base URL, one integration. FreeRouter normalizes the request shape and forwards it wherever your rules point.

Free from risk

Bring your own keys. You keep control of your provider relationships and often pay providers directly — cheaper than a gateway's markup.

Drop-in replacement

Switch in two lines. Keep every line of your code.

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.

  • Point BASE_URL at https://api.freerouter.com/v1
  • Swap your API key for a FreeRouter key
  • Point the key at your providers with a routing rule
See the migration guide
# 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_..."
The mediation layer

Stay in control of your inference

Split traffic intelligently

70% to Provider A for cost, 30% to Provider B for performance or compliance. No single vendor gets all of your spend.

Walk away or shift instantly

A provider raises prices, drops a model, or restricts usage? Flip a routing rule. Zero code changes, zero migration.

Failover that keeps you up

Priority ordering with automatic failover means a slow or down gateway never takes your app down with it.

Swap models behind the same id

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.

Workspaces and keys

A personal workspace with multiple API keys. Each key has its own API shape and routing rule.

Private by design

Your prompts are yours. Request-body logging is off by default — turn it on per workspace only when you need it for debugging.

The monetization layer

Turn every response into revenue

Companion Ads ride alongside your inference responses. Bring your ad-network key, flip a toggle, and monetize — without touching your inference code path.

One-click monetization

Flip a toggle on any API key and paste your ad-network key in Settings.

Compatible with your API shape

Send ad_request as a sibling of your OpenAI, Anthropic, or Google body. FreeRouter strips it before forwarding, so gateways never see it.

Inference never breaks

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.

Fetched in parallel, streaming-safe

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.

Mediation for ads, too

Priority failover or percentage split across ad networks, with per-key overrides of your workspace default — the same routing model as inference.

For enterprise

The procurement leverage layer for AI

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

Run competitive bids

"We route 10M tokens/month — who gives the best enterprise rate?" Shift volume based on who wins.

No vendor gets 100%

Multi-vendor routing by design removes the single-vendor relationship risk from your AI spend.

Direct billing

Use your own provider keys and pay providers directly — often cheaper than a gateway's markup.

Audit & control

A neutral layer you own — the foundation for audit logs and compliance on your terms.

FAQ

Questions

"Free" means free from vendor lock-in — like "Free Software" or "Free Agent." FreeRouter is free to use during the preview period, and because you bring your own keys, you pay providers directly.

No. FreeRouter is a drop-in replacement. The default API shape is OpenAI-compatible — change your base URL and key and you're done. The migration guide walks through mapping your current provider and models to routing rules.

OpenRouter, Vercel AI Gateway, Cloudflare AI Gateway, OrcaRouter, Requesty, Concentrate, LLM Gateway, Baseten, Darkbloom, Sail, Ramp Router, Together AI, and Fireworks AI are live today, with more gateways on the way. You bring your own keys for each — see the full list in the provider docs.

You do. FreeRouter is bring-your-own-keys: your keys stay yours, and you can revoke them at any time. Optional managed billing may come later as a convenience.

No. FreeRouter is not affiliated with, endorsed by, or incentivized by any gateway — no preferential rates, no steered traffic, no bias toward any provider. Your keys, your rules. FreeRouter is just the plumbing that routes your requests where you tell it to.

In five steps with no rewrite: move your OpenRouter key into FreeRouter as a backend provider, create a FreeRouter key with the OpenRouter shape, route 100% of traffic to OpenRouter, then swap your app's base URL and key. See the Migrate from OpenRouter guide, including a copy-paste prompt for your coding agent.

Chat Completions (/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.
Resources

Guides, migrations, and case studies

Practical notes from the team on routing inference with one API key.

Guide

How to Use FreeRouter with Agent-Native

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 guide
Case study

How Pointcoin Added Web Search to Its AI in a Few Clicks

Two anonymous models per prompt, both with web search — enabled from the dashboard, with no change to the app.

· The FreeRouter Team

Read the case study
Guide

How to Use FreeRouter with Opencode

Point 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 guide

One API key. Every LLM gateway.

Free during the preview period. Bring your own keys and start routing in minutes.

Get your key