API· Last updated

Jev API decision endpoint

The only first-party decision endpoint TypeSafe documents is:

POST https://api.typesafe.ai/v1/systemone
Authorization: Bearer <API_KEY>
Content-Type: application/json

Jev (TypeSafe System One) evaluates one state against a map of typed questions and returns answers under the same ids. This unofficial page is a developer field table. Canonical prose: docs.typesafe.ai/api. We do not sell keys. Companion list: GET https://api.typesafe.ai/v1/models.

What you POST

Field Required Type Notes from the official API reference
state yes string, object, or array of text Material to judge. No image/audio/video.
model yes string Examples use jev-latest. Pin jev-1.13.0 when thresholds are fitted.
questions yes object Map of your ids → question objects. Keys are not sent to the underlying model.

Each question: type (noul | choice | score) + instructions (string, object, or array) + type-specific criteria. Choice criteria: map, max 255 options. Score criteria: ordered array, 2–10 levels. Noul criteria: optional {true,false} glosses.

What you GET

Field Role
model Versioned id that answered (quick-start examples: jev-1.13.0) even if you sent an alias
answers map Same keys you sent
usage.input_tokens / usage.output_tokens Billing is input-only on the public models page (vendor claim: $0.042 / MTok; output free)

Answer shapes: see OpenAPI-like shape. HTTP errors: 401 / 422 / 429 / 529 — error envelope.

Gotcha: jev-1.13 vs jev-1.13.0

String Where it belongs
jev-1.13.0 First-party versioned id. Models page column for “Jev 1.13”. Pin this.
jev-latest / jev-preview First-party aliases. Both pointed at jev-1.13.0 on the models page we cited; jev-preview moves first when a preview exists.
jev-1.13 (no patch) Appears in some cookbook snippets and in OpenRouter as typesafe/jev-1.13. Do not assume first-party HTTP accepts the unpatched name.
typesafe-ai/jev, typesafe/jev Gateway / Workers AI ids — wrong host if you POST to api.typesafe.ai.

GET /v1/models currently lists aliases. Versioned ids are still valid on POST whether or not they appear in that list (TypeSafe models page).

Dual-stack sketch

from typesafe_sdk import Noul, TypeSafeClient

client = TypeSafeClient()  # TYPESAFE_API_KEY, default jev-latest
r = client.system_one(
    state="Payouts failing for 3 days.",
    questions={"urgent": Noul(instructions="Does this convey urgency?")},
)
print(r.model, r.answers["urgent"].noul)
import { TypeSafeClient, noul } from "@typesafe-ai/sdk";

const client = new TypeSafeClient();
const r = await client.systemOne({
  state: "Payouts failing for 3 days.",
  questions: { urgent: noul({ instructions: "Does this convey urgency?" }) },
});

Method names follow current SDK docs — if they drift, believe docs.typesafe.ai/sdk.

FAQ

Is there a batch HTTP route? Not in the public API reference we used. Extra questions on one state are the documented parallelism. Treat “batch endpoint” inventory pages as application patterns unless TypeSafe adds a URL.

Chat completions? Wrong contract. Structured decisions are not a generated JSON document.

Hub: API. Siblings: request schema, response shape. Official: docs.typesafe.ai/api.

Sources

Public TypeSafe or adjacent documentation only. No private claims.