Skip to main content
POST
Ask typed questions about a piece of content and get a calibrated answer for each one. 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.

Images

cloudflare/clef and openai/gpt-6-luna also look at images. Send them in images as base64 data URLs. Remote image URLs are rejected.

Authorizations

Authorization
string
header
required

API key for authentication

Body

application/json
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.

questions
object
required

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

images
string[]

Base64 image data URLs (data:image/...;base64,...). Only for models that accept images (cloudflare/clef, openai/gpt-6-luna). Remote URLs are rejected.

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 8, 2026