---
title: "System One"
method: POST
path: "/v1/systemone"
---

# System One

`POST /v1/systemone`

## Request

- Base URL: `https://api.llmgateway.io`
- URL: `https://api.llmgateway.io/v1/systemone`
- Auth: HTTP bearer

Evaluate a state against named typed questions and get calibrated yes/no, choice and score answers back. TypeSafe-compatible API, serving TypeSafe models only. To be deprecated soon in favor of the OpenAI-compatible /v1/decisions, which serves every decision model.

## Request body

- object
  - `model` string, required: ID of the decision model to use. Optionally prefixed with a provider (`typesafe/…`).
  - `state` union, required: The content to evaluate: plain text, or structured data such as a chat log or record. Images go in as `{ "type": "image_url", "image_url": { "url": "data:image/png;base64,…" } }` parts at any depth, or as `assets` references.
    - string
    - object
    - unknown[]
      - unknown
  - `assets` object: Images keyed by a reference string. Write the reference in `state`, `instructions` or `criteria` and the model receives the image in its place. Experimental.
  - `questions` object, required: Questions keyed by an id you choose. Answers come back under the same ids.

## Response `200`

Typed answers for the submitted questions.

- object: One typed answer per question, keyed by the question ids.
  - `model` string, required
  - `answers` object, required
  - `usage` object
    - `input_tokens` integer
    - `output_tokens` integer

## Other responses

- `400`: Invalid request body or parameters.
- `401`: Missing or invalid API key.
- `402`: Insufficient credits or plan limits reached.
- `403`: Forbidden request or upstream response.
- `404`: Unknown model or upstream not-found response.
- `408`: Request timeout.
- `410`: Archived or unavailable project.
- `413`: Request too large.
- `415`: Unsupported media type.
- `429`: Rate limited. Response headers describe only LLMGateway-enforced limits; upstream provider headers are not forwarded. Honor Retry-After when present.
- `500`: Internal server error.
- `502`: Failed to connect to the upstream provider.
- `503`: Service unavailable upstream response.
- `504`: Upstream provider timeout.
- `529`: Gateway overloaded.

## Changes

- **2026-10-29** `0f102b10b398`: 2 breaking, 1 warning, 2 info
  - the response property `answers/additionalProperties/legend/additionalProperties/` became nullable for the status `200`
  - the `answers/additionalProperties/legend/additionalProperties/` response's property type changed from `string` to no type for status `200`
  - added the new `box` enum value to the `answers/additionalProperties/type` response property for the response status `200`
  - added `subschema #4` to the `questions/additionalProperties/` request property `oneOf` list
  - …1 more
- **2026-10-28** `f51e6779d42e`: 1 info
  - added the new optional request property `assets`
- **2026-09-20** `f71c7785f53f`: 1 info
  - endpoint added

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

---

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