Skip to main content
Some calls are not writing tasks. Should this command run? Which model should serve this request? Is this ticket a bug or a feature? Those are choices, and a model that answers them in prose makes you parse the prose back into a choice. POST /v1/decisions answers them as choices. You send the state and the questions, each with its options; every question comes back with one option and a confidence.

Request

string
default:"jev"
The decisions model. jev is the only value today; any other returns 400.
string
required
What the model is deciding about, in your own words. Plain text.
object
required
One or more questions, keyed by an id you choose. Each must be {"type": "choice", "instructions": "...", "criteria": { "<option>": "<what it means>", ... }} with at least one option. Anything else returns 400 naming the question.

Response

answers is keyed by your question ids. Each carries choice (always one of the options you supplied), confidence between 0 and 1, and probabilities across the options when the model reports them. Use the confidence: a common pattern is to act on the choice above a threshold you pick and hand the rest to a full language model, which costs more and answers slower.

What it will not do

It writes no prose, reads no images and calls no tools. It is a classifier you put in front of a model, a tool call or a risky command — not a replacement for one. Sending it to /v1/chat/completions returns 400.

Billing

Per input token, at the model’s published rate — $0.0567 per million for jev, with output free — rounded up to the nearest $0.0001, which is the smallest amount the ledger holds. A decision is small enough that the honest price of one call lands below that, so the rounding is what makes it chargeable at all: up to about 1,700 input tokens a call costs $0.0001, and 10,000 short decisions are $1. The response quotes usage.cost in dollars, and that is the amount taken from your balance — not a number rounded somewhere else afterwards. Failures are not charged: an upstream error or an unreadable answer returns 502 and writes a $0 row you can see in usage.

Errors