jev·agent

Access & quickstart

How to get access to Jev and make your first call

Jev is a closed managed API. There is no download, no open weights and no self-hosting — you need a key from TypeSafe, or a provider that already has one.

1. Get on the early-access list

Jev came out of stealth on September 15, 2026, and access is still being rolled out in batches. TypeSafe is running an early-access waitlist on its official console and issuing API keys to approved developers in waves.

Start at typesafe.ai to join the queue.

At launch there was no publicly documented free-credit or trial program, so budget for paid usage from your first request. Given the price, that is a low bar — see pricing.

2. Or skip the queue via an aggregator

If you are still waiting on a first-party key, Jev is already resold through gateways you may already be using:

TypeSafe AI (first-party)

Official API. Early-access waitlist; keys issued in batches.

Open →

OpenRouter

Live as `typesafe/jev-1.13` at $0.042/M input, $0 output, 32K context, ~99.8% availability. Note it will not show up in OpenRouter's default model list — see the gotcha below.

Open →

Vercel AI Gateway

Also carries it, as model id `typesafe-ai/jev`, at the same $0.042/M input, $0 output.

Open →

Going through a gateway means the gateway's billing, rate limits and privacy terms apply — not TypeSafe's. Worth a read before you route production traffic through one.

3. Make your first request

The endpoint is POST https://api.typesafe.ai/v1/systemone, and the early-access model route is jev-latest. Note this is not the OpenAI chat-completions shape — you send a state plus questions, so you need TypeSafe's client (or a small bespoke one) rather than pointing an OpenAI SDK at a new base URL.

Install

python
pip install "typesafe-sdk>=0.5.7"

Python

python
import os
from typesafe_sdk import Choice, Noul, NoulCriteria, Score, TypeSafeClient

client = TypeSafeClient(api_key=os.environ["TYPESAFE_API_KEY"], timeout=120.0)

response = client.system_one(
    model="jev-latest",
    state="The payment failed twice and the customer is asking for a refund.",
    questions={
        "department": Choice(
            instructions="Which team should handle this?",
            criteria={
                "billing":   "Payments, invoicing, refunds",
                "technical": "Bugs, outages, integrations",
                "sales":     "Pricing, upgrades, new accounts",
            },
        ),
        "urgency": Noul(
            instructions="Does this convey urgency?",
            criteria=NoulCriteria(
                true="Explicitly time-sensitive",
                false="No urgency expressed",
            ),
        ),
        "frustration": Score(
            instructions="How frustrated is the customer?",
            criteria=["Calm", "Frustrated", "Very angry"],
        ),
    },
)

answers = response.answers
print(answers["department"].choice)      # -> "billing"
print(answers["department"].confidence)  # -> 0.0-1.0
print(answers["urgency"].noul)           # -> 0.0-1.0
print(answers["frustration"].score)      # -> "Frustrated"
print(response.usage.input_tokens)

JavaScript / TypeScript

An official JavaScript SDK ships alongside Python under the same typesafe-sdk package name. TypeSafe's published examples are Python-first, so for exact JS signatures check the SDK section of the docs rather than transliterating the Python above.

4. Things that will bite you