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 slugtypesafe/jev-router (no plugin needed)
ReleasedSeptember 25, 2026 (OpenRouter model page)
PriceNo fixed price. Billed at the price of the model that serves each request; the models API lists the router’s price as -1 (variable).
ContextCan route to models with up to 1,000,000 tokens; the limit is that of the model that serves the request.
Input / outputText, images, files (e.g. PDF), audio and video in; text out (depends on the chosen model).
APIsChat Completions, Responses and Messages; streaming and non-streaming.
Cost tierslow, medium, high; omit for Jev’s default policy.
RegionGlobal data region only; not available through EU in-region routing.
Router behind itJev (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:

ShellMinimal Jev Router 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).

JSONRequest body with the plugin
{
  "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_tier picks 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_models are 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_models is 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-latest aliases), at most 1,024 characters per pattern and 65,536 per list. Matching is case-sensitive.
  • Reasoning effort: reasoning.effort is only a hint; the router may choose a different effort or change it across turns. reasoning.max_tokens and reasoning.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-router with 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.

ShellInspect the routing decision
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.

ShellKeyless metadata check (run 2026-10-28)
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 RouterAuto Router
Slugtypesafe/jev-routeropenrouter/auto (and openrouter/auto-beta)
How it picksJev judges the task, its difficulty and the benefit of a stronger model, then a cost policy appliesA lightweight classifier tags about 30 task types; models ranked by OpenRouter users’ share of spend over a trailing 7 days
Reasoning effortChosen by the router (your setting is a hint)Not described as router-chosen in the docs
Cost tierslow, medium, high (default: Jev’s policy)low, medium, high, xhigh, max (default: roughly low)
Router feeNone; billed at the serving model’s priceNone; standard rate of the selected model
Price capNot documented on the Jev Router pageprovider.max_price still applies
Model filtersmodels/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 model field on every call so you can see cost and quality per routed model.
  • Put compliance rules in excluded_models, never in models.
  • 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)

Related