How the Jev API works
One endpoint, a state and a map of typed questions. The request and the response in our own words, then the same decision on DecisionNode.
Facts checked
The endpoint
Every decision is a POST to https://api.typesafe.ai/v1/systemone with a JSON body, an
Authorization: Bearer header carrying your API key and Content-Type: application/json. A second
endpoint, GET /v1/models, lists the models your key can use.
The request
| Field | Type | Required | What it holds |
|---|---|---|---|
state |
string, object or array | Yes | The input to decide on. |
model |
string | Yes | jev-latest, jev-preview or the pinned jev-1.13.0. |
questions |
object | Yes | Your own ids mapped to typed questions. Answers come back under the same ids. |
Each question has a type, instructions (a string, an object or an array) and, depending on the type,
criteria:
| Type | criteria |
|---|---|
choice |
Required: an object of option names to descriptions (a description may be null). Up to 255 options. |
score |
Required: an ordered array of 2 to 10 level descriptions, lowest first. |
noul |
Optional: descriptions of what a true and a false answer mean. |
The response
| Field | Contents |
|---|---|
model |
The model that answered. |
answers.<id> (choice) |
choice (the top option), probabilities for every option, confidence from 0 to 1. |
answers.<id> (score) |
score (the expected level), legend, probabilities for every level, confidence. |
answers.<id> (noul) |
noul: one probability from 0 to 1 that the answer is yes. |
usage |
input_tokens and output_tokens. |
Errors
| Status | Meaning |
|---|---|
| 401 | The API key is missing or wrong. |
| 422 | The body failed validation. |
| 429 | Over the rate limit. Retry with exponential backoff. |
| 529 | Temporarily overloaded. Retry after a short wait. |
Source: TypeSafe's API reference, checked October 12, 2026. Read it for the exact schema before you build against it.
The same decision on DecisionNode
DecisionNode's request has the same outline. Its yes/no type is called truth,
and images and video frames can go beside the state.
curl https://api.decisionnode.com/v1/decide \
-H "Authorization: Bearer $DECISIONNODE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "decisionnode-1.0",
"state": "We were charged twice for the October invoice (INV-20931). The second charge pushed our card over its limit and our team seats were suspended this morning. Please refund the duplicate and restore access.",
"questions": {
"route": {
"type": "choice",
"instructions": "Which team should handle this ticket?",
"criteria": {
"billing": "Charges, invoices, refunds and plans",
"bug": "Something in the product is broken",
"account": "Login, seats and permissions",
"feature_request": "Asks for something the product does not do"
}
},
"urgency": {
"type": "score",
"instructions": "How urgent is this ticket?",
"criteria": [
"routine: no deadline",
"soon: within a few days",
"today: blocks work today",
"critical: outage or data loss"
]
},
"refund": {
"type": "truth",
"instructions": "Is the customer asking for money back?",
"criteria": {
"true": "Asks for a refund or a credit",
"false": "Any other request"
}
},
"escalate": {
"type": "truth",
"instructions": "Should a person handle this now instead of an automated reply?"
}
}
}'
| Part | Jev | DecisionNode |
|---|---|---|
| Endpoint | POST api.typesafe.ai/v1/systemone |
POST api.decisionnode.com/v1/decide |
| Yes/no type | noul |
truth |
| Model names | jev-latest, jev-1.13.0 |
decisionnode-1.0, decisionnode-1.0-flash |
| Inputs besides state | None |
images (up to 16), videos as frames |
| More answer types | None |
number, point, box |
| More endpoints | GET /v1/models |
GET /v1/models, /v1/uploads, /v1/batches, /v1/sessions |
DecisionNode's full reference: POST /v1/decide. This request and four more are on the use cases page.
Jev API questions
Is there an official Jev SDK?
Yes. TypeSafe lists client SDKs for Python and for JavaScript and TypeScript, which retry rate-limit and overload errors on their own. The API is plain JSON over HTTPS, so any HTTP client works too.
What are Jev's rate limits?
100,000 tokens and 80 requests a second per key, as of October 2026. TypeSafe says the limits can change without notice and offers higher ones on custom and enterprise plans. Requests over a limit get a 429.
How long can a Jev request be?
64k tokens for the state and all questions together, and 32k tokens for the state plus the single longest question.
Does the Jev API accept images?
No. The state is text: a string, a JSON object or an array of text. DecisionNode's API takes images and video frames beside the state.
Run your own decisions on DecisionNode
Send text, JSON or images with typed questions and get probabilities back. Free tier: 50 Flash and 20 MoE requests a day.
Try DecisionNode