DEVELOPER GUIDE / INDEPENDENT GUIDE
Jev API
Use the Jev AI API to classify, route and score software state. This guide follows TypeSafe’s direct HTTP interface, with separate links for supported gateways and official developer tools.
Documentation checked September 18, 2026
How to use Jev: API quick start
Start with API access, copy the first request, then inspect the live classifier example. Using a gateway? Check the provider status table first.
Send a state and a set of typed questions to POST https://api.typesafe.ai/v1/systemone, using model jev-latest. The response contains an answer for each question. Start with one Choice question, then add Noul or Score when the task needs them.
Source: Official TypeSafe quickstart. These examples use our own support scenarios and the documented request format.
The three HTTP requests below passed direct API smoke tests on 2026-09-18. These checks confirm the integration, not model accuracy.
Get Jev API access
Create an API key in the official TypeSafe console. Store it on your server as TYPESAFE_API_KEY. The request header is Authorization: Bearer <API_KEY>; send JSON with Content-Type: application/json.
Never place the key in a browser bundle or a public environment variable. Access, account limits and billing belong to your chosen provider; check its current console before enabling a public integration.
Jev provider and gateway status
Checked September 18, 2026. An official listing and our own successful integration test are different evidence. These are the access paths we can currently document.
| Provider | Official status | Our testing |
|---|---|---|
| TypeSafe Direct | Official direct API | Tested live: Choice, Noul and Score. This is the path used by our Live Playground. |
| Vercel AI Gateway | Officially supports Jev | Not tested through this path by this site. |
| OpenRouter | Officially lists Jev 1.13 | Not tested through this path by this site. |
Your first Jev API call
Run this Jev API example in a terminal where your key is already configured. It asks Jev to route a support request.
curl https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"model": "jev-latest",
"state": "The customer says:\n“I was charged twice for my subscription and need a refund.”",
"questions": {
"decision": {
"type": "choice",
"instructions": "Which team should handle this request?",
"criteria": {
"Billing": null,
"Technical Support": null,
"Sales": null,
"Other": null
}
}
}
}
JSONRequest structure
state: the text, object or array being evaluated.model:jev-latestfor the direct TypeSafe endpoint.questions: named questions, each with atypeandinstructions. Addcriteriafor options or rubric levels.
Answers use the same question names. Several questions can share one state in a request. See the official API reference for the full contract.
Choice example: use Jev as a classifier
The first call uses Choice: each criteria key is a possible result, with an optional description to clarify its meaning. A value of null is valid when the label needs no explanation. Our playground builds this map from your choices, so custom labels are not assigned a hard-coded support rubric.
The response identifies the selected choice, gives every option a probability, and includes a separate confidence. Useful tasks include ticket classification, agent tool selection and routing. Official documentation: Choice.
Recorded classifier run: the input was “I was charged twice for my subscription and need a refund.” With Billing, Technical Support, Sales and Other as the allowed labels, the live API returned the following answer on September 18, 2026.
{
"type": "choice",
"choice": "Billing",
"confidence": 1,
"probabilities": {
"Billing": 1,
"Other": 0,
"Technical Support": 0,
"Sales": 0
}
}An application can read answers.decision.choice and map Billing to its billing queue. Apply your own review policy before taking action. The returned 100% probability and 100% confidence describe this single answer; they are not a measured classification accuracy. We tested the model call, not an end-to-end ticketing system.
Noul example: urgency detection
Noul evaluates a yes/no question. Submit this body to the same endpoint and with the same headers as the first call.
{
"model": "jev-latest",
"state": "Our checkout has been down for an hour. Customers cannot pay and we are losing orders. Please help immediately.",
"questions": {
"decision": {
"type": "noul",
"instructions": "Does this message express urgency?"
}
}
}A returned noul of 0.99 means a 99% probability of yes. It does not mean a 99% urgency score. Noul has no separate confidence field. Optional true/false criteria can clarify what each outcome means. Official documentation: Noul.
Score example: customer frustration
Score uses ordered descriptions, from the low end of a scale to the high end. Include at least two levels.
{
"model": "jev-latest",
"state": "I have contacted support three times about the same broken integration. This is extremely frustrating, and I need someone to resolve it.",
"questions": {
"decision": {
"type": "score",
"instructions": "How frustrated does the customer appear?",
"criteria": [
"Calm",
"Frustrated",
"Very angry"
]
}
}
}The three entries are levels 0, 1 and 2. Jev returns a probability-weighted score that can fall between levels, plus a legend, level probabilities and confidence. For example, probabilities of 5%, 30% and 65% produce a score of 1.6, not 1.6%. Official documentation: Score.
Understanding Jev responses
These are captured responses from the three separate HTTP requests above, verified on September 18, 2026. The requested alias jev-latest resolved to jev-1.13.0. Results and latency can vary; these examples are integration checks, not an accuracy or speed benchmark.
{
"model": "jev-1.13.0",
"answers": {
"decision": {
"type": "choice",
"choice": "Billing",
"confidence": 1,
"probabilities": {
"Billing": 1,
"Other": 0,
"Technical Support": 0,
"Sales": 0
}
}
},
"usage": {
"input_tokens": 318,
"output_tokens": 46
}
}{
"model": "jev-1.13.0",
"answers": {
"decision": {
"type": "noul",
"noul": 0.99
}
},
"usage": {
"input_tokens": 294,
"output_tokens": 20
}
}{
"model": "jev-1.13.0",
"answers": {
"decision": {
"type": "score",
"score": 1.19,
"confidence": 0.71,
"legend": {
"0": "Calm",
"1": "Frustrated",
"2": "Very angry"
},
"probabilities": {
"0": 0,
"1": 0.81,
"2": 0.19
}
}
},
"usage": {
"input_tokens": 326,
"output_tokens": 17
}
}Multiply a probability or confidence by 100 to display a percentage. Read confidence from the API; do not replace it with the winning probability. The optional display of usage.input_tokens and usage.output_tokens helps inspect consumption without changing the decision.
Our hands-on review records both the direct smoke-test and production runs, with their separate latency observations and measurement limitations.
Use the official Python SDK
TypeSafe’s quickstart specifies Python 3.10 or newer and pip install typesafe-sdk. The client reads the server environment variable. This example follows its TypeSafeClient.system_one structure.
# Python >= 3.10
# Install: pip install typesafe-sdk
# Set TYPESAFE_API_KEY in your server environment first.
from typesafe_sdk import Choice, Noul, Score, TypeSafeClient
with TypeSafeClient() as client:
response = client.system_one(
model="jev-latest",
state="I have been charged twice. Please fix this today.",
questions={
"department": Choice(
instructions="Which team should handle this request?",
criteria={"billing": None, "technical": None, "sales": None},
),
"urgency": Noul(instructions="Does this message express urgency?"),
"frustration": Score(
instructions="How frustrated does the customer appear?",
criteria=["Calm", "Frustrated", "Very angry"],
),
},
)
print(response.answers["department"].choice)
print(response.answers["urgency"].noul)
print(response.answers["frustration"].score)See the official Python SDK documentation for the current API and retry behavior.
Using Jev with Vercel AI Gateway
Vercel’s official model page confirms Jev is available through AI Gateway. It currently shows model typesafe-ai/jev with the AI SDK’s experimental evaluation interface. Its example uses a boolean question; that is the Gateway interface, not the direct API’s noul schema.
Follow Official Vercel AI Gateway: Jev for that integration. Do not mix its model identifier or SDK fields into the TypeSafe HTTP examples above. This site’s Live Playground uses the direct TypeSafe API.
OpenRouter also has an official TypeSafe model listing containing Jev. That confirms a listed access channel, not that we have tested the Gateway or OpenRouter integrations with an account.
Jev GitHub: SDKs and agent skills
TypeSafe maintains the official Python SDK repository, official JavaScript/TypeScript SDK repository, and official agent skills repository. These are client libraries and integration guidance. They should not be described as Jev model weights or the model’s source code.
Jev API errors
- 401: check the server API key and Authorization header.
- 422: correct the request or question schema.
- 429: the provider rate limit was reached.
- 529: TypeSafe is temporarily overloaded.
For 429 and 529, use bounded exponential backoff. Our adapter retries at most twice, with an overall timeout, and shows errors without switching a failed live request to simulated results. Public integrations also need their own request limits. Official documentation: errors.
How to use Jev in an agent
Pass the relevant agent state and allowed actions as a Choice question. Application code applies permissions, retry budgets and review thresholds before executing a tool.
- Agent state
- Jev decision
- Policy checks
- Tool or next step
An LLM can plan or explain while Jev evaluates the next bounded decision. Read the Jev vs LLM comparison.
Try Jev online
Open the Jev Decision Playground and choose a classification, urgency or scoring example. Live Jev means a server-mediated call to TypeSafe. Interactive Demo means illustrative results with no model call. The current mode is shown beside the playground.
TryJevAI.com is an independent demo and learning resource. It is not affiliated with, endorsed by, or operated by TypeSafe AI.
FROM CONCEPT TO INTERACTION
See the decision pattern for yourself.
Explore Choice, Noul and Score examples. The playground clearly labels Live Jev and Interactive Demo results.
Try Jev AIThis guide is independent of TypeSafe AI. For current model capabilities and access, see the official documentation.