System One API
Typed decisions: send a state and named questions, get a probability per answer back. No text generation, no parsing.
Overview
Most of what an agent asks a model is not a paragraph. It is “which queue does this ticket go to”, “how severe is this”, “does this message need a human”. Asking a chat model means generating text, parsing it, and hoping the number it wrote reflects anything. System One skips the generation: the model reads the state and reports the probability of every option for every question, so your code branches on numbers.POST /v1/systemone takes a state (text or JSON) and a map of named questions of three types. Every answer is a distribution over the options you gave.
d3-ultra (26B, vllm-sr/d3-ultra, Apache-2.0), a decision model trained to read a state and answer typed questions about it.
Writing questions
instructions is what you want judged. criteria describes the options: for choice a map of option name to description (or null), for score an ordered list of level descriptions from lowest to highest, for noul an optional {"true": ..., "false": ...} pair. Descriptions do the work: an option the model can only see by name gets answered by the name alone.
An optional top-level instructions string is placed ahead of the questions, for context every question shares.
Ask every question about one state in one call. Questions are answered in the order you send them.
Reading answers
probabilitiessum to 1 per question.choiceis the argmax;scoreis the expected level, so a 3-level scale answering{0: 0.0, 1: 0.7, 2: 0.3}scores 1.3.confidence(0 to 1) is the probability the model put on the answer it gave, measured over everything it could have produced, not only your options. It equals the answer’s entry inprobabilitiestimesdiagnostics.<id>.label_mass, so it is never higher than that entry. Forscorethe answer is the most likely level; fornoulit is the more likely of yes and no. Gate actions on it: act automatically above a threshold you choose per action, route to a person below it.diagnostics.<id>.label_massis how much of the model’s probability landed on your options at all. A low value means the question or its options read poorly to the model; reword them.usage.input_tokensis the state plus the questions.usage.input_tokens_details.cached_tokensis the part of it served from the prefix cache, billed at the cached-input rate.usage.output_tokensis always 0: nothing is generated.
Pricing
$0.042 per million input tokens, $0.01 per million cached input tokens, no output charge.Errors
400: the request does not fit the contract (for example achoicewith no options, orscorecriteria that are not a list). The message names the question.401: missing or invalid key.429: your key’s rate limit.404: unknownmodel.422:images,audioandvideosare not accepted on this endpoint yet.503: the decision engine is unavailable; retry with exponential backoff.- Every response carries
x-request-id.
Switching from another typed-decision API
If you already send{model, state, questions} with noul, choice and score questions to a /v1/systemone endpoint, the bodies are the same here. Change three things: the base URL to https://api.morphllm.com, the key to a Morph key, and model to d3-ultra.Authorizations
Morph API key, passed as Authorization: Bearer sk-.... Create keys at https://www.morphllm.com/dashboard/api-keys.
Body
The state and the questions to answer about it.
A state and the typed questions to answer about it.
d3-ultra.
"d3-ultra"
What the questions are about: text or JSON. Read once per request however many questions follow.
"Hi, I've been trying to connect my Stripe account for 3 days and it keeps failing. I'm losing sales. Please help ASAP."
Named questions, asked in this order. The answer for each comes back under the same name.
Optional context placed ahead of the questions.
Response
One answer per question.
The answers and what they cost.
Decision id.
"dec-6f1c0b9e2a7d4c3e"
structured_decision Unix seconds.
1793577600
The model that answered.
"d3-ultra"
One answer per question, under the name you gave it.
Token accounting for the request.
Per question, how much of the model's probability landed on the options.