TypeSafe Jev now available in AI Gateway

September 17, 2026

TypeSafe’s Jev model is now available through Netlify’s AI Gateway with zero configuration required.

Install @typesafe-ai/sdk and use it directly in your Netlify Functions — no API keys to create, no provider config, no base URLs to wire up. AI Gateway handles credentials automatically, and usage is billed to your Netlify credits like every other model in the gateway.

Jev is TypeSafe’s first “System One” model, and it works differently from the chat models you’re used to. Instead of generating prose, you send it your program state along with a set of typed questions, and it returns typed answers with calibrated probabilities. There are three question primitives: choice picks one option from a set, score rates against ordered levels, and noul returns a yes/no probability between 0 and 1. Answers are constrained to the options you declare, so there’s no JSON parsing or schema coercion on your end.

Every question in a request is evaluated in parallel against the same state, which means batching a dozen questions into one call costs little more than asking one. State and questions share a budget of roughly 32,000 tokens — about 150,000 characters of English text — and TypeSafe reports end-to-end response times of 70–500ms, making Jev a good fit for classification, routing, extraction, scoring, and guardrail checks on the request path. The SDK defaults to the jev-latest alias, currently jev-1.13.0, and requires Node.js 20 or newer.

Here’s a Function that routes an incoming contact form submission to sales, support, or spam:

import type { Config, Context } from "@netlify/functions";
import { choice, TypeSafeClient } from "@typesafe-ai/sdk";
export default async (req: Request, context: Context) => {
const client = new TypeSafeClient();
const { answers } = await client.systemOne({
state: await req.json(),
questions: {
team: choice("Route this contact form submission", {
sales: null,
support: null,
spam: null,
}),
},
});
return Response.json({
team: answers.team.choice,
requestId: context.requestId,
});
};
export const config: Config = { path: "/api/route", method: "POST" };

The choice helper declares the three possible destinations up front, so answers.team.choice comes back as one of them and nothing else, which makes the response safe to branch on directly. Each answer also carries a probability distribution and a confidence value, so you can act on high-confidence decisions and escalate the rest to a human.

Learn more in the AI Gateway documentation and the TypeSafe documentation.