---
title: "Decide"
method: POST
path: "/v1/systemone"
tags: ["systemone"]
---

# Decide

`POST /v1/systemone`

## Request

- Base URL: `https://api.fastino.ai`
- URL: `https://api.fastino.ai/v1/systemone`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer
- TypeScript: <https://skmtc.dev/fastino-ai/apis/pioneer-inference-api/docs/v1/systemone/post.ts> (a function with typed inputs; its response is checked against the schema)

Answer a batch of questions about one state.

Send `store: false` to keep neither the input nor the output; usage metadata is still
recorded for billing. See the `store` field.

## Request body

- SystemOneRequest: Body of ``POST /v1/systemone``. ``provider``, ``user``, ``session_id`` and ``trace`` are the OpenRouter routing and observability fields; they are accepted and never forwarded. ``thinking`` is optional. Absent and false are one pass. True is rejected until a thinking pass is served.
  - `model` string, required: Decision model to call. Use `fastino/GLiDE`.
  - `provider` object, nullable: Accepted for OpenRouter compatibility and not forwarded to the model.
  - `questions` object, required: One or more questions keyed by names you choose. The same keys appear under `answers`.
  - `session_id` string, nullable: Accepted for OpenRouter compatibility and not forwarded to the model.
  - `state` union, required: The situation every question is evaluated against: a string, a JSON object of labeled fields, or a JSON array. An array may mix strings with text parts and up to 4 image_url parts (https or a data URL). Images are billed as input tokens. Send an empty value when the question carries all the context.
    - string
    - object
    - JsonValueInput[]
      - union
        - union
          - string
          - integer
          - number
          - boolean
        - JsonValueInput[]
        - object
  - `store` boolean: Whether Fastino keeps this request's input and output. `true` (the default) records them in your inference history. `false` keeps neither: no history entry, and the payload stays out of logs, error reports and traces, so it is never used for training or continuous adaptation, whatever your training opt-out says. Usage metadata (model, token counts, latency, status, cost) is still recorded for billing. The `X-Fastino-Data-Retention` response header reports the outcome.
  - `thinking` boolean, nullable: Omit or send `false`. `true` is rejected until thinking is served.
  - `trace` object, nullable: Accepted for OpenRouter compatibility and not forwarded to the model.
  - `user` string, nullable: Accepted for OpenRouter compatibility and not forwarded to the model.

## Response `200`

Successful Response

- SystemOneResponse: Decision answers and token usage for one request.
  - `answers` object, required: One answer per question, keyed by the question names you sent.
  - `model` string, required: Engine name without the provider prefix, e.g. `glide`.
  - `token_usage` integer, required: Total tokens billed for the decision (input plus output).
  - `usage` SystemOneUsage, required: Token counts the engine reports for one decision.
    - `input_tokens` integer, required: Input tokens across every internal pass for every question, including visual tokens from images. Can exceed 40,000 even when each rendered question prompt fits.
    - `output_tokens` integer, required: Output tokens the engine produced.

## Other responses

- `400`: A rendered question prompt exceeds the context window or another input is invalid. Shorten `state` or correct the question.
- `401`: The API key is missing, malformed, or invalid.
- `402`: Insufficient credits, funding required, or an owner-set daily or monthly spend limit was reached.
- `403`: A payment method, card verification, credit ceiling, or account policy requirement blocks the request.
- `404`: The model is unknown or is not served by `/v1/systemone`.
- `422`: Validation Error
- `425`: The model is temporarily warming. Wait the number of seconds in `Retry-After`, then retry the same request with a bounded retry policy.
- `429`: A rate or capacity limit was reached. Wait for `Retry-After` when present, then retry with bounded backoff.
- `502`: The serving provider returned an invalid or failed response. Retry with backoff.
- `503`: A temporary provider or serving failure. Retry with bounded backoff before treating it as terminal.

## Changes

- **2026-10-15** `eef86c1497c1`: 1 info
  - added the new optional request property `store`
- **2026-10-12** `43d7e06a824b`: 10 info
  - added the new optional request property `thinking`
  - added the non-success response with the status `400`
  - added the non-success response with the status `401`
  - added the non-success response with the status `402`
  - …6 more
- **2026-10-09** `1f70509cb1dc`: 1 info
  - added the required property `token_usage` to the response with the `200` status
- **2026-10-01** `12e6c825568e`: 1 info
  - endpoint added

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

---

[API](https://skmtc.dev/fastino-ai/apis/pioneer-inference-api.md) - [All operations](https://skmtc.dev/fastino-ai/apis/pioneer-inference-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fastino-ai/apis/pioneer-inference-api/revisions/81465e18c1d2?raw)
