APIMODELSAPIMODELS
Docs/Jev API

Jev API (TypeSafe System One)

TypeSafe's decision model Jev: send a state and a map of typed questions, get an answer with probabilities for each. $0.05 per 1M input tokens, output free. POST /v1/systemone with exactly TypeSafe's request and response.

Read this first: it is not a chat model

Jev does not generate text — there are no messages, no prompt and no streaming. A request carries three things: model, state (a string, JSON object or array describing the situation) and questions (a map keyed by your own ids, each with a type). The response is keyed the same way. An OpenAI SDK pointed at this endpoint will not work; use TypeSafe's official SDK with base_url and the key changed, or plain HTTP.

POSThttps://api.apimodels.app/v1/systemone

Code examples

This is a request we actually sent on 2026-09-22: one support ticket, two questions — which queue, and whether it is urgent.

curl https://api.apimodels.app/v1/systemone \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jev",
    "state": "Support ticket: I was charged twice for my September invoice and need one of the payments refunded.",
    "questions": {
      "queue": {
        "type": "choice",
        "instructions": "Which support queue should handle this ticket?",
        "criteria": {
          "billing": "Payments, invoices, charges and refunds",
          "bug": "Something in the product is broken",
          "account_access": "Login, password or permission problems",
          "other": "Anything else"
        }
      },
      "urgent": {
        "type": "noul",
        "instructions": "The customer needs a response within the hour."
      }
    }
  }'
# 385 input tokens billed at $0.05 per 1M = $0.00001925; output is free

Response (verbatim)

{
  "model": "jev-1.13.0",
  "answers": {
    "queue": {
      "type": "choice",
      "choice": "billing",
      "confidence": 1.0,
      "probabilities": { "billing": 1.0, "bug": 0.0, "account_access": 0.0, "other": 0.0 }
    },
    "urgent": { "type": "noul", "noul": 0.29 }
  },
  "usage": { "input_tokens": 385, "output_tokens": 63 }
}
  • answers is keyed by your question ids. choice returns the selected option, a confidence and probabilities per option; score does the same for levels; noul is the probability (0–1) that the statement is true.
  • usage.input_tokens is the only number that is billed; output_tokens is informational.
  • model echoes the upstream version actually used (e.g. jev-1.13.0); send jev in the request — jev-latest and jev-preview are accepted too.

Request parameters

FieldRequiredTypeDescription
modelYesstringjev (jev-latest / jev-preview are also accepted)
stateYesstring | object | arrayThe situation to judge: text, a JSON object or an array. The upstream budget is 64k tokens per request.
questionsYesobjectKeyed by your own question ids; each value is a question with a type; at least one
questions.<id>.typeYesstringchoice / score / noul
questions.<id>.instructionsYesstringThe question: what to choose, what to score, which statement to judge
questions.<id>.criteriaNoobject | arraychoice: "option: description" pairs, up to 255; score: 2–10 levels, one description each. Not used by noul.

The three question types

choice

Pick one of up to 255 described options. Returns the option, a confidence and a probability per option. Routing, classification and tagging.

score

Place the state on a 2–10 level scale you describe. Returns the level, a confidence and a probability per level. Lead scoring, severity, satisfaction.

noul

The probability that a statement is true, as a number in 0–1. Moderation flags, feature gating, escalation.

Every question is evaluated against the same state in parallel, so adding questions barely changes latency.

Billing

Itemapimodels
Input, per 1M tokens$0.05
OutputFree
Per-call minimumNone — billed on the exact input_tokens
  • The 385-token request above costs $0.00001925; a million such decisions cost about $19.
  • Failed calls are free. Accounts with a zero balance are refused before the call is made.

Errors

  • 400 — Shape problems we can decide ourselves: model is not jev, state missing, questions not a non-empty object, an unknown question type, or a body over 1MB.
  • 402 — Insufficient balance.
  • 422 — Upstream validation passed through verbatim: question count, criteria size (choice ≤255, score 2–10 levels), the 64k-token per-request budget.

See also

FAQ

Is the Jev API OpenAI-compatible?

No. It has its own endpoint, POST /v1/systemone, where you send a state and a map of typed questions and get answers with probabilities back. Use TypeSafe's official SDK with our base URL, or plain HTTP as in the cURL example.

What is billed on a Jev call?

Only the input tokens the upstream reports, at $0.05 per million; output is free and there is no per-call minimum. Failed calls are not charged.

Which question types does Jev support?

Three: choice picks one of up to 255 described options, score places the state on a 2–10 level scale you describe, and noul returns the probability that a statement is true. All questions in one request are evaluated in parallel against the same state.