Jev API Guide: Endpoint, Model Names, SDKs and Pricing
Jev is served over a single HTTP route, and every official integration — the Python and JavaScript SDKs, Pydantic AI, LiteLLM, LangChain, Vercel's AI SDK, the Netlify AI Gateway — is a wrapper around it.
The endpoint
POST https://api.typesafe.ai/v1/systemone
Authorization: Bearer $TYPESAFE_API_KEY
Content-Type: application/json
{
"model": "jev-latest",
"state": "Customer emailed twice this week about a failed refund.",
"questions": {
"team": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Invoices, payments and refunds",
"technical": "Bugs, outages and integrations",
"other": "Anything outside those categories"
}
}
}
}
The response echoes the model version that actually answered, the chosen value, the full probability distribution, and a confidence number you can threshold on:
{
"model": "jev-1.13.0",
"answers": {
"team": {
"type": "choice",
"choice": "billing",
"probabilities": {"billing": 0.85, "technical": 0.08, "other": 0.07},
"confidence": 0.82
}
},
"usage": {"input_tokens": 312, "output_tokens": 48}
}
Model names
jev-latest— floating alias, the one to use while experimenting. As of September 2026 it resolves tojev-1.13.0.jev-1.13.0— pin this the moment you tune a threshold. A floating alias can silently move your answers.
SDKs and integrations
| Path | Package / model string |
|---|---|
| Python SDK | Official TypeSafe client, reads TYPESAFE_API_KEY |
| JavaScript SDK | @typesafe-ai/sdk, helpers like choice() |
| Pydantic AI | Agent('typesafe:jev-latest') with a typed output model |
| LiteLLM | Pass-through route /typesafe/v1/systemone |
| Vercel AI SDK | typesafe-ai/jev via experimental_evaluate; confidence in provider metadata |
| Netlify AI Gateway | Same SDK, key injected by the platform |
| Routers | typesafe/jev-latest through gateways such as Requesty |
| Agent CLIs | typesafe-ai/skills plugin marketplace for Claude Code and Codex |
Pricing and throughput
Reported pricing is ~$0.042 per million input tokens with output tokens unmetered, because a decision produces almost no output. Developers publishing their own bills describe thousands of calls for a couple of dollars: one widely shared example logged about 5,000 requests — classification, model routing, intent and steering combined — for roughly $2. A browser automation demo was quoted at 7 seconds and $0.0039 for a full flight-search run.
Those are community numbers from the launch week, not a rate card. Check your dashboard before promising anyone a budget, and remember rate limits live on the API key, not on this page.
Practical rules that save you a rewrite
- One call, all questions. Asking five things in one request is cheaper and more consistent than five requests.
- Do deterministic work in code first. Counts, sums, comparisons, timestamps — compute them, then pass them in as fields.
- Give every choice an escape option. If there is no "other" or "unclear" bucket, the model is forced to guess.
- Write the criteria as definitions, not as adjectives. Say what belongs in each bucket and what does not.
- Pin the version, then log the version that answered. Tuner's rule: the threshold and the model version are one artefact.
Last updated: 2026-09-21 · sources & corrections