Skip to main content
Alpha. This endpoint is new. Its request and response shapes, the model ids it exposes, and its pricing can change in ways that break existing integrations, and they can change without a deprecation period. It is safe to experiment with and risky to put on a critical path. If you do depend on it, keep the call behind a small adapter of your own so a shape change is one edit rather than many.
A decision model answers typed questions about text. You send some state and the questions you want answered, and you get back a choice, a score, or a probability, in a single pass. A choice and a score each come with a confidence and the full probability distribution behind them. A probability needs neither, because the number is already the answer and its own confidence. TypeSafe calls this class of model System One, after the fast, intuitive thinking in Kahneman’s Thinking, Fast and Slow. Their model Jev is the first of them, and the one Eden AI serves today. Eden AI names the endpoint for the capability rather than the vendor, so a second provider of decision models lands on the same path. The request and response bodies match TypeSafe’s own, but the path does not, so point your client at /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.
It is the wrong tool for anything that needs words back: chat, summarisation, extraction, code, or an explanation of its own reasoning. Use chat completions for those.
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

Models are identified as 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 a type 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:
Score levels take the same treatment, with 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 confidence as a routing signal. Send low-confidence decisions to a human or to a bigger model rather than treating every answer as final. A noul answer has no confidence field, so use how far its probability sits from 0.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.