Providers
The BYOK model
FreeRouter is bring-your-own-keys. You keep your existing accounts and billing relationships with each gateway; FreeRouter just orchestrates which one handles a given request. That means you pay providers directly — usually cheaper than layering a second markup on top — and you can walk away from any gateway by removing it from your routing rules.
Supported gateways
OpenRouter is live today. You can store Vercel and Cloudflare keys under Providers in the dashboard, but requests targeting them return 501 until their adapters land — point routing rules at OpenRouter for now.
A broad aggregator across many model families. A common default primary or the high-weight target in a %-split.
Vercel's gateway for AI models. A strong failover target or performance-weighted split partner.
Cloudflare's edge gateway. Useful as an additional failover tier or a canary target for new traffic.
More gateways (e.g. Together and others) are on the roadmap. The meta-router model means adding a provider is a config change — never an application rewrite.
Adding a provider
How your keys are used
- Encrypted at rest. Provider keys are encrypted in FreeRouter's store and never returned to the client after you save them.
- Swapped per request. When a routing rule selects a gateway, FreeRouter injects that gateway's key into the upstream call. Your FreeRouter key is what your app sends; the provider key is what the gateway sees.
- Scoped to a workspace. Keys belong to the personal or team workspace you added them in. Team members share the workspace's providers; they never see the raw key value.
- Removable anytime. Delete a provider to revoke its use across every rule that referenced it.
Model identifiers
Regardless of gateway, FreeRouter uses provider/model style identifiers in the model field so a request is unambiguous. Examples:
openai/gpt-4o-mini
anthropic/claude-3.5-sonnet
google/gemini-1.5-pro
Your routing rule selects the gateway by priority order; FreeRouter fails over to the next target on rate limits (429) or upstream errors (5xx). The model string is passed through verbatim, so use an identifier the serving gateway understands. Use GET /v1/models to see what's available to a key.