Decision APIs
A decision API is the opposite of a chatbot: you give it context and a finite set of allowed answers, and it hands back one of them — a classification, a route, an agent's next action — with a probability, in milliseconds instead of seconds. It's a small but fast-growing category, and this page explains what it is, who offers one, and how to make a decision call today.
For two years the default way to make software "decide" was to prompt a large language model and parse whatever prose came back. That works, but it's slow, it's priced per generated token, and the model can answer with something that isn't one of your options. A decision API removes the generation step entirely: you declare the answer space up front, send the state you want a call on, and get back a typed answer plus a calibrated probability — nothing to parse, nothing invalid to guard against.
What makes something a decision API
- You define a finite answer space — a set of labels, an ordered scale, or yes/no — instead of asking for free text
- It returns one of those answers with a probability, not a paragraph you re-interpret
- It answers in milliseconds, because there's no token-by-token generation to wait on
- It's built for the high-frequency small decisions inside routing, classification, and agent loops
Who offers a decision API
The category got its name when TypeSafe AI shipped Jev, and it went mainstream on 29 September 2026 when OpenAI announced its own Decisions API at DevDay — the clearest signal yet that "decision layer" is a real category and not one vendor's framing. Here's the honest landscape:
| Jev (TypeSafe) | OpenAI Decisions API | Open models (Laya, CLM-8B) | |
|---|---|---|---|
| What it is | Purpose-built System One model | GPT-6 Luna optimized for decisions | Self-hostable decision models |
| Status | Generally available | Limited preview | Open weights, you run them |
| Output | choice · score · noul + confidence | Answer from your set + probability | Structured answer you enforce |
| Input | Text state | Text + images | Depends on the model |
| Calibration | RLCD-calibrated | Probability score (details TBD) | You validate it yourself |
| Get started | Grab a key now | Join the preview | Download & host |
The most common "decision API" is still the informal one: prompting GPT, Claude or a local Llama to decide in free text (LLM-as-a-judge). It needs no new dependency, but it's slow, pays per output token, returns prose you parse, can emit an option that isn't on your list, and isn't calibrated — fine for one-off judgments, shaky for the many small decisions in an agent loop.
Make a decision call today
OpenAI's Decisions API is preview-only for now, so the way to actually ship a decision call today is Jev, which is generally available with the same category shape — a finite answer space in, one typed answer plus confidence out. It's a single HTTPS POST:
// A decision call: context in, one typed answer + confidence out
const res = await fetch("https://jevtypesafeai.com/api/v1/decide", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.JEV_KEY}`, // jv_live_...
},
body: JSON.stringify({
state: { ticket: text },
questions: {
queue: { type: "choice", instructions: "Which queue should this go to?",
criteria: { billing: "payments", technical: "bugs", abuse: "spam/fraud", sales: "pricing" } },
},
}),
});
const { answers } = await res.json();
route(answers.queue.choice); // one of your four options — with answers.queue.confidenceanswers.queue.choice is locked to the criteria you sent, so you branch straight on it. The request shape is provider-agnostic on purpose: as other decision APIs open up (OpenAI's included), the same state-plus-answer-space call is what you'll send them — which is why building on a decision API now, rather than parsing an LLM, is the portable bet.
One call, more than one provider
We default to Jev because it's available and calibrated today. As OpenAI's Decisions API reaches general availability we plan to let you point the same call at it (and at self-hosted open models like Laya) without changing your code — the answer space and state stay the same, only the provider changes.
See a decision API in action
The tools on this site are all decision calls: a router that picks a model, a judge that grades a pull request, a classifier that triages email — each one a finite answer space resolved in a single call. Try one free in the browser, then point your own code at the endpoint.
- The New Stack — OpenAI answers TypeSafe's Jev with a Decisions API built on Luna — Background on the decision-API category and OpenAI's DevDay 2026 entry.
- @OpenAIDevs — Decisions API announcement — OpenAI's own post: real-time decision-making for apps.
FAQ
What is a decision API?
An API that returns one answer from a finite set you define — a classification, a route, an agent's next action — with a probability, in milliseconds. Unlike prompting an LLM, there's no generated text to parse and no way to return an option that isn't in your set.
How is a decision API different from an LLM?
An LLM generates open-ended text token by token; a decision API emits one typed answer from your answer space in a single pass. That makes it faster (milliseconds vs seconds), cheaper for high-frequency use, and impossible to get an invalid or made-up answer from.
Which decision API can I use right now?
Jev (TypeSafe) is generally available today — grab a key and POST to /api/v1/decide. OpenAI's Decisions API was announced at DevDay 2026 but is in limited preview; open models like Laya you can self-host. For shipping a decision call today, Jev is the ready option.
Is OpenAI's Decisions API available?
Not generally yet. OpenAI announced it at DevDay on 29 September 2026 as a limited preview built on GPT-6 Luna, with a broader release planned for the coming days. No pricing or accuracy figures have been published.
See also: OpenAI Decisions API vs Jev · OpenAI Decisions API explained · Jev alternatives · What is Jev · Playground
Make your first decision call
Try a real decision in the browser free — no signup — then grab a jv_live_ key and ship one.