Skip to main content
POST
Create typed decisions with a decision model

Overview

Decision models answer named, typed questions about the state you provide instead of generating prose:
  • choice selects one named option and returns a probability for every option.
  • score returns an expected score over an ordered rubric.
  • noul returns the probability that a yes/no statement is true.
For new HTTP integrations, use the native POST /api/v1/decisions endpoint. If you already use the official TypeSafe SDK, point it at NanoGPT’s POST /api/v1/systemone compatibility endpoint. Decision models are also available through NanoGPT’s OpenAI-compatible Chat Completions and Responses APIs and the Anthropic-compatible Messages API. Only input tokens are billed. Browse every decision model, with current pricing, on nano-gpt.com/models/text?output=decisions.
Decision models are currently available on https://nano-gpt.com, including the Decisions and System One endpoints and decision-model requests through compatible chat APIs. The direct API host does not yet list decision models or serve the Decisions routes. Use the website host for decision models until the direct host is updated.
Decision models return calibrated probabilities, not generated text. Use a chat model when you need an explanation or other free-form response.

Models

Decider IDs are also accepted without the llmtech/ prefix, and Clef accepts clef. The System One compatibility endpoint also accepts the official SDK model names jev-1.13 and jev-latest. In GET /api/v1/models?detailed=true, decision models have architecture.output_modalities: ["decisions"] and a supported_endpoints list.

Native Decisions API

Endpoint

Authenticate with either Authorization: Bearer YOUR_API_KEY or x-api-key: YOUR_API_KEY.

Example request

Example response

noul is the probability of the true outcome. A score can be fractional because it is the expected value across the returned score distribution.

Question types

instructions and criterion descriptions can be strings, non-empty JSON objects, or non-empty arrays. A choice criterion may also be null when its label is self-explanatory. The top-level state can be a string, JSON object, or JSON array. Question names become keys in answers.

Model-specific rules

Request fields

The native provider object can contain endpoint-level order, only, ignore, allow_fallbacks, require_parameters, max_price, zdr, and data_collection controls. These names describe native Decisions endpoints such as TypeSafe; they are not NanoGPT provider IDs. API-key provider restrictions and zero-data-retention requirements still apply. Decider and Clef call their decision endpoints directly and accept only zdr and data_collection.

Official TypeSafe SDK

NanoGPT exposes POST /api/v1/systemone so the official TypeSafe JavaScript and Python SDKs can call any decision model without changing their request types. Set the model to jev-latest, jev-1.13, decider-2b-fp8 (or another Decider), liquid/d1 or clef.
The SDK’s System One call is supported. The SDK’s model-list method is not, because NanoGPT’s /api/v1/models response uses the NanoGPT/OpenAI-compatible model-list shape rather than TypeSafe’s model-list shape.

OpenAI and Anthropic compatibility

Use these shapes when a decision model must fit into an existing OpenAI- or Anthropic-compatible client. The answer object is returned as JSON text, so parse the returned string once.

Chat Completions

Parse choices[0].message.content as JSON.

Responses API

Parse output_text as JSON. The same JSON text is also available in the assistant output item.

Anthropic Messages

Parse content[0].text as JSON. max_tokens is accepted for Anthropic SDK compatibility but does not change the fixed typed output.

Limitations

Decision-model requests are deliberately narrower than chat generation requests:
  • Only non-streaming text input in user messages is supported on compatibility endpoints.
  • System, developer, assistant, tool, image, audio, video, and file input is not supported.
  • Tools, sampling controls, log probabilities, and reasoning generation controls are not supported.
  • Output-token-limit fields are accepted where an SDK requires them, but they do not change the fixed typed output.
  • BYOK and accountless x402 payments are not supported.
  • Standard NanoGPT or X-Provider provider pins are not supported. Use the native Decisions provider object only when you need endpoint-level routing controls.
Unsupported combinations return a 400 error instead of being silently ignored.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
model
enum<string>
required

Decision model ID. Bare Decider IDs and clef are aliases of the prefixed IDs.

Available options:
typesafe/jev-1.13,
~typesafe/jev-latest,
typesafe/jev-latest,
llmtech/decider-0.8b-fp8,
llmtech/decider-2b-fp8,
llmtech/decider-4b-nvfp4,
decider-0.8b-fp8,
decider-2b-fp8,
decider-4b-nvfp4,
liquid/d1,
cloudflare/clef,
clef
state
required

Application state to evaluate.

questions
object
required
independent
boolean

Decider only. Decider always evaluates questions independently, so send true or omit the field; other models reject it.

provider
object | null

Optional native Decisions endpoint-routing controls. These are not NanoGPT provider IDs. Decider and Clef accept only zdr and data_collection.

session_id
string
Maximum string length: 256
trace
object
user
string
Maximum string length: 256

Response

Typed decisions response

model
string
required
answers
object
required
usage
object
required
id
string
provider
string