Learn
Getting Started with Jev
How to use Jev: get a TypeSafe key or a gateway key, set TYPESAFE_API_KEY, and make your first API call with Playground, cURL, Python, or TypeScript.
Quick answer
Create a TypeSafe API key, set TYPESAFE_API_KEY, then POST state and questions to https://api.typesafe.ai/v1/systemone. Start with one Noul, inspect the JSON, then add Choice and Score in the same request.
You can be useful with Jev in one afternoon: one key, one request, one branch in code.
1. Get access and a key
The 2026-09-15 launch post described early access and a waitlist. On 2026-09-24 TypeSafe posted that new direct console signups are paused, with no reopening date in that post. Existing accounts still create keys in the console.
If you cannot create a TypeSafe key, call the same model as Vercel Jev (typesafe-ai/jev) or OpenRouter Jev (~typesafe/jev-latest). Details: Jev on OpenRouter and Vercel. The longer path is How to use Jev.
Set the key in your environment. Never commit it.
export TYPESAFE_API_KEY=your_key_here2. Try the official Playground
Official quickstart: open the Playground, paste a state, add a Noul such as “Does this message express urgency?”, then mix in Choice and Score. Use that to learn question wording before you write production code.
This site's own Playground is not shipped yet. We will not pretend a local widget is a live Jev call.
3. One cURL request
Endpoint from official API docs:
POST https://api.typesafe.ai/v1/systemone
Authorization: Bearer <API_KEY>
Content-Type: application/jsoncurl -X POST https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"state": "Hi, I have been trying to connect my Stripe account for 3 days and the integration keeps failing. I am losing sales. Please help ASAP.",
"model": "jev-latest",
"questions": {
"urgency": {
"type": "noul",
"instructions": "Does this message express urgency?"
}
}
}'Expected shape — values are example output, copied from TypeSafe's published quickstart, not a measurement from this site:
{
"model": "jev-1.13.0",
"answers": {
"urgency": { "type": "noul", "noul": 1.0 }
},
"usage": { "input_tokens": 392, "output_tokens": 65 }
}More HTTP detail lives in the cURL tutorial and the API page.
4. Python
Official SDK package: typesafe-sdk. Python 3.10+ according to the quickstart.
pip install typesafe-sdkfrom typesafe_sdk import Noul, TypeSafeClient
with TypeSafeClient() as client:
response = client.system_one(
state="The export button crashes Settings in Safari.",
questions={
"is_bug": Noul(instructions="Does this message report something broken?"),
},
)
print(response.answers["is_bug"].noul)Full walkthrough: Jev Python.
5. TypeScript
Official package: @typesafe-ai/sdk. Node.js 22+.
npm install @typesafe-ai/sdk@0.7.0import { noul, TypeSafeClient } from "@typesafe-ai/sdk";
const client = new TypeSafeClient();
const response = await client.systemOne({
state: "The export button crashes Settings in Safari.",
questions: {
is_bug: noul("Does this message report something broken?"),
},
});
console.log(response.answers.is_bug.noul);Full walkthrough: Jev TypeScript.
6. Put a decision in code
The model should not “do the refund”. Your code should:
if (response.answers.is_bug.noul > 0.8) {
assignTo("engineering");
} else {
assignTo("triage");
}Pick thresholds after you look at your own tickets. Official confidence guidance is a starting pattern, not a shipped default.
When to use this path
Use Getting Started when you need a working request today. Expand to mixed questions once one Noul looks sane.
When not to start here
If you still need to decide whether Jev is the right tool, read What is Jev and limitations first.
Common mistakes
- Forgetting
Authorization: Bearer. - Putting the English question only in the key (
is_urgent) and leavinginstructionsvague. Official docs say IDs are not sent to the model. - Shipping the first threshold that “feels right” on five examples.
Check pricing before you load-test, and skim examples for request shapes that match real products.
Experimental images and Box
Jev 1.13 and 1.14 accept images with TypeSafe-Danger-Zone-Images: true. Box localization requires Jev 1.14 and the same header. These features are experimental, not production-ready. The text examples above remain useful without enabling images. See Images, Box, and model and SDK migration.
FAQ
Where do I get a key?
Existing TypeSafe accounts create a key in the console and set TYPESAFE_API_KEY. On 2026-09-24 TypeSafe posted that new direct signups are paused. OpenRouter and Vercel AI Gateway still document a path that uses their own key.
What model should I send?
Examples and SDKs default to jev-latest. The response reports the versioned ID that answered, such as jev-1.13.0 for jev-latest or jev-1.14.0 for jev-preview when last verified on 2026-10-16.
Sources
- Images and experimental model supportTypeSafe · accessed 2026-10-20 · documentation
- Introducing System One Models and JevTypeSafe · 2026-09-15 · accessed 2026-09-20 · official
- Quick startTypeSafe · accessed 2026-09-20 · documentation
- TypeSafe Python SDKTypeSafe · accessed 2026-09-20 · documentation
- JavaScript SDKTypeSafe · accessed 2026-09-20 · documentation