API · Last updated

Jev API request schema

Every first-party Jev request is the same three top-level fields on POST https://api.typesafe.ai/v1/systemone. This page is the request half of the API shape. Confirm types on docs.typesafe.ai/api.

This page is for builders wiring TypeSafe Jev (System One) into agents, routing, or evals. jev.pro is an independent unofficial field guide — not affiliated with TypeSafe AI. We do not sell or issue keys.

Top-level fields

Field Required Allowed shapes Failure if wrong
state yes string; JSON object; array of text 422; also accuracy loss if you dump unrelated fields (jev-1.13 jaggedness)
model yes alias or versioned id 422 if omitted; “unknown model” if the door rejects the string
questions yes object, ≥1 entry 422

English is the primary training language (models page). Pre-process images/audio/video to text before state. Vendor-claimed context: 64k tokens for state + all questions; 32k for state + the longest question. Unused keys still meter as input (vendor claim: $0.042 / million input tokens, output free).

jev-latest and jev-preview currently resolve to jev-1.13.0 — confirm. Pin the versioned id once floors exist.

Question object

Shared:

Field Required Notes
type yes noul, choice, or score (lowercase in HTTP examples)
instructions yes string or object or array. Point at nested state with backtick paths: `ticket.body`
criteria Choice/Score yes; Noul optional Must align with instructions (jaggedness: contradictory true/false labels hurt)

Choice criteria: { "billing": "Payments…", "other": "None of the above" } — max 255 keys, unordered; values may be null if no extra gloss.

Score criteria: ["Calm", "Frustrated", "Very angry"] — 2–10 descriptive levels, not raw numbers you later interpolate (official warning).

Noul criteria: { "true": "…", "false": "…" }. Noul answers return noul only.

The map key ("department") is your code id. TypeSafe: it is not used in inference.

Structured instructions (official pattern)

{
  "state": { "resume": "…" },
  "model": "jev-1.13.0",
  "questions": {
    "same_person": {
      "type": "noul",
      "instructions": {
        "potential_duplicate": {
          "name": "John Smith",
          "location": "Oakland, California"
        },
        "question": "Is the resume for the same person as `potential_duplicate`?"
      }
    }
  }
}

Pin jev-1.13.0 in production once thresholds exist. jev-latest is the docs default and can move. Unpatched jev-1.13 is a different string than the versioned id — see decision endpoint.

Minimal valid bodies

Noul only (quick start):

{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "jev-latest",
  "questions": {
    "is_urgent": {
      "type": "noul",
      "instructions": "Does this convey urgency?"
    }
  }
}

Gateway/OpenRouter/Workers AI may wrap or rename fields (boolean, input). Those are not this schema. Compare channels. Documented HTTP errors: 401, 422, 429, 529. Official SDKs retry 429/529.

See also

FAQ

Can instructions reference criteria keys?

Write the question so a person could answer in seconds. Put contrast in criteria. Do not hide a second judgment in one string.

Array state?

Yes — official state docs allow an array of text (for example chat turns). Still filter distractors.

Is there a free metadata object?

No. Identifiers the question needs live in state and are billed as input.

Will extra questions change sibling answers?

Questions are independent. Extra state can still distract jev-1.13.

What this page does not claim

Disclaimer

This is an independent unofficial site and is not affiliated with TypeSafe AI; official documentation is available at https://docs.typesafe.ai. Never treat jev.pro as TypeSafe official documentation. We do not sell, issue, or proxy API keys.

Sources