Skip to content

Reference

What this page is

Look-up facts for the Jev API: endpoints, request and response fields, hard limits, model IDs, access routes, pricing, SDK packages, and a dated timeline. The wire schema below comes from the official Python SDK. Its models are generated from https://api.typesafe.ai/openapi.json (typesafe-sdk 0.7.1). Treat everything here as current on 2026-09-25. The product is ten days old and changes weekly.

API Surface

Item Value Source
Base URL https://api.typesafe.ai (override with TYPESAFE_BASE_URL) SDK constants.py
Decision endpoint POST /v1/systemone SDK _core/constants.py
Model listing GET /v1/models returns { models: [{ name, description, release_date }] } SDK wire schema
Auth Authorization: Bearer <key>; keys from console.typesafe.ai/settings/keys SDK, jev-mcp README
Request ID header x-typesafe-request-id (log it with support tickets) SDK _core/constants.py
Rate-limit hints retry-after, retry-after-ms headers; SDK raises TypeSafeRateLimitError SDK
Content type application/json in both directions SDK

Request Schema

SystemOneRequest. All three fields are required on the wire. SDKs fill model with jev-latest when you omit it.

Field Type Notes
state string, JSON object, or JSON array The content every question refers to. One shared state per request, even when it is an array. Text only: no images, audio or video.
model string A name or alias from GET /v1/models, e.g. jev-latest, jev-preview, jev-1.13.0
questions map of name -> question (min 1) Names are local keys. The response echoes them, and the model never sees them.

Question objects, discriminated by type:

type instructions criteria Notes
noul optional; text, object or array optional { "true": ..., "false": ... } Yes/no question or statement to evaluate
choice optional required map label -> description or null A null description means the label is read by its name alone
score optional required ordered list; position = score level, starting at 0 Since SDK 0.6.0 (2026-09-15) criteria is a list, not an integer-keyed map

Adapters rename noul

Vercel AI SDK's experimental_evaluate calls the yes/no type boolean and returns probability. Pydantic AI maps bool fields to nouls. The TypeSafe wire type is always noul.

Response Shape Reference

SystemOneResponse has three top-level fields:

Field Type Notes
model string The model that answered. It can differ from the alias you sent, so log it.
answers map name -> answer One answer per question. Each answer's type matches its question's type.
usage { input_tokens, output_tokens } Output tokens are reported but "currently free of charge"

Per-primitive answer fields (wire schema):

Primitive Fields Notes
noul type, noul (0.0-1.0) The probability of yes/true. Nothing else.
choice type, choice, probabilities (per label, sum ~1), confidence (0-1) choice is the argmax label. confidence summarizes how close the race was: a 0.52 winner against a 0.46 runner-up yields low confidence.
score type, score (float), legend (level -> criterion), probabilities (per level), confidence score is the probability-weighted average of levels, so it can fall between integers

This illustrative wire response uses the OpenAPI example values:

{
  "model": "jev-1.13.0",
  "answers": {
    "billing": { "type": "noul", "noul": 0.98 },
    "tone": { "type": "choice", "choice": "angry",
              "probabilities": { "angry": 0.8, "calm": 0.1, "excited": 0.1 },
              "confidence": 0.9 },
    "urgency": { "type": "score", "score": 1.7, "confidence": 0.9,
                 "legend": { "0": "Can wait", "1": "Needs attention this week", "2": "Needs attention today" },
                 "probabilities": { "0": 0.1, "1": 0.1, "2": 0.8 } }
  },
  "usage": { "input_tokens": 120, "output_tokens": 12 }
}

The DDDS ticket-routing walkthrough gives a worked example. urgent returns {"noul": 0.92} and owner returns the choice shape. The calling code pages on-call only when urgent > 0.9 and the winning team matches. It sends the ticket to human review when confidence < 0.6. The response also carries the model version that answered, so treat it as part of the audit record.

Limits

Limit Value Source
State + longest single question ~32,000 tokens on jev-1.13 (~150K English characters) Pydantic AI docs, TypeSafe docs
State + all questions ~64,000 tokens Pydantic AI docs
Over budget HTTP error max_tokens_exceeded Pydantic AI docs
Choice cardinality up to 255 options; the 256th returns HTTP 400 Pydantic AI docs, TypeSafe docs
Score levels up to 10; the 11th returns HTTP 400 (docs describe 2-10; AI SDK requires at least 2) Pydantic AI docs, AI SDK types
Questions per request at least 1; the schema sets no maximum (min_length=1 only), so the 64K-token state + all-questions budget is the practical cap OpenAPI-generated SDK models (checked 2026-09-27)
Input modality text / JSON only TypeSafe docs
Sampling knobs none (temperature, top_p are ignored) Pydantic AI docs
Latency 70-500 ms end-to-end (TypeSafe). Third parties report ~180 ms typical (Pydantic AI) and 150-500 ms (jev-mcp). vendor + integrators
Advertised context on OpenRouter 32,000 tokens OpenRouter listing
Rate limits (jev-1.13) 250,000 tokens/s and 1,200 requests/min per account; over either returns HTTP 429. TypeSafe says the limits adjust with demand and capacity TypeSafe models page (via search listing and third-party guides, 2026-09-27)

High-cardinality choices use a 2-stage internal process (score options, then choose), which can be slower. The official SDK's default HTTP timeout is 10 s per operation. It retries connection errors, timeouts and retryable statuses twice by default (RetryPolicy).

Model IDs and Aliases

ID Meaning Notes
jev-latest Moving alias for the stable release SDK default. Currently resolves to jev-1.13.0.
jev-preview Moving alias that runs ahead when a preview build exists Has pointed to the same model as jev-latest since launch (third-party check, 2026-09-20)
jev-1.13.0 Pinned version, released 2026-09-15 Pin this once thresholds are tuned
jev-1.12 Earlier version referenced by third-party tools (jev-mcp docs) Not listed as current. TypeSafe has published no availability or deprecation statement for it (checked 2026-09-27).
typesafe/jev-1.13, ~typesafe/jev-latest OpenRouter IDs OpenRouter serves pinned versions, plus a ~ alias
typesafe-ai/jev Vercel AI Gateway ID GatewayEvaluationModelId in @ai-sdk/gateway
typesafe/jev Cloudflare Workers AI ID A single always-current alias with no pinned versions

TypeSafe publishes no model changelog. It does publish a per-version "jaggedness" page (docs.typesafe.ai/model-jaggedness/jev-1.13) that lists known weak spots.

Access Routes

Route Model ID Endpoint / call Pricing Status (2026-09-25)
TypeSafe direct jev-latest, jev-1.13.0 POST api.typesafe.ai/v1/systemone $0.042/MTok input, output free New signups paused since 2026-09-22. Existing accounts work.
Vercel AI Gateway typesafe-ai/jev AI SDK 7 experimental_evaluate with a gateway key official price Live since ~2026-09-16
OpenRouter typesafe/jev-1.13, ~typesafe/jev-latest POST https://openrouter.ai/api/alpha/decisions (Decisions API, alpha). Not the chat-completions API. $0.042/MTok input, $0 output Live, no TypeSafe account needed
Cloudflare Workers AI typesafe/jev env.AI.run('typesafe/jev', { state, questions }) Listed in the Cloudflare dashboard Live; question schema matches TypeSafe's
jevtypesafeai.com n/a Unofficial reseller $0.25-$0.42/M (reseller markup) Not TypeSafe. Treat as untrusted.

Pricing

Item Value Source
Input tokens $0.042 per million ($42 per billion) TypeSafe blog, OpenRouter, Vercel, press
Output tokens free ("currently free of charge" per the API schema) OpenAPI schema, OpenRouter
Signup credit $5 (≈119M input tokens at list price), offered from 2026-09-20 TypeSafe (X), press
Sustainability TypeSafe discloses that it "can't prove it isn't subsidized" TypeSafe blog
Worked example TypeSafe's Doom demo bot makes ~10 queries/s for ~$7/hour (vendor figure) TypeSafe launch demo, reported by The Register (2026-09-16)

SDKs and Integrations

Package Registry Latest (date) License What it is
typesafe-sdk PyPI 0.7.1 (2026-09-21) MIT Official Python SDK: TypeSafeClient / AsyncTypeSafeClient, Noul / Choice / Score, Python >= 3.10
typesafe-ai PyPI 0.1.0 (2026-09-17) n/a Third-party redirect shim to typesafe-sdk. Not published by TypeSafe.
@typesafe-ai/sdk npm 0.6.0 (2026-09-15) MIT Official JS/TS SDK: TypeSafeClient, choice(), Node >= 20
system-one-adapter PyPI 0.2.1 (2026-09-22) n/a TypeSafe's drop-in system_one API backed by OpenAI / Anthropic / Gemini, for LLM baselines. Does not call Jev.
pydantic-ai-slim[typesafe] PyPI pydantic-ai 2.50.0 (2026-09-25) MIT TypeSafeModel, typesafe:jev-latest. Native support reported from 2.46.
langchain-typesafe PyPI 0.0.1a3 (2026-09-20) MIT TypeSafeClassifier Runnable, experimental ModelRouterMiddleware and AutoModeMiddleware
@langchain/typesafe npm 0.0.1 n/a LangChain.js integration
ai + @ai-sdk/gateway npm 7.0.114 / 4.0.92 Apache-2.0 experimental_evaluate and the gateway ID typesafe-ai/jev
@jkudish/jev-mcp npm 0.8.0 (2026-09-24) MIT Eleven MCP judgment tools. Multi-provider: TypeSafe, OpenRouter, Cloudflare, Vercel.
jev-mcp npm 0.5.0 (2026-09-20) MIT A different MCP server (rashedInt32), unrelated to jkudish's repo
anyjev PyPI 0.0.2 (2026-09-21); 0.1.0 with L2 unreleased Apache-2.0 Nokia Applied Research: Jev-style decisions over open LLMs. Not affiliated with TypeSafe.

SDK Environment Variables and Errors

Variable Default Purpose
TYPESAFE_API_KEY none API key
TYPESAFE_BASE_URL https://api.typesafe.ai Endpoint override (gateways, proxies)
TYPESAFE_DEFAULT_MODEL jev-latest Default model
TYPESAFE_LOG_LEVEL n/a SDK logging level

Python SDK exception classes: TypeSafeError (base), TypeSafeAPIError, TypeSafeAPIConnectionError, TypeSafeAPITimeoutError, TypeSafeAPIResponseValidationError, TypeSafeAuthenticationError, TypeSafeBadRequestError, TypeSafePermissionDeniedError, TypeSafeNotFoundError, TypeSafeRateLimitError, TypeSafeUnprocessableEntityError, TypeSafeInternalServerError. Since 0.7.1 the SDK validates the key early and keeps it out of logged exceptions.

Timeline

Date Event Source
2026-09-11 / 09-14 First public JS SDK (0.5.7) and Python SDK (0.5.7) releases npm, SDK changelog
2026-09-15 TypeSafe AI leaves stealth with a $40M seed led by DCVC (reported ~$200M valuation). Jev (jev-1.13.0) launches in early access with a waitlist. SDKs 0.6.0 ship. TypeSafe blog, AIwire, Forbes
~2026-09-16 Vercel AI Gateway adds typesafe-ai/jev Vercel, press
2026-09-17 langchain-typesafe 0.0.1a1 PyPI
2026-09-18 typesafe-sdk 0.7.0 switches from msgspec to pydantic (breaking) and adds response_model SDK changelog
~2026-09-19 Pydantic AI native TypeSafeModel. OpenRouter (Decisions API) and Cloudflare Workers AI routes appear in the same week. PyPI, Forbes (2026-09-19)
2026-09-20 "Jev is now available to everyone. No waitlist." $5 credit for new accounts. TypeSafe on X
2026-09-22 New signups paused "due to immense swell of demand". Existing accounts keep working. TypeSafe on X
late Sept 2026 Prompt-injection research on Jev published: arXiv 2609.28613, Check Point, VentureBeat see Sources

Source Discrepancies

  • Pricing: the official figure is $0.042/MTok input with output free. TypeSafe's blog, the Vercel and OpenRouter listings, and flaviocopes all agree. The unofficial reseller site jevtypesafeai.com shows $0.25-$0.42/M, which is reseller markup, not official pricing. The official domain is typesafe.ai.
  • Headline multipliers: the claims vary. The product page says "up to 200x lower latency / 400x lower cost". The workflow-evals derivation says 193.6x / 444.6x. The announcement table says "40x-200x faster". Launch press says "up to 100x faster and 100x cheaper". All of these are self-reported against different comparison points, so treat them as upper bounds.
  • Latency: TypeSafe quotes 70-500 ms end-to-end. Integrators report ~180 ms typical (Pydantic AI) and 150-500 ms per judgment (jev-mcp), which is consistent with the vendor range.
  • Context: OpenRouter lists a 32,000-token context. TypeSafe and Pydantic describe two budgets: 32K for state plus the longest question, and 64K for state plus all questions. The 32K figure is the one that binds in practice.
  • "Cannot hallucinate": TypeSafe means schema impossibility. The DDDS walkthrough correctly narrows it: Jev "cannot break the declared output schema. It can still choose the wrong valid option with high confidence."
  • Founder name: a few write-ups say "Diego Almeida". Company press and interviews say Diogo Almeida.
  • Independent Jev accuracy: AnyJev's tables quote Jev at 0.727 accuracy on LocalLLaMA/typed-decisions "as published by their authors" (not rerun). Earlier vault revisions also quoted an ECE and a Brier score; AnyJev's current docs no longer carry them, so they are dropped here.

Sources