Jev API: The Endpoint Most Guides Get Wrong
The Jev API is not where an OpenAI-compatible client expects it to be. Point one at Jev and the server turns you away before the model ever reads your text — your key is fine, the model name is fine, the endpoint is wrong. This page covers the HTTP layer only: the path that works, the request body it expects, and the four routes you can buy access through. For library code in Python or JavaScript, see the Jev SDK; for the model itself, start with what Jev AI is.
Why chat/completions fails
Trying a new model usually means swapping a string into a call you already have. That move fails against the Jev API, and it fails loudly. Send Jev to the normal chat endpoint through OpenRouter and the response body is this:
typesafe/jev-1.13 is a decisions model and cannot be used with the
chat/completions endpoint. Use the /api/alpha/decisions endpoint instead.The message is doing you a favour by naming the fix. The reason behind it is worth two sentences, because it explains every other quirk on this page. A chat endpoint’s contract is messages in, generated tokens out. Jev never generates tokens: it reads your input once and returns a typed value per question. There is no messages array to accept, no assistant turn to append, and nothing to stream, so the route that expects all three refuses the model outright rather than half-working.
The practical consequence is that the Jev API has a decisions path of its own on every route, and the paths do not match each other. Through OpenRouter it is POST /api/alpha/decisions. Talking to TypeSafe directly, the official SDKs post to https://api.typesafe.ai/v1/systemone. Different host, different path — but the same three fields in the body, which is the part worth learning once.
The request shape Jev expects
A complete Jev API call, with all three question types in one request. This is the exact shape the playground on this site sends:
curl -X POST https://openrouter.ai/api/alpha/decisions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "typesafe/jev-1.13",
"state": "I paid yesterday by card and still have no activation code. I need it tomorrow.",
"questions": {
"category": {
"type": "choice",
"instructions": "Which queue should handle this message",
"criteria": {
"not_received": "Paid but has not received the product",
"refund": "Asking for a refund",
"presale": "Has not bought yet, asking about price"
}
},
"urgency": {
"type": "score",
"instructions": "How time-sensitive is this",
"criteria": ["Just asking", "Wants it resolved today", "Needs it immediately"]
},
"is_frustrated": {
"type": "noul",
"instructions": "The customer sounds frustrated or angry"
}
}
}'Three keys, no envelope: model, state, questions. Nothing about temperature, max tokens, stop sequences or system prompts — none of those concepts exist here.
state — what you give it to look at
The material under judgement: a ticket, an email, a form submission, a document. Plain text is the common case, and structured JSON is accepted too, which matters when the thing you are classifying already has fields. State is what you are billed for, since the Jev API charges input tokens only.
questions — choice, score, noul
A map from your own names to typed questions, answered together in one call for one input charge. A choice takes labelled criteria and returns one of those labels with a probability for each. A score takes an ordered list of descriptions, lowest first, and returns a number that may land between two levels. A noul takes an instruction and returns a single probability from 0 to 1. The names you choose are the keys your answers come back under, so name them for your code, not for the model.
Four routes to the Jev API
The token rate is the same on the two routes that publish one. What differs is the account you need, the fees around the tokens, and how much of your stack you hand over.
TypeSafe direct
Sign up at console.typesafe.ai with a Google account or an email code. There is no waitlist and no invitation step — the Join Waitlist button on the TypeSafe homepage does not gate the console, which trips up more people than it should. You get a key in the TYPESAFE_API_KEY environment variable, and requests go to api.typesafe.ai. This is the route the official libraries assume by default, so it is the one to pick if you want the SDK to work with no configuration.
OpenRouter
OpenRouter resells Jev at TypeSafe’s own rate — $0.042 per million input tokens, output free, no markup on the tokens themselves. The cost lands in the account instead: a $10 minimum top-up, and a 5.5% card processing fee with a $0.80 floor, or 5% if you pay in crypto. If you already keep credit there, this is a one-line change. It is also the route this site calls the Jev API through, which is why the latency figures we publish are OpenRouter figures rather than direct ones.
Vercel AI Gateway
If your app already deploys on Vercel, the gateway removes the key-management step entirely. Jev reached nearly 13% of paid Vercel teams within 24 hours of launch — the fastest-adopted model in that gateway’s history. Read that as a fact about distribution rather than about quality: when a gateway already holds your credentials, trying a model costs one line, and plenty of those teams were trying rather than shipping.
Third-party resellers
A handful of sites resell Jev behind their own hosted interface, at a markup over the direct rate. We are deliberately not naming any of them and not quoting a multiple: the pricing we found contradicted itself between pages and changes without notice, and publishing a number we cannot stand behind would be worse than publishing nothing. Check the reseller’s own pricing page before committing. The honest case for this route is narrow — you want a ready-made interface and no account of your own.
Side by side: what each route costs you
All four routes reach the same Jev API and the same weights. What changes is the paperwork around them.
| Route | Endpoint | Cost beyond tokens |
|---|---|---|
| TypeSafe direct | api.typesafe.ai/v1/systemone | None published |
| OpenRouter | openrouter.ai/api/alpha/decisions | $10 minimum top-up; 5.5% card fee, $0.80 floor; 5% crypto |
| Vercel AI Gateway | Managed by the gateway | Whatever your Vercel plan bills |
| Reseller | The reseller’s own | An unpublished markup |
Rates and signup details checked 2026-09-20. The per-call arithmetic against small language models is on pricing and access. To see a real response before writing any code, the playground runs the request above and exports it as curl.
Frequently asked questions
What is the Jev API endpoint?
There are two, depending on who you buy from. Through OpenRouter: POST https://openrouter.ai/api/alpha/decisions. Through TypeSafe directly, which is what the official SDKs use: POST https://api.typesafe.ai/v1/systemone. Both take the same body.
Why does chat/completions not work?
Because Jev is a decisions model, and the server says so in the rejection text. It accepts no messages array and produces no tokens, so the chat route has nothing to hand it and nothing to return.
Do I need a waitlist invite to get a Jev API key?
No. console.typesafe.ai is open registration with a Google account or an email code. The Join Waitlist button on the marketing homepage does not block the console, and OpenRouter and the Vercel gateway are open too.
How much does the Jev API cost?
$0.042 per million input tokens, with output billed at zero. On a thousand-token classification that is a small fraction of a cent. The comparison that matters is against the small models you would otherwise use for the same job, and it is on pricing and access.
Which route is cheapest?
TypeSafe direct and OpenRouter charge the same per token for the Jev API, so the difference is account overhead rather than model price: OpenRouter adds a minimum top-up and a payment processing fee, TypeSafe direct publishes neither. Resellers charge more than both.
Does the Jev API support streaming?
There is nothing to stream. Streaming exists so you can show tokens as they are generated, and Jev generates none — one pass, then a finished set of typed answers. The official clients expose no streaming method at all.