Getting started
One state in, typed questions out, decisions in 70 to 500 milliseconds. This page gets you from zero to a first call, then to a system that will not embarrass you in production.
The 60-second example
A support ticket, three questions, one request. The threshold is ordinary application code.
curl -X POST https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"state": "I was charged twice for my subscription. Please fix this ASAP.",
"model": "jev-latest",
"questions": {
"team": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Payments and refunds",
"technical": "Bugs and integrations",
"other": "None of the above"
}
},
"is_urgent": {
"type": "noul",
"instructions": "Does this message convey urgency?"
}
}
}'
The response carries a probability for every option plus a confidence value. Your code compares the selected probability to a threshold you chose, and decides. That split is the whole architecture.
Every access route
Pick the one that matches your stack. Two of these skip the waitlist entirely.
| Route | How in | Notes |
|---|---|---|
| TypeSafe direct | Official SDK with a TypeSafe API key | The reference contract. Cache this page's shape in your head: state plus typed questions. Signups reopened on 28 September after a week of suspension; the $5 starter credit is currently withdrawn over abuse, so budget for real usage. |
| Vercel AI Gateway no waitlist | typesafe-ai/jev through the AI SDK evaluate path, an HTTP API at /v1/evaluate, or an existing TypeSafe client |
The fastest way in while the waitlist moves. Boolean maps to Noul; the interface differs from systemOne. |
| OpenRouter no waitlist | Decisions API with typesafe/jev-1.13 |
Use the decisions endpoint shape. Do not send these questions to a chat-completions API, it will not work. |
| Cloudflare Workers AI | typesafe/jev through a Workers AI binding |
Check Cloudflare's request shape and third-party model labeling. |
| Netlify AI Gateway | Official JS SDK from a Netlify Function | Server-side path, not a browser key. |
SDKs
Official clients for JavaScript and Python. The community covers almost everything else, including Rust, Go, Ruby, Java, Kotlin, Swift, .NET, Elixir, Scala, PHP, R, and C++. Several are now near-duplicates of each other, so check whether an official client or a well-maintained package already covers your language.
npm install @typesafe-ai/sdk, typed answers inferred from your question setpip install typesafe-sdk, sync and async clientssystem-one-adapter-python runs OpenAI and Anthropic models over the same interface, for honest side-by-side comparisonsSix design rules
Distilled from the official docs, the cookbooks, and the independent studies. Each one has a scar behind it.
Where to go next
The Playground
Paste a state, add questions, watch the typed answers come back. The fastest way to build intuition for question design.
The cookbooks
Reproducible recipes: parallel questions, reranking, guardrails, citation checks, extraction, hierarchical classification.
Official patterns
Speculative fan-out, confidence-gated routing, composite scoring, intent routing, straight from the source.
The usecases
Steal from people who already shipped. The directory above has the best of what exists.
Last updated 30 September 2026.