/v3/alpha/decisions directly rather than swapping a base URL.
It never writes prose. That is the point: the answer is a value your code can branch on without parsing, and the schema is guaranteed.
When to use one
Reach for this when you are making the same small judgement over and over and the possible answers are known in advance:- Routing: which team, queue, or model should handle this?
- Classification: which category, out of up to 255?
- Triage and scoring: how severe, how urgent, how positive, on your own rubric?
- Gating: is this a refund request, is this spam, is this ready to send?
- Cheap pre-filters: decide whether an expensive model needs to run at all.
A decision model also cannot reliably count items or do arithmetic, and it reads
instructions literally. Phrase questions positively where you can: negations and
implications are easy to get wrong.
Endpoints
provider/model, the same format used everywhere else in V3.
There is no streaming. A decision is one request and one JSON body, typically well under a second.
List available models
jev-latest is the current stable model. jev-preview is the newest build, stable or not. Both resolve to a concrete version, which the response reports back in its model field.
The three question types
Every question has atype and, optionally, instructions. What criteria means depends on the type.
noul: is this true?
Returns a single probability from 0 to 1. Values near 1 mean yes, near 0 mean no, and near 0.5 mean the model is genuinely unsure.
choice: which one of these?
Returns the winning option plus the probability of every option and a confidence. Up to 255 options.
score: which level?
Returns a position on your rubric. criteria is an ordered list, and the score is the probability-weighted average, so it can land between levels. The legend echoes your rubric back so you can read the number.
Worked example: triaging a support ticket
One request can carry as many questions as you like, and they are answered together over the same state. Asking three questions costs barely more than asking one, because the state is only read once.Request body
state does not have to be a string. Pass an object or an array when the shape itself carries meaning, and the model will read the structure:
Structured criteria
instructions and every criteria value can be an object or an array instead of a string. Use that when a one-line description is not enough to separate two options:
summary and signals per level. Richer criteria cost a few more input tokens and usually buy noticeably higher confidence, which is the trade this model is built for.
Response
Pricing
Decision models are billed on input only. Output is free, so the cost of a call depends entirely on how much state and criteria you send.
The worked example above is the second row. At that rate a million triage decisions cost roughly $20, which is what makes this viable as a pre-filter in front of a larger model.
Check the models catalog for the current rate per model.
Errors
Validation is done by the provider and passed through unchanged, so you get the precise field that was wrong along with a request id you can quote in support:Best practices
- Ask several questions at once. The state is read once no matter how many questions ride along, so batching is close to free.
- Retrieve before you judge. Send the relevant slice of state, not your whole document store. Input is what you pay for.
- Use
confidenceas a routing signal. Send low-confidence decisions to a human or to a bigger model rather than treating every answer as final. Anoulanswer has noconfidencefield, so use how far its probability sits from0.5. - Describe criteria, do not just name them. A bare option key works, but a sentence about when it applies works better, and a structured description better still.
- Order score levels from low to high. The index is the score, so the ordering is the rubric.
- Pin a version if a threshold matters. Responses report the concrete version they came from. If you have tuned thresholds against one, record which.
Related
- Chat completions, for when you need words back.
- Listing models, for discovery across every V3 catalog.
- Structured output, for when you want a schema-shaped answer out of a generative model instead.