Unofficial guide · Jev / TypeSafe

How to get a Jev API key: four ways compared

By Ben (BenX) · Published · Last checked against official sources

Jev, the decision model from TypeSafe AI, can be called four documented ways. This page compares them side by side: where the key comes from, the endpoint, the model ID, and the naming quirks that break copy-pasted code. It also covers what we could and couldn't confirm about the Jev waitlist.

No affiliate links on this page. See our disclosure.

How do I get a Jev API key?

Short answer: There are four documented routes: a key from TypeSafe itself, an OpenRouter key, a Vercel AI Gateway key, or a Cloudflare account running Workers AI. Only the first is a TypeSafe key; the other three use the platform's own key and billing.

Jev is TypeSafe AI's decision model. TypeSafe serves it directly. Within days of the 15 Sep 2026 launch, Vercel AI Gateway (changelog dated 16 Sep 2026) and OpenRouter (model page lists a release date of 18 Sep 2026) added it, and Cloudflare Workers AI lists it as a third-party model too. The request shape (state + typed questions) is close to identical everywhere. What changes is the key, the URL, the model ID, and who bills you.

RouteWhere the key comes fromModel IDBilled by
TypeSafe (direct)TypeSafe console (console.typesafe.ai/keys)jev-latest or jev-1.13.0TypeSafe
OpenRouteropenrouter.ai/settings/keystypesafe/jev-1.13OpenRouter
Vercel AI GatewayAI Gateway API key or Vercel OIDC tokentypesafe-ai/jevVercel (or TypeSafe via BYOK)
Cloudflare Workers AIWorker AI binding, or account ID + API tokentypesafe/jevCloudflare

Endpoints:

  • TypeSafe: POST https://api.typesafe.ai/v1/systemone
  • OpenRouter: POST https://openrouter.ai/api/alpha/decisions (Decisions API) or POST https://openrouter.ai/api/v1/systemone (System One API, TypeSafe-SDK compatible)
  • Vercel AI Gateway: POST https://ai-gateway.vercel.sh/typesafe/v1/systemone (TypeSafe-compatible) or POST https://ai-gateway.vercel.sh/v1/evaluate (Vercel's own HTTP API)
  • Cloudflare: env.AI.run() in a Worker, or POST https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/run

Compiled from each platform's own documentation on 25 Sep 2026. We have not yet tested every route with a live key; links to each source are at the bottom of this page.

How do I get a Jev API key directly from TypeSafe?

Short answer: Sign in to the TypeSafe console and create a key at console.typesafe.ai/keys, then send it as a Bearer token to api.typesafe.ai. Jev launched in early access, so new accounts may have to wait.

  1. Go to console.typesafe.ai and sign in.
  2. Create a key on the keys page.
  3. Export it as TYPESAFE_API_KEY. The official Python and JavaScript SDKs read that variable automatically.
  4. Make your first call. Our Jev API quickstart walks through curl, Python and TypeScript.

Why go direct: you get TypeSafe's own pricing ($0.042 per million input tokens, output free, per the Models page), versioned model IDs you can pin, and GET /v1/models. Rate limits are listed as 250,000 tokens per second and 1,200 requests per minute, and TypeSafe says they can change without notice.

Is there still a Jev waitlist?

Short answer: For direct TypeSafe access, the launch post (15 Sep 2026) said early access was opening and developers were being let off the waitlist as fast as possible. We could not confirm today's sign-up status. OpenRouter says its route needs no waitlist or TypeSafe account.

What we can source:

  • TypeSafe, 15 Sep 2026: "Today, we are opening early access and bringing developers off the waitlist as quickly as we can." (launch post)
  • OpenRouter FAQ: to use Jev there, create an OpenRouter API key and call the Decisions API. "You don't need a separate signup, a waitlist, or a TypeSafe account." (OpenRouter Jev tutorial)

What we could not verify: whether a brand-new TypeSafe console account gets a key immediately today. Claims on third-party sites vary, so we don't repeat them here. If you are blocked on direct access, a gateway route is the documented alternative.

How do I use Jev through OpenRouter?

Short answer: Create an OpenRouter key, then either POST to https://openrouter.ai/api/alpha/decisions with model typesafe/jev-1.13 (the Decisions API), or set the TypeSafe SDK base URL to https://openrouter.ai/api so it calls POST https://openrouter.ai/api/v1/systemone. Neither is the chat completions endpoint.

curl https://openrouter.ai/api/alpha/decisions \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "typesafe/jev-1.13",
    "state": "My checkout page shows a blank screen after I click Pay.",
    "questions": {
      "is_bug": {
        "type": "noul",
        "instructions": "Is the customer reporting a software defect?"
      }
    }
  }'
  • Key: create one at openrouter.ai/settings/keys and export it as OPENROUTER_API_KEY. OpenRouter says to keep it server-side.
  • Endpoint quirk: OpenRouter says chat completions SDKs will not work with Jev. Use the Decisions API, OpenRouter's own SDKs, or the TypeSafe SDK pointed at OpenRouter.
  • Model IDs: typesafe/jev-1.13 (pinned to the 1.13 release) or the alias ~typesafe/jev-latest. Responses name a dated snapshot, for example typesafe/jev-1.13-20260917.
  • Cost: the OpenRouter model page listed $0.042 per million input tokens and $0 output on 25 Sep 2026, and each response includes usage.cost in USD.
  • Context: OpenRouter lists a 32K context window.
  • Alpha label: the Decisions API sits under /alpha/, and OpenRouter tags it "Alpha feature endpoints". Its schema also differs slightly from TypeSafe's: if you give a Noul criteria, it needs both true and false.

What is OpenRouter's /api/v1/systemone endpoint?

Short answer: It is OpenRouter's TypeSafe-SDK-compatible System One API. Send POST https://openrouter.ai/api/v1/systemone with your OpenRouter key as a Bearer token, or set the TypeSafe SDK's base URL to https://openrouter.ai/api. OpenRouter says you don't need a TypeSafe account or API key.

Already using the TypeSafe SDK? OpenRouter documents pointing it at OpenRouter by changing two settings, either in code:

import os
from typesafe_sdk import TypeSafeClient

client = TypeSafeClient(
    api_key=os.environ["OPENROUTER_API_KEY"],
    base_url="https://openrouter.ai/api",
)

or with environment variables, leaving your code unchanged:

export TYPESAFE_API_KEY="$OPENROUTER_API_KEY"
export TYPESAFE_BASE_URL="https://openrouter.ai/api"
  • Model IDs: the System One API maps bare IDs: jev-1.13 goes to typesafe/jev-1.13, and jev-latest goes to ~typesafe/jev-latest. Note there is no patch number: TypeSafe's own API uses jev-1.13.0. The model in the response is OpenRouter's dated slug.
  • Schema: the same noul, choice and score names and answer fields as TypeSafe. Responses add id, provider and usage.cost (USD).
  • Known gap: the SDK's client.models.list() does not work against OpenRouter, because the response shape differs.
  • Billing: calls are billed to your OpenRouter account, like the Decisions API.

How do I use Jev through Vercel AI Gateway?

Short answer: Use an AI Gateway API key (or a Vercel OIDC token) with base URL https://ai-gateway.vercel.sh/typesafe and model typesafe-ai/jev, or call Vercel's own HTTP endpoint, POST https://ai-gateway.vercel.sh/v1/evaluate. Requests are billed through AI Gateway unless you add your own TypeSafe key (BYOK).

Vercel documents a TypeSafe-compatible API, so existing TypeSafe SDK code only needs a new key and base URL:

import { TypeSafeClient } from '@typesafe-ai/sdk';

const client = new TypeSafeClient({
  apiKey: process.env.AI_GATEWAY_API_KEY,
  baseURL: 'https://ai-gateway.vercel.sh/typesafe',
});

const result = await client.systemOne({
  model: 'typesafe-ai/jev',
  state: 'I was charged twice for my subscription.',
  questions: {
    refund: { type: 'noul', instructions: 'Is the customer asking for money back?' },
  },
});

Vercel also exposes Jev through the AI SDK's experimental evaluate API (AI SDK 7.0.105 or later, per the changelog):

import { experimental_evaluate as evaluate } from 'ai';

const result = await evaluate({
  model: 'typesafe-ai/jev',
  state: 'The support agent issued a full refund to the customer.',
  questions: {
    refunded: { type: 'boolean', instructions: 'Was a refund issued?' },
  },
});

Naming quirk to watch: in the AI SDK evaluate API and Vercel's /v1/evaluate HTTP endpoint the yes/no question type is written boolean. In TypeSafe's own API and in Vercel's TypeSafe-compatible endpoint it is noul. Do not mix the two.

  • Supported endpoints on the TypeSafe-compatible API: POST /typesafe/v1/systemone and GET /typesafe/v1/models.
  • Vercel says requests are billed through AI Gateway and appear in your usage and observability alongside other models, and its changelog adds that evaluation calls show up in logs and count toward budgets. The changelog also says Jev supports zero data retention and no-training options per request.
  • To be billed by TypeSafe instead, add a TypeSafe key under BYOK.

What is Vercel's /v1/evaluate endpoint?

Short answer: It is AI Gateway's native HTTP API for Jev: POST https://ai-gateway.vercel.sh/v1/evaluate with your AI Gateway API key as a Bearer token. It uses Vercel's naming, not TypeSafe's: a yes/no question is type boolean and its answer field is probability, not noul.

  • When it arrived: Vercel added this HTTP API, together with the TypeSafe-client-compatible API, on 21 Sep 2026 (changelog).
  • Naming: /v1/evaluate follows the AI SDK names: a yes/no question is type: 'boolean' and its answer is probability. Usage fields are camelCase (inputTokens). The /typesafe path keeps TypeSafe's names (noul, input_tokens), so check field names if you switch between them.
  • Confidence: Vercel's example responses for /v1/evaluate show no confidence field, and we could not confirm whether the raw HTTP response includes one. On the AI SDK path, Choice and Score confidence is at result.providerMetadata.typesafe.confidence[questionId].
  • Not OpenAI-compatible: Vercel says evaluation "is not supported through the OpenAI-compatible, Anthropic-compatible, or Cohere-compatible endpoints."

Our view: if you already have TypeSafe SDK code, the /typesafe base URL is the smaller change. /v1/evaluate suits plain HTTP callers who are happy with Vercel's field names.

How do I use Jev on Cloudflare Workers AI?

Short answer: Call env.AI.run('typesafe/jev', { state, questions }) from a Worker, or POST to Cloudflare's /ai/run REST endpoint with your account ID and an API token. Pricing is shown in the Cloudflare dashboard.

// Inside a Cloudflare Worker with an AI binding
const response = await env.AI.run('typesafe/jev', {
  state: 'Help! My payouts have been failing for 3 days.',
  questions: {
    is_urgent: { type: 'noul', instructions: 'Does this convey urgency?' },
  },
});
  • Auth: inside a Worker you use the AI binding. Over REST, send Authorization: Bearer $CLOUDFLARE_API_TOKEN to https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/ai/run with "model": "typesafe/jev" and your state/questions inside an input object.
  • Listed details: third-party model, zero data retention: yes, context window 32,000 tokens.
  • Price: Cloudflare's model page says to view pricing in the Cloudflare dashboard. We have not confirmed the number, so we don't list one.

Which way to get a Jev key should I pick?

Short answer: Pick the platform you already have an account and billing with. Go direct to TypeSafe if you want pinned versions and TypeSafe's own limits, OpenRouter if you want to start today without a TypeSafe account, and Vercel or Cloudflare if your app already runs there.

This is our editorial view, not a benchmark:

  • Just exploring? The TypeSafe Playground (login required) needs no code.
  • Need it today and have no TypeSafe access? OpenRouter documents no-waitlist access.
  • App on Vercel? AI Gateway keeps billing, logs and budgets in one place.
  • Edge code on Cloudflare? Workers AI keeps the call inside your Worker.
  • Tuning thresholds for production? Pin a specific version (jev-1.13.0 direct, typesafe/jev-1.13 on OpenRouter), and re-test when you move versions.

Whatever you choose, keep keys server-side, and re-check prices on the platform's page before you budget. Everything here was listed in Jev's first weeks and may change.

Next steps

Sources checked for this guide

Facts on this page come from these pages, checked on 25 Sep 2026. Jev launched in September 2026 and details change quickly, so check the official page before you rely on a number.