---
title: "Answer typed questions about a state"
method: POST
path: "/v1/systemone"
tags: ["systemone"]
---

# Answer typed questions about a state

`POST /v1/systemone`

## Request

- Base URL: `https://api.morphllm.com`
- URL: `https://api.morphllm.com/v1/systemone`
- Auth: HTTP bearer

Send a state and named questions of three types: `noul` (yes/no), `choice` (one of a set) and `score` (ordered levels). Every answer is a probability distribution your code can branch on, with a `confidence`. No text is generated. Batch every question about one state into one call.

## Request body

- SystemOneRequest: A state and the typed questions to answer about it.
  - `model` string, required: `reflex`.
  - `state` union, required: What the questions are about: text or JSON. Image content parts may appear here with type image_url and image_url.url set to an inline base64 data URL. Input usage includes the state for each question.
    - string
    - object
    - SystemOneJsonValue[]
      - union: Any JSON value: text, a number, a boolean, null, an array or an object.
        - string
        - number
        - boolean
        - union[]
          - union
            - string
            - number
            - boolean
        - object
  - `images` string[]: Inline base64 data URLs: data:image/png;base64,..., data:image/jpeg;base64,... or data:image/webp;base64,... . At most 16 images total across the request, up to 8 MB (8,000,000 decoded bytes) each. Remote URLs are not fetched. Images are billed as expanded input tokens.
  - `questions` object, required: Named questions, asked in this order. The answer for each comes back under the same name.
  - `instructions` string: Optional context placed ahead of the questions.

## Response `200`

One answer per question.

- SystemOneResponse: The answers and what they cost.
  - `id` string: Decision id, when returned.
  - `object` 'structured_decision'
  - `created` integer: Unix seconds, when returned.
  - `model` string, required: The model that answered.
  - `answers` object, required: One answer per question, under the name you gave it.
  - `usage` object, required: Token accounting for the request.
    - `input_tokens` integer, required: Sum of state and question tokens across questions, including expanded image tokens.
    - `output_tokens` integer, required: Always 0: nothing is generated.
    - `input_tokens_details` object, required: Breakdown of the input tokens.
      - `cached_tokens` integer, required: Of `input_tokens`, those served from the prefix cache, billed at the cached-input rate.
  - `diagnostics` object: When returned: per question, how much of the model's probability landed on the options.

## Other responses

- `400`: Malformed request — missing or invalid fields.
- `401`: Missing or invalid API key.
- `404`: Unknown `model`.
- `422`: Unsupported media: remote image URLs, audio, video, multipart assets or images inside question instructions and criteria.
- `429`: Rate limited — retry after the interval in the Retry-After header.
- `500`: Internal error — safe to retry with backoff.
- `503`: The decision engine is unavailable. Retry with exponential backoff.

## Changes

- **2026-11-04** `d5b145cc274e`: 4 breaking, 1 info
  - the response property `created` became optional for the status `200`
  - the response property `diagnostics` became optional for the status `200`
  - the response property `id` became optional for the status `200`
  - the response property `object` became optional for the status `200`
  - …1 more
- **2026-11-02** `90209f65ee18`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/morphllm/apis/morph-api/changes/v1/systemone/post.md)

---

[API](https://skmtc.dev/morphllm/apis/morph-api.md) - [All operations](https://skmtc.dev/morphllm/apis/morph-api/llms.txt) - [OpenAPI document](https://skmtc.dev/morphllm/apis/morph-api/revisions/d5b145cc274e?raw)
