Skip to main content
POST
Answer typed questions about a state

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. Model: 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

  • probabilities sum to 1 per question. choice is the argmax; score is 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 in probabilities times diagnostics.<id>.label_mass, so it is never higher than that entry. For score the answer is the most likely level; for noul it 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_mass is 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_tokens is the state plus the questions. usage.input_tokens_details.cached_tokens is the part of it served from the prefix cache, billed at the cached-input rate. usage.output_tokens is 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 a choice with no options, or score criteria that are not a list). The message names the question.
  • 401: missing or invalid key. 429: your key’s rate limit.
  • 404: unknown model.
  • 422: images, audio and videos are 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

Authorization
string
header
required

Morph API key, passed as Authorization: Bearer sk-.... Create keys at https://www.morphllm.com/dashboard/api-keys.

Body

application/json

The state and the questions to answer about it.

A state and the typed questions to answer about it.

model
string
required

d3-ultra.

Example:

"d3-ultra"

state
required

What the questions are about: text or JSON. Read once per request however many questions follow.

Example:

"Hi, I've been trying to connect my Stripe account for 3 days and it keeps failing. I'm losing sales. Please help ASAP."

questions
object
required

Named questions, asked in this order. The answer for each comes back under the same name.

Example:
instructions
string

Optional context placed ahead of the questions.

Response

One answer per question.

The answers and what they cost.

id
string
required

Decision id.

Example:

"dec-6f1c0b9e2a7d4c3e"

object
enum<string>
required
Available options:
structured_decision
created
integer
required

Unix seconds.

Example:

1793577600

model
string
required

The model that answered.

Example:

"d3-ultra"

answers
object
required

One answer per question, under the name you gave it.

Example:
usage
object
required

Token accounting for the request.

diagnostics
object
required

Per question, how much of the model's probability landed on the options.

Example: