Jev 1.13 API
TypeSafe's System One decision model: send app state plus typed questions, get typed answers with calibrated probabilities in under a second.
Jev 1.13 is a structured decision model from TypeSafe, available on OttoPort's OpenAI-compatible API as the model ID jev-1.13 at $0.047 per 1M input tokens as of 2026-10-14.
Provider
TypeSafe
Price
$0.047 per 1M input tokens
Model ID
jev-1.13
Type
structured decision model
Create with Jev 1.13
decisionYour result appears here
Start with the example prompt or make it your own. Your OttoPort account is used securely for generation.
Jev 1.13 API pricing
What OttoPort bills for Jev 1.13, and what that works out to per unit. Rates are read from the same catalog the gateway meters against, and were current on 2026-10-14.
| Input | $0.047 / 1M tokens | |
|---|---|---|
| Output | $0.00 / 1M tokens | |
| Typical request | $0.000047 | 1,000 input + 1,000 output tokens |
| Requests per $1 | 21,276 | at that same 1K in / 1K out shape |
| Context window | 32,000 tokens | a full-context request costs $0.0015 in input alone |
No subscription and no minimum — OttoPort bills prepaid credits against usage. See the full rate card.
Call Jev 1.13 in three lines
Send "model": "jev-1.13" to POST https://ottoport.ai/api/v1/decisions with an OttoPort key. No TypeSafe account, no waitlist, no separate SDK.
curl https://ottoport.ai/api/v1/decisions \
-H "Authorization: Bearer $OTTOPORT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jev-1.13",
"state": { "ticket_subject": "Refund for double charge", "customer_tier": "pro" },
"questions": {
"route": {
"type": "choice",
"instructions": "Which queue should this ticket go to?",
"criteria": { "billing": "Payment or invoice issues", "technical": "Bugs and API problems" }
}
}
}'import requests
resp = requests.post(
"https://ottoport.ai/api/v1/decisions",
headers={"Authorization": "Bearer " + API_KEY},
json={
"model": "jev-1.13",
"state": {"ticket_subject": "Refund for double charge", "customer_tier": "pro"},
"questions": {
"route": {
"type": "choice",
"instructions": "Which queue should this ticket go to?",
"criteria": {"billing": "Payment or invoice issues", "technical": "Bugs and API problems"},
}
},
},
).json()
# A typed answer with a probability — nothing to parse.
print(resp["answers"]["route"]["choice"], resp["answers"]["route"]["confidence"])const res = await fetch("https://ottoport.ai/api/v1/decisions", {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "jev-1.13",
state: { ticket_subject: "Refund for double charge", customer_tier: "pro" },
questions: {
route: {
type: "choice",
instructions: "Which queue should this ticket go to?",
criteria: { billing: "Payment or invoice issues", technical: "Bugs and API problems" },
},
},
}),
});
// A typed answer with a probability — nothing to parse.
const { answers } = await res.json();
console.log(answers.route.choice, answers.route.confidence);Before you start
- 1. Create a key at /api-keys.
- 2. Top up credits — the smallest pack is $25.
- 3. Paste the request. It returns on the same request.
Full reference at /docs, or drive it from an agent with the MCP server and CLI.
Request parameters
The body POST https://ottoport.ai/api/v1/decisions accepts for Jev 1.13.
| Field | Type | Required | Notes |
|---|---|---|---|
| model | string | Yes | Always jev-1.13 for Jev 1.13. |
| state | object | Yes | The app state the questions are judged against. Any JSON object; its tokens are the billed unit. |
| questions | object | Yes | Named questions, each typed noul (yes/no), choice (pick one from criteria), or score. Answers come back under the same keys, with probabilities. Answer tokens are free. |
Jev 1.13 direct vs through OttoPort
Jev 1.13 is the same model either way — what changes is how many accounts, keys, and integrations you carry to reach it.
| TypeSafe direct | Via OttoPort | |
|---|---|---|
| Accounts and keys | A TypeSafe account, plus one more for every other model you add | One OttoPort account and one key for the whole catalog |
| Request shape | TypeSafe's own SDK and response format | OpenAI-compatible — point baseURL at OttoPort and change the model string |
| Switching models | A new integration per provider | Replace jev-1.13 with any other model ID in the catalog |
| Billing | A separate invoice and contract per provider | Prepaid credits, no subscription, one usage ledger |
| Provider outages | Your call fails | Configured backup routes are tried in order on provider failure |
Put the facts in `state`; keep questions about one decision each.
Write criteria as the rule an operator would apply.
Read the probability, not just the answer — 0.55 is a coin flip.
Jev 1.13 API questions
Cost, keys, and model IDs for Jev 1.13 on OttoPort.
How much does the Jev 1.13 API cost?
On OttoPort, Jev 1.13 costs $0.047 per 1M input tokens as of 2026-10-14. For scale, typical request: $0.000047. Billing is prepaid usage with no subscription and no minimum, and the current rate is always published at ottoport.ai/pricing.
How do I get a Jev 1.13 API key?
You do not need a TypeSafe key. Create an OttoPort account, generate a key at ottoport.ai/api-keys, and send it as "Authorization: Bearer <key>" to POST https://ottoport.ai/api/v1/decisions with "model": "jev-1.13". The same key reaches every other model in the catalog.
What is the model ID for Jev 1.13?
The OttoPort model ID for Jev 1.13 is jev-1.13. Pass it as the model field on POST https://ottoport.ai/api/v1/decisions, or list it programmatically from GET https://ottoport.ai/api/v1/models.
Do I need a TypeSafe account to use Jev 1.13?
No. OttoPort connects to TypeSafe on your behalf, so one OttoPort account covers Jev 1.13 and every other model in the catalog — no per-provider contracts, keys, or invoices.