Jev on OpenRouter
Jev on OpenRouter is the marketplace door: you hold an OpenRouter key, they forward System One calls to TypeSafe, and the invoice is OR’s. Snapshot: 2026-09-21. This is a complete setup guide. It is not chat completions and not a TypeSafe console substitute.
Buying context: Jev channels. Invoice matrix: pricing by channel. First-party twin: Jev on TypeSafe.
1. OpenRouter account, key, credits
- Create an account at openrouter.ai and open API keys.
- Create a key. Store it as
OPENROUTER_API_KEY(or overloadTYPESAFE_API_KEYif you point the official SDK at OR — one name, one secret). - Add prepaid credit. A 402 is OpenRouter’s wallet, not TypeSafe’s documented error set.
- Confirm the model card: openrouter.ai/typesafe/jev-1.13 and the collection openrouter.ai/typesafe.
This site does not sell OR credit.
2. What OR lists (vendor card, 2026-09-21)
Fetched from the Jev 1.13 card:
- Models: Jev 1.13 (
typesafe/jev-1.13) and Jev Latest (alias to the newest Jev; listed as~typesafe/jev-latestin their TypeSafe index copy) - List price: $0.042 / $0 per 1M (input / output)
- Weighted average input they publish on that card: $0.04152 / M tokens. Cite their page; not a contract discount.
- Context on their card: 32k (narrower than TypeSafe’s 64k combined budget)
- Released on OR’s card: 18 September 2026
- Provider table: one provider, TypeSafe. “OpenRouter forwards every request to it directly — no routing decisions to make.”
- Published monitors on that card (OR’s, not ours; re-checked this day): P50 latency 0.26 s; uptime (3d) 100.00%; availability (3d) 99.86%
3. Critical: System One, not chat completions
OpenRouter’s TypeSafe SDK guide is the shape to copy:
- Base URL for the official TypeSafe client:
https://openrouter.ai/api(SDK appends/v1/systemone) - Raw:
POST https://openrouter.ai/api/v1/systemone - Auth:
Authorization: BearerOpenRouter key - Their Jev card: the request “runs on the OpenRouter Decisions API rather than the OpenAI-compatible chat endpoint.” Chat-completions SDKs will not work.
Community write-ups still mention POST https://openrouter.ai/api/alpha/decisions. Prefer the documented System One URL above; if you already ship alpha, pin what you tested.
GET /api/v1/models on OpenRouter returns OR’s list shape. The TypeSafe SDK’s models.list() may reject it — browse the TypeSafe collection on OR instead.
4. Model ID mapping
The System One API accepts TypeSafe’s bare IDs and maps them onto OpenRouter’s typesafe/ namespace:
| You send | OR routes as |
|---|---|
jev-1.13 |
typesafe/jev-1.13 |
jev-latest |
~typesafe/jev-latest |
typesafe/jev-1.13 |
used as-is |
First-party pin jev-1.13.0 is a TypeSafe console id. Do not assume jev-1.13.0 is the OR catalog string. Log the response model (OR’s documented example: typesafe/jev-1.13-20260917).
5. First curl
From OpenRouter’s TypeSafe SDK guide:
export OPENROUTER_API_KEY=...
curl https://openrouter.ai/api/v1/systemone \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jev-1.13",
"state": "I was charged twice for my subscription.",
"questions": {
"refund": {
"type": "noul",
"instructions": "Is the customer asking for money back?"
}
}
}'
Documented example response (theirs):
{
"id": "gen-dec-1789738314-X5e5eKGQdvR9rblyX250",
"model": "typesafe/jev-1.13-20260917",
"provider": "TypeSafe",
"answers": {
"refund": { "type": "noul", "noul": 0.98 }
},
"usage": { "input_tokens": 275, "output_tokens": 20, "cost": 0.00003 }
}
id, provider, and usage.cost are OpenRouter extras. SDKs pass them through. Treat usage.cost as OR’s figure — do not invent a second meter.
6. TypeScript — official SDK pointed at OR
npm install @typesafe-ai/sdk
import { TypeSafeClient } from "@typesafe-ai/sdk";
const client = new TypeSafeClient({
apiKey: process.env.OPENROUTER_API_KEY,
baseURL: "https://openrouter.ai/api",
});
const result = await client.systemOne({
model: "jev-1.13",
state: "I was charged twice for my subscription.",
questions: {
refund: { type: "noul", instructions: "Is the customer asking for money back?" },
department: {
type: "choice",
instructions: "Which team should handle this?",
criteria: { billing: "Charges and refunds", technical: "Bugs and outages" },
},
},
});
console.log(result.answers.refund); // { type: 'noul', noul: 0.98 }
console.log(result.model, result.provider, result.usage);
Both SDKs also read TYPESAFE_BASE_URL. You can leave the constructor empty and set TYPESAFE_BASE_URL=https://openrouter.ai/api plus TYPESAFE_API_KEY=<OpenRouter key>.
7. Python — official SDK pointed at OR
pip install typesafe-sdk
import os
from typesafe_sdk import TypeSafeClient
client = TypeSafeClient(
api_key=os.environ["OPENROUTER_API_KEY"],
base_url="https://openrouter.ai/api",
)
result = client.system_one(
model="jev-1.13",
state="I was charged twice for my subscription.",
questions={
"refund": {"type": "noul", "instructions": "Is the customer asking for money back?"},
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {"billing": "Charges and refunds", "technical": "Bugs and outages"},
},
},
)
print(result.answers["refund"])
print(result.usage)
Yes/no stays noul. Do not send Vercel AI SDK boolean here.
8. Pitfalls
- Chat completions / OpenAI SDK. 404 or a shape error is not a pricing bug.
- Wrong host. A TypeSafe console key on
openrouter.ai(or the reverse) is a 401. - Context cap. OR cards 32k. TypeSafe docs: 64k combined / 32k state+longest question. Believe the door you call.
models.list()via the TypeSafe SDK against OR’s Models API can fail shape checks. Browse the TypeSafe collection instead.- 402 = add OR credit. 429 = their rate limit; apply your own backoff (OR is not the official TypeSafe 429/529 table).
Run your own latency probe. OR’s 0.26 s P50 is theirs.
When this door wins
No TypeSafe waitlist, prepaid OR balance, one bill next to other OR models, official SDK with only baseURL + key changed. When it loses: you need first-party 64k + Playground + a TypeSafe MSA — Jev on TypeSafe.
FAQ
Is OpenRouter hosting a second Jev?
Not on the card we fetched. Provider = TypeSafe.
Why is the weighted average below $0.042?
OR says averages can sit under list because of caching and discounts. We did not reverse-engineer $0.04152.
Does jev.pro give you OpenRouter credit?
No.
What this page does not claim
- No invented OR fee schedule beyond the Jev card.
- No bake-off vs Vercel or first-party.