Compare · Explainer · Last verified 2026-10-28
Jev Router on OpenRouter: what it does, what it costs, how to set it up
Short answer
Jev Router (typesafe/jev-router) is an OpenRouter model slug that uses TypeSafe’s Jev decision model to choose a model and a reasoning effort for each request, then hands the request to that model. It has no fee of its own: you pay the price of whichever model serves the request. It was released on September 25, 2026, works on Chat Completions, Responses and Messages, and is available only in OpenRouter’s global data region. Checked against OpenRouter’s docs and model page on 2026-10-28.
- Use it when you send a mix of easy and hard requests and don’t want to pick one model and one reasoning effort for all of them.
- Skip it when you need EU in-region routing, a fixed model for evaluation or compliance, or a predictable per-request price.
Key facts
| Model slug | typesafe/jev-router (no plugin needed) |
|---|---|
| Released | September 25, 2026 (OpenRouter model page) |
| Price | No fixed price. Billed at the price of the model that serves each request; the models API lists the router’s price as -1 (variable). |
| Context | Can route to models with up to 1,000,000 tokens; the limit is that of the model that serves the request. |
| Input / output | Text, images, files (e.g. PDF), audio and video in; text out (depends on the chosen model). |
| APIs | Chat Completions, Responses and Messages; streaming and non-streaming. |
| Cost tiers | low, medium, high; omit for Jev’s default policy. |
| Region | Global data region only; not available through EU in-region routing. |
| Router behind it | Jev (TypeSafe), the same model behind OpenRouter Armor. |
Setup: one model string
Send typesafe/jev-router as the model. The response’s model field tells you which model actually answered. This is OpenRouter’s documented minimal request:
curl https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "typesafe/jev-router",
"messages": [
{"role": "user", "content": "Explain the difference between a mutex and a semaphore."}
]
}'To set a cost tier or model preferences, add the optional jev-router plugin. Every field except id is optional, and unknown fields return 400 (for example, allowed_model is not an alias).
{
"model": "typesafe/jev-router",
"plugins": [{
"id": "jev-router",
"cost_tier": "high",
"models": ["anthropic/*", "google/*"],
"excluded_models": ["anthropic/claude-opus*"]
}],
"reasoning": {"effort": "high"},
"messages": [{"role": "user", "content": "Analyze the tradeoffs in this design."}]
}Plugin options and the rules that matter
cost_tierpicks the routing policy (low: lower estimated cost; medium: balance; high: more capable models when the benefit justifies the cost). It is a preference, not a price cap, and changing it can change the model mid-conversation.models/allowed_modelsare include preferences with fallback, not allowlists. If they leave no routable model, Jev retries without them. OpenRouter says not to use them to enforce an author restriction.excluded_modelsis a hard rule. If it removes every candidate, the request fails with 404 instead of routing to an excluded model. Use this for compliance.- Each list takes up to 1,024 patterns (exact slugs, dated revisions, wildcards such as
*flash*, or~author/family-latestaliases), at most 1,024 characters per pattern and 65,536 per list. Matching is case-sensitive. - Reasoning effort:
reasoning.effortis only a hint; the router may choose a different effort or change it across turns.reasoning.max_tokensandreasoning.mode: "pro"return 400. - In supported agentic workflows the router can keep a model, adjust its effort, or switch models as the task moves on, and when the policy allows it an “expert advisor” model can assist.
- Don’t combine
typesafe/jev-routerwith another router model in one request (400). Errors: 400 for bad fields, regional routing or combined routers; 404 when no eligible model remains or you lack access; 503 when the router is unavailable.
See what the router picked
Send X-OpenRouter-Metadata: enabled and read the jev-router stage of openrouter_metadata.pipeline. It lists the resolved models in fallback order, candidates with effort, capability tier and estimated cost (an estimate, not the billed cost), the policy’s reason, and whether the default or agentic pipeline ran.
curl https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-H "X-OpenRouter-Metadata: enabled" \
-d '{
"model": "typesafe/jev-router",
"plugins": [{"id": "jev-router", "cost_tier": "medium"}],
"messages": [{"role": "user", "content": "Reply with ok"}]
}' | jq '.openrouter_metadata.pipeline[] | select(.name == "jev-router") | .data | {resolved_models, candidates, reason, pipeline, advisor_model}'What we ran on 2026-10-28: the public endpoints call needs no key and returned HTTP 200 with the router’s metadata; a chat call without a key returned 401. We did not send paid requests, so we have no first-hand routing results.
curl -s https://openrouter.ai/api/v1/models/typesafe/jev-router/endpoints
# HTTP 200
# {"data":{"id":"typesafe/jev-router","name":"TypeSafe: Jev Router","created":1790363560,
# "architecture":{"tokenizer":"Router","modality":"text+image+file+audio+video->text", ...},
# "endpoints":[]}}Where requests land
OpenRouter’s model page lists the top models used by Jev Router. On 2026-10-28 it showed DeepSeek V4.1 Flash (25.0%), GPT-6.1 Sol (16.1%), GPT-6 Luna (8.6%), GLM 5.3 Flash (8.0%) and GLM 5.3 (7.8%), with the rest spread over other models (34.6%). These are OpenRouter’s aggregate figures across all users, not a promise about your traffic. [OpenRouter data; changes daily]
Jev Router vs OpenRouter Auto Router
| Jev Router | Auto Router | |
|---|---|---|
| Slug | typesafe/jev-router | openrouter/auto (and openrouter/auto-beta) |
| How it picks | Jev judges the task, its difficulty and the benefit of a stronger model, then a cost policy applies | A lightweight classifier tags about 30 task types; models ranked by OpenRouter users’ share of spend over a trailing 7 days |
| Reasoning effort | Chosen by the router (your setting is a hint) | Not described as router-chosen in the docs |
| Cost tiers | low, medium, high (default: Jev’s policy) | low, medium, high, xhigh, max (default: roughly low) |
| Router fee | None; billed at the serving model’s price | None; standard rate of the selected model |
| Price cap | Not documented on the Jev Router page | provider.max_price still applies |
| Model filters | models/allowed_models (soft), excluded_models (hard) | allowed_models, excluded_models; can be saved per workspace |
Pick Jev Router if you want the router to also set reasoning effort per request and you can live with global-region routing. Pick Auto Router if you want a hard price cap through provider.max_price, more cost bands, or settings saved at the workspace level. If you need repeatable evaluations, call a fixed model instead of either router.
Author routers
When they are in OpenRouter’s catalog, openai/auto, anthropic/auto and other author/auto slugs run Jev with only that author’s models (a hard restriction). The author scope is the model maker, not the host, so an OpenAI model can still be served by another provider such as Azure. openrouter/auto is the separate Auto Router and does not behave this way.
Claude Code and Codex
OpenRouter’s Ori harness starts an agent CLI on OpenRouter and accepts any OpenRouter model ID through --model, and Claude Code can also be pointed at OpenRouter with ANTHROPIC_BASE_URL set to https://openrouter.ai/api. We have not tested Jev Router inside Claude Code or Codex. OpenRouter’s Claude Code guide says Claude Code on OpenRouter is only guaranteed to work with the Anthropic first-party provider, and Jev Router may send turns to other models, so test before relying on it. [not tested by us]
Checklist before you switch
- Log the response
modelfield on every call so you can see cost and quality per routed model. - Put compliance rules in
excluded_models, never inmodels. - Need EU in-region routing? Jev Router won’t work; use a fixed model with regional routing.
- Need a decision (yes/no, a label, a score) rather than a written answer? Call a decision API directly; see decision model vs LLM and Jev’s own API ($0.042 per 1M input tokens).
- Guarding agent tool calls instead of choosing models? That is OpenRouter Armor, also built on Jev.
FAQ
What is Jev Router?
A model slug on OpenRouter, typesafe/jev-router, that chooses which model and which reasoning effort answer each request. TypeSafe’s Jev decision model assesses the task, its difficulty and the likely benefit of a stronger model, and a routing policy weighs that against estimated cost and your preferences. The selected model writes the answer; Jev only makes the routing decision.
How much does Jev Router cost?
It has no fixed price of its own. OpenRouter says each request is billed at the price of the model that serves it, and its models API lists the router’s own prompt and completion price as -1 (variable). Your cost depends on where requests land, so watch the response model field and your OpenRouter activity.
What is the difference between Jev Router and OpenRouter Auto Router?
Auto Router (openrouter/auto) ranks models by what OpenRouter users spend on for about 30 task types over a trailing 7-day window and offers five cost tiers (low to max). Jev Router uses Jev to judge each request and also picks the reasoning effort, with three cost tiers (low, medium, high). Neither adds a router fee, per OpenRouter’s docs.
Can I use Jev Router with Claude Code or Codex?
Jev Router works on the Chat Completions, Responses and Messages APIs, and OpenRouter’s Ori harness accepts any OpenRouter model ID via --model. We have not tested it inside Claude Code or Codex, and OpenRouter’s Claude Code guide says Claude Code on OpenRouter is only guaranteed to work with the Anthropic first-party provider.
Is Jev Router available in the EU region?
No. OpenRouter says Jev Router is available only in the global data region, and the model page says it is not currently available through EU in-region routing. Regional routing requests return 400.
Methodology
Every fact on this page comes from OpenRouter’s documentation, model page or public models API, checked on 2026-10-28. Items marked in amber are third-party aggregate data or things we did not test. We made no paid requests. AgentAPIList has no affiliate or sponsor relationship with OpenRouter or TypeSafe. See our methodology.
Sources (checked 2026-10-28)
- OpenRouter docs: Jev Router
- OpenRouter model page: TypeSafe Jev Router
- OpenRouter models API: typesafe/jev-router endpoints
- OpenRouter docs: Auto Router
- OpenRouter docs: Jev hub
- OpenRouter docs: Claude Code integration
- OpenRouter docs: Ori Harness
- TypeSafe docs: Models (Jev)