Skip to main content
POST
Ask typed questions about a piece of content and get a calibrated answer for each one. The request and response follow TypeSafe’s System One format. model needs its provider prefix, for example typesafe/jev-1.13.0 or cloudflare/clef. List the available models with /v1/models/decision. See Decisions for the question types. Every answer has a type. A model can decline a question and return {"type": "refusal"} for it, so check type before reading the value. See OpenAI’s Decisions guide. Responses are not streamed. To put images directly inside state, use /v1/decisions.

Images

Models that accept images, such as cloudflare/clef and openai/gpt-6-luna, also look at images. Send each image in assets under a name you choose, and mention that name in state so the model knows which image it refers to. typesafe models reject assets that state does not reference. Images inside state are rejected on this endpoint.

JSON

Each asset carries its format and the base64-encoded image bytes in data_base64, without a data: prefix.

Multipart

Upload image files without base64-encoding them by sending a multipart/form-data request, the format TypeSafe’s SDKs use. Put the JSON request in a part named request, and point each asset at the part that holds its file with part. Image parts need an image/* content type.
Both forms return the same response:

Authorizations

Authorization
string
header
required

API key for authentication

Body

Request body for POST /v1/systemone, in TypeSafe's System One format. Images go in assets; images inside state are rejected on this endpoint.

model
string
required

A decision model ID from /v1/models/decision.

Example:

"openai/gpt-6-luna"

state
any
required

The content to evaluate: a string, an object or an array. Mention each asset's name in state so the model knows which image it refers to; typesafe models reject assets that state does not reference.

questions
object
required

Map of question ID to question. Each ID gets one entry in answers.

assets
object

Map of asset name to image. Only for models that accept images, such as cloudflare/clef and openai/gpt-6-luna.

Response

Decision response

answers
object
required

One answer per question ID.

model
string
required

The upstream model name.

Example:

"gpt-6-luna"

usage
object
required
id
string
Example:

"rqsty-dcsn-15e2efde-f7c6-49cb-92ae-c763b1b16193"

provider
string
Example:

"openai"

Last modified on October 16, 2026