Explainable policy routing

Control where AI requests runand prove what the decision saved.

Apply routing, budget, quality, and data-policy controls through one OpenAI-compatible endpoint—then inspect the exact rule, route, and cost outcome.

Routing proof

See the decision before you send traffic

Interactive example · fixed sample rules · no provider call.

  1. 01

    Request

    Requested route
    qwen/Qwen3-Coder-480B-A35B-Instruct (requested)
    Prompt
    Review this TypeScript function and suggest a fix.
  2. 02

    Policy

    Derived tags
    coding
    Matched rule
    demo-coding-route
  3. 03

    Route

    Resolved route
    qwen/Qwen3-Coder-480B-A35B-Instruct
    Fallbacks
    zai/glm-4.5-air

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

Provider compatibility you can inspect

Compatibility from the shipped catalog

  • OpenAI
  • Azure
  • Anthropic
  • Google
  • Z.ai
  • Cloudflare Workers AI
  • NeuralWatt
  • Xiaomi
  • MiniMax
  • Moonshot
  • Qwen
  • Bedrock
  • Groq
  • Together

Policy you can audit

Decide, protect, and prove every request.

RouteShift keeps the policy decision visible from the first request through the savings receipt.

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

Protect

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.

  • Daily, weekly, and monthly budgets
  • Provider and model controls
  • Prompt guardrails
  • Residency and ZDR policy

Prove

Trace every route and reconcile the result.

Activity, analytics, receipts, and exact reason codes connect aggregate changes to individual requests.

  • Exact route and fallback reasons
  • Savings receipts
  • Cost anomaly signals
  • Cache and token evidence

Integration proof

Change the base URL. Keep the client.

Route an existing OpenAI-compatible SDK through RouteShift, then add policy without rewriting request or response code.

client configuration
const client = new OpenAI({
  baseURL: 'https://api.routeshift.io/v1',
  apiKey: process.env.ROUTESHIFT_API_KEY,
});

Connect targets available today

The Connect CLI auto-configures these OpenAI-compatible targets:

  • opencode
  • Continue/Cline
  • aider

MCP catalog

Give agents a read-only catalog for model availability, pricing, and rankings before they choose a route.

Typed SDK

Keep typed request helpers for chat, streaming, and embeddings while RouteShift records the decision.

Product proof

See the evidence behind every outcome.

A workspace view connects route decisions, cache signals, and measured savings without pretending example values are customer telemetry.

workspace / proof

Example workspace data

Total Saved

$12,847

Cost Reduction

47%

Cache Hit Rate

34%

Requests Routed

2.3M

Sample Cost Savings Trend

Illustrative 12-month trend

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

Sample Activity

illustrative rows
  • Example 1cloudflare-workers-ai@cf/zai-org/glm-5.3-flash
    $0.0031200
  • Example 2qwenQwen3-Coder-480B-A35B-InstructCACHED
    $0.00200
  • Example 3zaiglm-4.5-air
    $0.0008200
  • Example 4openaio4-miniCACHED
    $0.00200

Illustrative sample data for the landing page preview; not live customer telemetry.

Built for operator jobs

One gateway for the team that owns the bill.

Keep spend, reliability, and developer access in the same explainable route instead of splitting them across tools.

FinOps & platform

Cap spend before it ships

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 receipts

Reliability

Stay up when a provider doesn't

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 activity

Agent teams

Give every harness the same route

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 docs

Setup path

Route your first request in three steps

The path from a new key to an explainable route stays usable with plain links and a normal OpenAI-compatible client.

  1. 01

    Create a scoped API key

    Start with a key whose permissions and allowed models match the workload you want to route.

    Create an account
  2. 02

    Point your OpenAI-compatible client at RouteShift

    Use the documented base URL and keep your existing OpenAI-compatible request flow.

    Read the integration docs
  3. 03

    Add policy and inspect the first decision

    Create a routing rule, send a request, and read the exact rule, route, and fallback explanation.

    Open routing rules

Quickstart

First request in a minute

Works with any free-tier key — pick the path that matches your stack.

terminal
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

Pay when measured savings exist.

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.

  • No platform fee to start
  • Measured savings are the fee basis
  • No savings means no savings-share fee

Worked example

$10,000
$1,000$100,000
Model mix

Assumes 30/20/10% measured savings by tier vs a 5% flat markup — adjust spend and mix.

$10,000 $2,300 measured savings

Measured savings
$2,300
RouteShift 3% fee
$69
Flat-5% comparison
$500
Difference
$431

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

BYOK provider spend

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.

Credits mode

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.

Create free account

Exact route reasons

Inspect the matched rule, resolved route, fallback, and explanation for a request.

Example data labelled

Landing previews identify illustrative workspace values instead of presenting them as telemetry.

Public product updates

Follow the curated changelog and public documentation as the product changes.

FAQ

Clear answers before you route.

Can I use my existing OpenAI-compatible client?

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.

How are savings measured?

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.

What is the difference between BYOK and credits?

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.

How do budgets and guardrails work?

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.

What security and data-policy controls are available?

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.

Which tools are supported today?

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.

How is RouteShift different from OpenRouter?

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.

What do the error codes mean?

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

Make the next routing decision explainable.

Create a scoped key, point your client at RouteShift, and inspect the first policy outcome before you send more traffic.

Create free account