Decide
Match each workload to the right model and provider.
Rules, capability signals, quality history, and fallbacks produce one replayable decision.
- Policy routing
- Quality-aware deranking
- Fallback chains
- Presets and Rule templates
Explainable policy routing
Apply routing, budget, quality, and data-policy controls through one OpenAI-compatible endpoint—then inspect the exact rule, route, and cost outcome.
Routing proof
Interactive example · fixed sample rules · no provider call.
Why this route
Matched demo rule demo-coding-route; route to qwen/Qwen3-Coder-480B-A35B-Instruct. Fallback: zai/glm-4.5-air.
Select the explanation if clipboard access is unavailable.
Current catalog
Compatibility from the shipped catalog
Policy you can audit
RouteShift keeps the policy decision visible from the first request through the savings receipt.
Match each workload to the right model and provider.
Rules, capability signals, quality history, and fallbacks produce one replayable decision.
Keep spend and provider exposure inside explicit limits.
Budgets alert or enforce according to configured actions; allowlists, guardrails, and data-policy requirements run as pre-dispatch checks when configured and available.
Trace every route and reconcile the result.
Activity, analytics, receipts, and exact reason codes connect aggregate changes to individual requests.
Integration proof
Route an existing OpenAI-compatible SDK through RouteShift, then add policy without rewriting request or response code.
const client = new OpenAI({
baseURL: 'https://api.routeshift.io/v1',
apiKey: process.env.ROUTESHIFT_API_KEY,
});The Connect CLI auto-configures these OpenAI-compatible targets:
Give agents a read-only catalog for model availability, pricing, and rankings before they choose a route.
Keep typed request helpers for chat, streaming, and embeddings while RouteShift records the decision.
Product proof
A workspace view connects route decisions, cache signals, and measured savings without pretending example values are customer telemetry.
Example workspace data
Total Saved
$12,847
Cost Reduction
47%
Cache Hit Rate
34%
Requests Routed
2.3M
Illustrative 12-month trend
Sample Cost Savings Trend. Illustrative 12-month trend. Illustrative shape only — no measured unit. The bars generally rise from January to December with month-to-month variation.
Illustrative sample data for the landing page preview; not live customer telemetry.
Built for operator jobs
Keep spend, reliability, and developer access in the same explainable route instead of splitting them across tools.
FinOps & platform
Set daily, weekly, and monthly budgets before requests leave your gateway. Reconcile the result with savings receipts that show what changed and why.
Review savings receiptsReliability
Build fallback chains that keep eligible requests moving when a provider does not. Activity records the exact reason for each fallback, skip, or block.
Inspect activityAgent teams
Give every harness the same Connect CLI setup and MCP catalog context. Keep integrations typed with the SDK while policies remain visible at the gateway.
Read the integration docsSetup path
The path from a new key to an explainable route stays usable with plain links and a normal OpenAI-compatible client.
Start with a key whose permissions and allowed models match the workload you want to route.
Create an accountUse the documented base URL and keep your existing OpenAI-compatible request flow.
Read the integration docsCreate a routing rule, send a request, and read the exact rule, route, and fallback explanation.
Open routing rulesQuickstart
Works with any free-tier key — pick the path that matches your stack.
export ROUTESHIFT_API_KEY="sk-proxy-live_..."
curl https://api.routeshift.io/v1/chat/completions \
-H "Authorization: Bearer $ROUTESHIFT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.4",
"messages": [{"role": "user", "content": "Hello"}]
}'
# Stream: add "stream": true. Embeddings: POST https://api.routeshift.io/v1/embeddings.Model ids come from the live public catalog. Switching from OpenRouter? See the migration guide.
Pricing proof
The public plan starts at zero platform fee. The savings share follows the measured outcome, not request volume.
RouteShift pricing
$0 monthly platform fee
+ 3% × positive measured savings
Active BYOK plans pay the share only when savings are positive.
Worked example
Assumes 30/20/10% measured savings by tier vs a 5% flat markup — adjust spend and mix.
$10,000 → $2,300 measured savings
This fixed illustration applies the documented model mix and measured savings assumptions through the shared savings calculator.
$0 savings share when savings are zero
Illustrative assumptions — not customer outcomes
Monthly spend: $10,000
Model mix: 50% low-cost / 30% standard / 20% premium
Measured savings assumptions: 30% / 20% / 10% (low-cost / standard / premium)
Comparison-only baseline: 5% flat markup
Comparison-only flat-markup fee: $500
Difference vs RouteShift savings-share fee: $431
In BYOK mode, provider spend has 0% markup. Active paid plans use the savings-share formula above: 3% of positive measured savings; provider charges remain separate. Missing provider credentials fail closed; BYOK never falls back to a RouteShift-funded key.
An active paid plan in credits mode is billed at provider-plus-plugin cost + 3% credits markup. Credits pricing is separate from BYOK savings-share pricing.
Trust through evidence
Inspect the matched rule, resolved route, fallback, and explanation for a request.
Landing previews identify illustrative workspace values instead of presenting them as telemetry.
Follow the curated changelog and public documentation as the product changes.
FAQ
Yes. Set the OpenAI SDK base URL to https://api.routeshift.io/v1; the OpenAI-compatible chat completions endpoint is /v1/chat/completions. Keep the request and response flow your application already uses, then add a scoped RouteShift key and apply policy from the dashboard.
Savings are measured per request by comparing the cost of the route selected by your policy with the documented baseline for the request. The savings-share fee applies only to positive measured savings; if routing saves you nothing in a period, the share is zero.
BYOK means you bring provider credentials and provider spend remains separate from RouteShift’s savings-share formula. Credits mode supplies provider credentials through RouteShift and is billed separately, with the applicable credits markup.
Daily, weekly, and monthly budgets alert or enforce according to the configured action at team, person, and API-key scopes. Allowlists and data-policy requirements are evaluated before dispatch according to their configuration. Prompt guardrails run as pre-dispatch checks when configured and available; inspect the resulting reason codes to see how a policy applied.
RouteShift uses encrypted transport, encrypted API-key storage, role-based access controls, provider and model allowlists, and residency or zero-data-retention requirements where the selected endpoint supports them. See the privacy policy for the data-handling details.
The Connect CLI auto-configures opencode, Continue/Cline, and aider for the current OpenAI-compatible surface. Cursor setup is guided. Claude Code support is pending the Anthropic /v1/messages surface. Agents can also read the MCP catalog, and the typed SDK covers chat, streaming, and embeddings.
OpenRouter focuses on broad model access. RouteShift focuses on policy-based routing, budgets, response caching, fallback chains, and savings evidence through an OpenAI-compatible endpoint. RouteShift’s public pricing is tied to positive measured savings rather than unqualified traffic volume.
Every rejection carries an exact machine-readable code. 402 means a budget cap was hit (the response includes reset_at); 429 means rate, TPM, or throttle limits (includes retry_after). 503 Budget service unavailable means the budget ledger could not admit the request, and 503 budget_estimate_unavailable means a hard cap could not be priced so the request failed closed rather than admitting unbilled traffic. Preset-bound keys return 403 key_preset_model_mismatch when routing escapes the pinned model, 403 key_preset_unavailable when the binding stops resolving, and 400 key_preset_conflict for request-level preset or models[] overrides. Plugin misuse returns 400 invalid_plugin, and a required plugin that fails returns 502 plugin_required_failed — other failures from optional plugins are skipped with the reason preserved.
Start with proof
Create a scoped key, point your client at RouteShift, and inspect the first policy outcome before you send more traffic.
Create free account