---
title: "Create a typed decision with the official TypeSafe SDK shape"
method: POST
path: "/v1/systemone"
tags: ["Decisions"]
---

# Create a typed decision with the official TypeSafe SDK shape

`POST /v1/systemone`

## Request

- Base URL: `https://api.nano-gpt.com/api`
- URL: `https://api.nano-gpt.com/api/v1/systemone`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

Compatibility endpoint for the official TypeSafe JavaScript and Python SDKs. Configure the SDK base URL as https://api.nano-gpt.com/api (or https://nano-gpt.com/api); the SDK appends /v1/systemone. It accepts every decision model listed for /v1/decisions. Bare model IDs jev-1.13, jev-latest and clef are mapped to the matching NanoGPT models. Image input and include_usage work as on /v1/decisions. The SDK model-list method remains unsupported because NanoGPT's /api/v1/models endpoint uses the NanoGPT/OpenAI-compatible response shape.

## Request body

- SystemOneRequest
  - `model` 'jev-1.13' | 'jev-latest' | 'typesafe/jev-1.13' | '~typesafe/jev-latest' | 'typesafe/jev-latest' | 'liquid/d1' | 'cloudflare/clef' | 'clef' | 'cloudflare/clef-flash' | 'perplexity/pplx-decider-v1.2' | 'perplexity/pplx-decider-v1.1-27b', required: Decision model ID. clef is an alias of the prefixed IDs. Use perplexity/pplx-decider-v1.2 for PPLX; perplexity/pplx-decider-v1.1-27b remains accepted as a compatibility alias for v1.2.
  - `state` union, required: Text, a JSON object or array, or null.
    - string
    - object
    - unknown[]
      - unknown
  - `questions` object, required
  - `provider` object, nullable
  - `session_id` string
  - `trace` object
  - `user` string
  - `include_usage` boolean: Wait for billing to settle and report the exact charge as usage.cost. By default the response returns without waiting and reports usage.estimated_cost.

## Response `200`

TypeSafe System One result

- DecisionsResponse
  - `id` string
  - `model` string, required
  - `answers` object, required
  - `usage` object, required
    - `input_tokens` integer, required
    - `output_tokens` integer, required
    - `cost` number: Exact charge in USD. Returned when the request sets include_usage to true.
    - `estimated_cost` number: Estimated charge in USD at the model's published input price for the reported input tokens, before account discounts and payment-currency conversion. Returned when include_usage is not set; billing settles right after the response.

## Other responses

- `400`: Invalid System One request
- `401`: Missing or invalid API key
- `429`: Rate limit exceeded

## Changes

- **2026-11-03** `cc8b07d75689`: 1 info
  - endpoint added

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

---

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