Jev 1.13
Jev 1.13 by TypeSafe: no free text, just typed decisions — pick an option, score on a rubric, yes/no with probabilities. Built for classification, routing and ticket triage.
First request
import requests
resp = requests.post(
"https://api.altrouter.ai/v1/systemone",
headers={"Authorization": "Bearer ar-..."},
json={
"model": "jev-1.13",
"state": {
"ticket": "My card was charged twice for the subscription"
},
"questions": {
"team": {
"type": "choice",
"instructions": "Which team should handle this ticket?",
"criteria": {
"billing": "payments, refunds",
"tech": "bugs, API errors",
"other": None
}
},
"urgency": {
"type": "score",
"instructions": "How urgent is it?",
"criteria": [
"can wait",
"normal",
"urgent"
]
},
"refund": {
"type": "noul",
"instructions": "Does the customer ask for a refund?"
}
}
},
).json()
print(resp["answers"]["team"]["choice"])
# → { "answers": { "team": { "choice": "billing", "probabilities": {...} },
# "urgency": { "score": 1.8, ... }, "refund": { "noul": 0.98 } },
# "usage": { "input_tokens": 448, "output_tokens": 69, "cost": ... } }const resp = await fetch("https://api.altrouter.ai/v1/systemone", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.ALTROUTER_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
"model": "jev-1.13",
"state": {
"ticket": "My card was charged twice for the subscription"
},
"questions": {
"team": {
"type": "choice",
"instructions": "Which team should handle this ticket?",
"criteria": {
"billing": "payments, refunds",
"tech": "bugs, API errors",
"other": null
}
},
"urgency": {
"type": "score",
"instructions": "How urgent is it?",
"criteria": [
"can wait",
"normal",
"urgent"
]
},
"refund": {
"type": "noul",
"instructions": "Does the customer ask for a refund?"
}
}
}),
}).then((r) => r.json());
console.log(resp.answers.team.choice);curl https://api.altrouter.ai/v1/systemone \
-H "Authorization: Bearer ar-..." \
-H "Content-Type: application/json" \
-d '{
"model": "jev-1.13",
"state": {
"ticket": "My card was charged twice for the subscription"
},
"questions": {
"team": {
"type": "choice",
"instructions": "Which team should handle this ticket?",
"criteria": {
"billing": "payments, refunds",
"tech": "bugs, API errors",
"other": null
}
},
"urgency": {
"type": "score",
"instructions": "How urgent is it?",
"criteria": [
"can wait",
"normal",
"urgent"
]
},
"refund": {
"type": "noul",
"instructions": "Does the customer ask for a refund?"
}
}
}'
# → { "answers": { "team": { "choice": "billing", "probabilities": {...} },
# "urgency": { "score": 1.8, ... }, "refund": { "noul": 0.98 } },
# "usage": { "input_tokens": 448, "output_tokens": 69, "cost": ... } }Not a chat: /v1/systemone is compatible with the TypeSafe System One API, so code written for TypeSafe changes only the address, the key and the model id.
Limits
Context is 64K tokens per request and up to 32K per question, with state, instructions and criteria counted together. Answers are not billed — only input is — so ten questions about one state in a single request cost less than ten requests.
There is no subscription: every successful request is billed at the price above, and a failed one is not billed at all. That price is already 6% below the vendor's official one — the official price is shown struck through next to it so it can be checked. No TypeSafe account of your own is needed: requests go to api.altrouter.ai and we make the upstream call.
Rate limiting is shared across models and counted per key: 600 requests per minute by default, and a 429 with retry-after: 60 above it. An individual key can get its own limit and a spending cap per day, week, month or lifetime in the dashboard.
Not a chat: the model writes no text, it answers typed questions - choice, score, yes/no - with probabilities. The endpoint is compatible with the TypeSafe System One API; only input is billed.
/v1/systemone