OpenJev: a free API for a model that answers questions instead of writing
Free to call, with a key and no card. Give it some text and a question with a fixed answer space and it returns the answer, typed, with a number beside it. It does not write, and there is no field in the response where it could. We host the model ourselves, which is why the calls cost nothing.
What people point it at
The shape it fits is a decision your code has to make about text it cannot read. Not "write me a summary" — "is this the kind of thing I should stop for?"
An agent about to run a shell command, drop a table, or send an email asks whether the action is destructive, and stops for a human when it is. It is also the case where the threshold is easiest to get wrong — the measurements below show why, on this exact question.
{ "type": "noul", "instructions": "Is this command destructive or irreversible?" }A ticket, an email, an alert arrives and something has to decide where it goes. A labelled choice returns the queue plus how clearly it preferred it, so the close calls can go to a person instead of the wrong queue.
{ "type": "choice", "instructions": "Which team should handle this?",
"criteria": { "billing": "Payments, refunds", "technical": "Bugs, outages" } }Judge cheaply first: is this worth a frontier call at all, is it in scope, is it spam. The ones that pass go to the expensive model; the rest never cost you a token. The judgment is free, so the filter pays for itself immediately.
{ "type": "noul", "instructions": "Does this request need a reasoning model, or is it a lookup?" }Score sentiment, severity, or quality across rungs you define in words rather than numbers you have to explain. You get a weighted position and the distribution behind it, so a flat distribution is visible as a flat distribution.
{ "type": "score", "instructions": "How severe is this incident report?",
"criteria": ["Informational", "Degraded", "Outage"] }All four can travel in one request — up to sixty-four questions about the same state, answered together, for the same nothing.
What comes back
One entry per question, keyed by the id you chose. This is a real reply from the live endpoint on 2026-09-20 — the support-ticket state above, three questions, one call:
{
"model": "openjev",
"answers": {
"is_urgent": { "type": "noul", "noul": 0.708356499671936 },
"department": { "type": "choice", "choice": "billing",
"probabilities": { "billing": 0.4638,
"technical": 0.4112,
"account": 0.125 },
"confidence": 0.4638 },
"frustration": { "type": "score", "score": 1.269,
"legend": { "0": "Calm", "1": "Frustrated", "2": "Very angry" },
"probabilities": { "0": 0.0523, "1": 0.6261, "2": 0.3217 },
"confidence": 0.6261 }
},
"usage": { "input_tokens": 20, "output_tokens": 0 }
}Look at department. It answered "billing" — and technical scored 0.4112 against billing's 0.4638. That is a five-point margin on a ticket a human would route instantly, and it is the case worth handling: act on the wide margins, send the narrow ones to a person. A page that showed you a confident 0.9 here would be showing you the easy half.
A score is the probability-weighted position across your rungs, so 1.269 sits just past "Frustrated" on the way to "Very angry". The legend comes back with it so you never have to remember which index meant what.
What it actually does, measured
Run against the live endpoint on 2026-09-20. Same question, two inputs, and the point is not the winner — it is where the numbers land.
| state | "Is this command destructive or irreversible?" |
|---|---|
| rm -rf / | 0.378 |
| ls -la | 0.104 |
It ranks them correctly and by a wide margin. And a threshold at 0.5 would wave rm -rf / through as safe. Read 0.378 as a probability — as though the model were telling you how likely it is that the command is destructive — and you will build exactly that gate, and nothing will tell you it is wrong until it is.
The number is not a probability of correctness — it is how strongly the model found the text supports the claim, on its own scale. Use the separation, not the level: run your own labelled examples, see where the two groups sit, and put the line between them. Here that line is nearer 0.2 than 0.5, and you would only know that by looking.
Speed, and the cold start worth knowing about
That last one is a real difference from asking a chat model the same question: this is a cross-encoder scoring a pair, not a sampler, so the same state and the same question return the same number every time. You can regression-test a judgment.
The cold start is the honest cost of giving it away: the GPU sleeps when nobody is asking. If your first call in a while takes half a minute, that is what happened, and the next one will not.
OpenJev is not Jev
This is the first thing to settle, because the names invite the opposite conclusion. Jev is TypeSafe's model. OpenJev is an independent open-source model, MIT licensed, published by AlexWortega. They are not the same model, not the same people, and OpenJev is not a smaller or free tier of Jev. It answers a similar shape of question, and that is the extent of it.
We do not sell or resell Jev. We host OpenJev and give it away, and we expect it to be materially weaker than Jev. We have not benchmarked the two against each other and no published comparison exists, so we are not going to put a number on the gap — see the full comparison for what can and cannot honestly be said.
What it is, technically
| Architecture | A natural-language-inference cross-encoder built on a Qwen3.5 4B base |
| What it outputs | For a premise and a hypothesis: how strongly the premise entails it |
| Licence | MIT |
| Author | AlexWortega, published on Hugging Face |
| Input we accept | Text and JSON. The v2 checkpoint also reads images; our endpoint does not expose that yet |
| Where we run it | Our own GPU, scaled to zero between calls |
The three question types we expose — a yes/no, a labelled choice, a score over rungs you name — are all the same operation underneath. Your text is the premise, your question is the hypothesis, and the answer is the entailment between them.
How good is it? What its authors publish
These are the model authors' own figures, from the Hugging Face card, read on 2026-09-20. We have not re-run them, and they are zero-shot scores on standard natural-language-inference sets — the task underneath all three question types, and not your task.
| Benchmark | v1 | v2 (what we serve) |
|---|---|---|
| ANLI r3 (adversarial NLI) | 0.42 | 0.63 |
| WANLI | 0.63 | 0.77 |
| MNLI | 0.91 | 0.91 |
A benchmark score is not a promise about your data. The only number that should decide anything is the one you get running your own labelled examples through it, which costs nothing here.
Calling it
One POST, a key from user.blockrun.ai, no payment header and no wallet.
curl -X POST https://api.blockrun.ai/v1/decide \
-H "authorization: Bearer $BLOCKRUN_API_KEY" \
-H "content-type: application/json" \
-d '{"state": "Help! My payouts have been failing for 3 days.",
"questions": {"urgent": {"type": "noul",
"instructions": "Does this convey urgency?"}}}'Full request shape, all three question types and the response fields are in the API reference. The endpoint itself is described on the Decide page, and the text classification API walks through the one job most people bring it, including the case it gets wrong.
OpenJev questions: what it is, licence, accuracy, how to call it
- What is OpenJev?
- An open-source natural-language-inference cross-encoder built on a Qwen3.5 four-billion-parameter base, published under MIT by AlexWortega. It answers typed questions about a piece of text rather than writing anything.
- Is OpenJev the same as Jev?
- No. Jev is TypeSafe's model. OpenJev is an unrelated open-source model that took a similar name because it answers a similar shape of question. It is not a smaller checkpoint, a free tier, or a community port of Jev, and we do not resell Jev.
- What licence is the OpenJev model under?
- MIT, which is why we can host it and give the calls away. The weights are public on Hugging Face if you would rather run it yourself.
- How accurate is OpenJev?
- Its authors publish zero-shot scores on standard natural-language-inference sets and we link them with the date we read them, but we have not re-run them and none of them is a comparison against Jev. A benchmark is not a promise about your data — run your own labelled examples, which costs nothing here.
- How do I call the OpenJev API?
- One POST to the decide endpoint with a bearer key from user.blockrun.ai. No payment header and no wallet: it is free with any registered key. The API reference carries the request shape and every response field.
- Does OpenJev accept images?
- The v2 checkpoint reads images as well as text, but our endpoint does not expose that yet — we accept text and JSON. If you need the image path today, run the weights yourself.
- OpenJev vs a chat model with a JSON schema?
- A chat model can be prompted into a label, but you pay per token, tune a prompt, police a schema and get a string with no calibrated number behind it. This returns the type and a margin directly, free. The honest move is to try both on your own data — one key reaches both here.
- Why is calling the OpenJev API free?
- A judgment costs less to serve than the smallest amount our paid rail can settle, so metering it would cost more than the answer does. It is free behind a registered key instead.
- Can an AI agent use OpenJev on its own key?
- Yes. Give the agent a registered key and it decides as often as it needs to within a generous hourly limit, getting back a value it can branch on without a parser.