Jev 1.13

TypeSafeText

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.

Our price
$0.040 / $0
input / output per 1M
−6% vs official

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": ... } }

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.

Full limits and credits
API

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.

POST/v1/systemone
Body parameters
modelstringrequired"jev-1.13"
The model id.
statestring | object | arrayrequired
What to evaluate: text, a JSON object or an array.
questionsobjectrequired
Questions under names you choose; answers come back under the same keys.
questions.*.typeenumrequiredchoice · score · noul
choice - pick one option, score - rate on a rubric, noul - yes/no.
questions.*.instructionsstring | objectrequired
The question itself.
questions.*.criteriaobject | array
choice: options { name: description } (2-255); score: ordered rubric levels (2-10); noul: optional { true, false }.
Response
answersobject
One answer per question: choice + probabilities + confidence, score + probabilities + confidence, noul - the probability of yes, 0 to 1.
usageobject
input_tokens, output_tokens and cost - what was charged, $. Only input is billed.
Example
cURLPythonJavaScriptJSON
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": ... } }
Errors
400Invalid request.
401Missing or invalid API key.
402Insufficient credits, or the key’s spending cap is exhausted.
404Model not found.
429Rate limit exceeded.