Automatic savings
New cost-saving strategies roll into Router as they prove themselves. Your integration stays put.
01 / Every model behind one key
One endpoint, one bill, every model — cut your AI costs by 40% on average. Router matches each request to the lowest-cost model that meets its performance needs. Watch it happen:
27 models · 8 providers · one endpoint
02 / How routing pays
Engineering gets the best model for every workload. Finance gets lower inference spend. As Router shifts traffic from Default to Flex capacity, the total cost index falls from 100 to 70.
Automatic savings
New cost-saving strategies roll into Router as they prove themselves. Your integration stays put.
Smarter defaults
Router tests new models against real workloads, so the best fit becomes your default.
More models. One endpoint.
Closed and open-source models from vetted providers, all US-hosted with options for ZDR.
03 / Do the math
Drag the sliders. We price your current spend at the frontier default, then reprice the same traffic the way Router would dispatch it.
Simple requests route to budget models like deepseek-v4-flash. Complex requests stay on frontier models like claude-opus-5.
—% lower
Methodology: list prices from docs.router.com (USD per 1M tokens), 80/20 input/output split, simple traffic priced at deepseek-v4-flash ($0.14/$0.28), complex at claude-opus-5 ($5/$25). Routing itself is free through 2026. Your mileage will be better — this ignores prompt caching and Flex capacity.
04 / The catalog
Every model below ran Ramp SWE-Bench — a benchmark built from real production engineering work. Turns counts agent steps to a solved task; fewer is faster. Cost is the average per task.
| Model | Tier | Avg cost | Turns | Turns/min | Tokens in/out |
|---|
27 / 27 models
05 / Same prompt, two models
One real prompt, sent to a frontier model and a budget model. Both solve it. One costs 15× more. Router makes this call on every single request — you can also compare any two models side by side yourself.
“Refactor this retry loop — exponential backoff with jitter, max 5 attempts, surface the last error.”
Router picks Flash for this class of request and reserves Opus for the work that actually needs it. That decision, times every request you send, is the product.
06 / Ramp SWE-Bench
We built Ramp SWE-Bench from real production engineering work because public leaderboards couldn't answer our questions. It gives a clearer view of what each model can solve — and at what cost.
07 / Put to work at Ramp
Ramp gives Router a real-world proving ground. The lessons we learn in production feed directly back into the product.
“At Ramp, Router cut our overall LLM cost by 30% while making our features smarter and faster.”
08 / In production elsewhere
“Choosing the right model makes a meaningful difference to our AI spend. We run billions of tokens through Router, and have reduced our model costs by 92%.”
“Ramp Router has given us access to a safe one-stop-shop for model providers in a matter of minutes. I'm a big fan of the vision to help benchmark and manage costs as we go multi-model.”
“It's just dead-simple. Between Flex tier and Switchyard this is free money with 0 effort, and it's saving me the headache of having to think about constantly switching models.”
09 / Ship it
Router speaks the OpenAI and Anthropic SDKs. Change the base URL, keep everything else. GET /v1/models is the authoritative list of callable IDs.
from openai import OpenAI
client = OpenAI(
api_key=os.environ["RAMP_ROUTER_API_KEY"],
base_url="https://api.router.com/v1", # ← the one-line change
)
resp = client.chat.completions.create(
model="router", # or any ID from GET /v1/models
messages=[{"role": "user", "content": "Ship it cheaper."}],
)
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.RAMP_ROUTER_API_KEY,
baseURL: "https://api.router.com/v1", // ← the one-line change
});
const resp = await client.chat.completions.create({
model: "router",
messages: [{ role: "user", content: "Ship it cheaper." }],
});
import anthropic
client = anthropic.Anthropic(
api_key=os.environ["RAMP_ROUTER_API_KEY"],
base_url="https://api.router.com", # ← the one-line change
)
msg = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Ship it cheaper."}],
)
curl https://api.router.com/v1/chat/completions \
-H "Authorization: Bearer $RAMP_ROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "router",
"messages": [{"role": "user", "content": "Ship it cheaper."}]
}'
10 / Fair questions
11 / Tokens are money
$26 in model credits · free routing through 2026 · subject to offer terms