Skip to content
System One

How to get Jev API access

Jev is in closed early access. Join the TypeSafe waitlist, then collect an API key from the console at console.typesafe.ai/settings/keys, set TYPESAFE_API_KEY, and install typesafe-sdk for Python or @typesafe-ai/sdk for Node. The endpoint is POST https://api.typesafe.ai/v1/systemone, authenticated with a bearer token. Weights are not released, so there is no self-hosted option.

Updated

What access looks like right now

Jev runs as a closed managed API in early access. TypeSafe’s launch post describes bringing developers “off the waitlist as quickly as we can,” which means there is a queue and no published wait time.

The weights are not released. There is no self-hosted build and no on-prem option. If your requirement is that the model runs inside your own network, Jev does not meet it today.

Join the waitlist

Sign up through typesafe.ai. TypeSafe has not published selection criteria or a queue length, so anything you read about how long it takes is a guess. The model was announced on 15 September 2026, which puts every account on the platform within days of each other.

The docs are fully public in the meantime, including all three primitive pages, the four pattern pages and eighteen cookbooks. You can design the state and questions for your workload before you have a key, and that design is most of the work: which content goes into the state, how the judgment splits into narrow questions, and where the confidence thresholds sit. The build guide covers those decisions.

Create an API key

Once you are through, keys live in the console at https://console.typesafe.ai/settings/keys.

Both SDKs read the key from an environment variable:

export TYPESAFE_API_KEY="your-key-here"

If you construct the client with no arguments, it picks the key up from there. Keep it out of source control and out of client-side code; this is a server-side credential and a leaked key bills to your account.

Install an SDK

Python, which needs 3.10 or newer:

pip install typesafe-sdk

Node, which needs 20 or newer:

npm install @typesafe-ai/sdk

Both packages were at v0.6.0 as of 18 September 2026. Pin the version. A 0.x SDK for a model that launched three days ago will move.

Make a first call

The Python quickstart triages a support ticket with all three question types in one request.

from typesafe_sdk import Choice, Noul, Score, TypeSafeClient

client = TypeSafeClient()

ticket = "Hi, I've been trying to connect my Stripe account for 3 days and it keeps failing. I'm losing sales. Please help ASAP."

response = client.system_one(
    state=ticket,
    questions={
        "department": Choice(
            instructions="Which team should handle this",
            criteria={
                "billing": "Payment or subscription issues",
                "technical": "Bugs or integration problems",
                "sales": "Pricing or account questions",
            },
        ),
        "frustration": Score(
            instructions="How frustrated the customer appears",
            criteria=[
                "Calm, just stating facts",
                "Frustrated but civil",
                "Very angry, strong language",
            ],
        ),
        "is_urgent": Noul(
            instructions="The message conveys urgency or time-sensitivity",
        ),
    },
)

Three questions, one call, evaluated in parallel. response.answers["department"].choice gives the option name, .confidence the number your code thresholds on.

The TypeScript equivalent uses a helper function per question type:

import { choice, TypeSafeClient } from "@typesafe-ai/sdk";

const client = new TypeSafeClient();
const response = await client.systemOne({
  state: { document: "I was charged twice. Please fix this ASAP." },
  questions: {
    category: choice("What is this ticket about?", {
      billing: null,
      technical: null,
      other: null,
    }),
  },
});

console.log(response.answers.category.choice);

Note the other option. TypeSafe’s Choice docs recommend including one whenever your taxonomy might not cover every input, and the primitives guide explains why leaving it out distorts the distribution.

Or call the API directly

The endpoint is POST https://api.typesafe.ai/v1/systemone with an Authorization: Bearer header.

curl https://api.typesafe.ai/v1/systemone \
  -H "Authorization: Bearer $TYPESAFE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "state": "Help! My payouts have been failing for 3 days.",
    "model": "jev-latest",
    "questions": {
      "is_urgent": {
        "type": "noul",
        "instructions": "Does this convey urgency?",
        "criteria": {
          "true": "Explicitly time-sensitive",
          "false": "No urgency expressed"
        }
      }
    }
  }'

The response carries the answers plus a usage block:

{
  "model": "jev-latest",
  "answers": {
    "is_urgent": { "type": "noul", "noul": 0.92 }
  },
  "usage": { "input_tokens": 312, "output_tokens": 48 }
}

Output tokens appear in usage but bill at $0. Input is $0.042 per million, so the call above costs about a hundred-thousandth of a cent. Cost estimation has a worked example at real volumes.

Handle the errors you will actually hit

Both SDKs ship typed error classes rather than a single generic exception, and the two worth branching on early are authentication failures and rate limiting. A bad or missing key raises an authentication error; exceeding 1,200 requests per minute or 250,000 tokens per second raises a rate limit error. Connection and timeout errors get their own classes too, and the Python SDK documents a retry policy you can configure rather than writing your own backoff loop.

Catch the rate limit case separately from everything else. A triage pipeline that retries a transient 429 and drops a malformed request is behaving correctly; one that treats both the same way will silently reprocess work or silently lose it.

Pin the version

jev-latest and jev-preview both resolve to jev-1.13.0 today. Passing "model": "jev-1.13.0" explicitly is the safer default for anything running in production, for two reasons: your thresholds stay tuned to one model, and TypeSafe’s per-version weakness page stays accurate for what you are actually calling.

Before you ship

Check the limits against your workload. 64k tokens total per request, 32k for state plus the longest question, 1,200 requests per minute, 250,000 tokens per second. Text only, as a string, a JSON object, or an array of text values.

Then read the jaggedness page for version 1.13 and treat it as a design document. Counting, arithmetic and date comparison stay in your code. Anything user-supplied that reaches the state wants a prompt injection screen first, because the docs are explicit that “state is data, and jev-1.13 does not treat it as hostile by default.”

FAQ

How long is the Jev waitlist?

TypeSafe has not published a queue length, a wait time, or selection criteria. The launch post on 15 September 2026 said only that the team is bringing developers off the waitlist as quickly as it can. Nothing more specific was available as of 18 September 2026.

Where do I get a Jev API key?

From the TypeSafe console at console.typesafe.ai/settings/keys, once your waitlist request is approved. Both official SDKs read the key from the TYPESAFE_API_KEY environment variable, so a client constructed with no arguments picks it up automatically. The raw HTTP API takes the same key as an Authorization: Bearer header instead.

Can I run Jev locally?

No. TypeSafe has not released the weights and offers no self-hosted build. Community projects such as openjev and open-jev reproduce the interface on top of other open models, but they are not Jev and do not use TypeSafe’s training method.

Which SDK should I use?

Use whichever matches the service you are adding this to. The Python package is typesafe-sdk and needs Python 3.10 or newer; the JavaScript package is @typesafe-ai/sdk and needs Node.js 20 or newer. Both sat at v0.6.0 on 18 September 2026, so pin the version rather than tracking the range.

Do I need an SDK at all?

No. The API is one POST to https://api.typesafe.ai/v1/systemone with a JSON body containing state, model and questions. The SDKs mainly give you typed question builders and typed responses, which is worth having in a typed codebase and skippable in a quick script.

Related guides