An independent guide and community for developers
Official Jev information: typesafe.ai

Try the Jev AI Model

Choose one question or three different questions about the same context. Try a real scenario, edit the inputs, then inspect each typed answer.

Explore GitHub projects Explore Use Cases
01 / Build a decision

Start with a concrete case

typesafe/jev-1.13

Explore one answer type at a time. Each run uses one daily attempt.

1. Choice
questions.decision
Preview the API request

The preview omits your API key and verification token. Each question ID has a matching answer ID.

{
  "model": "typesafe/jev-1.13",
  "state": {
    "input": "A customer says: My invoice shows two charges for the same order. Can you refund the extra payment?"
  },
  "questions": {
    "decision": {
      "type": "choice",
      "instructions": "Which team should handle this request?",
      "criteria": {
        "billing": "Payments, invoices and refunds",
        "technical": "Bugs, API errors and integrations",
        "general": "All other requests"
      }
    }
  }
}

Up to 6 free attempts per account each UTC day; resets at 00:00 UTC. Site capacity is limited. Input goes to OpenRouter; we store usage metadata, not your input.

02 / Model response

Ready when you are

Run a case to see one typed answer per question. Choice picks an option, Score places it on a scale, and Probability returns a value from 0 to 1.

FROM PLAYGROUND TO API

The Jev AI Model API, mapped to this Playground.

The form above puts your text under state.input. Try one question or three named questions against that same state. Look for each result under answers.<question_id>.

What each field means

The request defines the questions and answer formats. The response returns a separate result for each question. These are the fields you can inspect in the request preview and model response above.

Request fields

model
The model ID. This Playground pins typesafe/jev-1.13 so the version is explicit.
state
The shared facts to evaluate. This form sends your text as state.input.
questions
A map of named questions. This Playground sends one or three in each request.
<question_id>
A name such as action or urgency. Its answer is returned under the same name.
type
The answer format: choice selects an option, score rates ordered levels, and noul evaluates a yes/no question.
instructions
The specific judgment the model should make using the shared state.
criteria
Choice options, ordered Score levels, or the false/true meanings for a Noul question.

Response fields

answers
One typed result per question, keyed by the same question ID.
choice
The selected option key for a Choice question.
probabilities
The probability distribution across Choice options or Score levels; values add up to about 1.
confidence
A separate value derived from the distribution for Choice and Score. It is not the selected option’s probability.
score
A probability-weighted position on your ordered levels. It can fall between two levels.
legend
The Score levels mapped back from their numeric positions to the descriptions you supplied.
noul
The probability of yes, from 0 (no) to 1 (yes). Noul has no separate confidence field.

The questions in a multiple-question case share one state but are evaluated independently. One answer is not fed into another. This Playground caps a run at three questions and counts it as one daily attempt. A correctly shaped answer can still be wrong, so test representative cases before automating an action.

Route used here

OpenRouter

Use an OpenRouter key with the version pinned in this Playground. Check the model page for current pricing and availability.

Endpoint
POST https://openrouter.ai/api/alpha/decisions
Model ID
typesafe/jev-1.13
Key
OpenRouter API key, sent as a Bearer token
View Jev on OpenRouter
Official direct API

TypeSafe

TypeSafe has its own endpoint, model IDs, and API keys. Its quickstart uses jev-latest and shows how to ask multiple questions in one request.

Endpoint
POST https://api.typesafe.ai/v1/systemone
Quickstart model
jev-latest
Key
TypeSafe API key, sent as a Bearer token

A server-side OpenRouter request

TypeScript · fetch
// Run on your server. Keep the API key out of browser code.
const apiKey = process.env.OPENROUTER_API_KEY;
if (!apiKey) throw new Error("Set OPENROUTER_API_KEY");

const response = await fetch("https://openrouter.ai/api/alpha/decisions", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + apiKey,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "typesafe/jev-1.13",
    state: {input: "A customer reports a duplicate charge."},
    questions: {
      team: {
        type: "choice",
        instructions: "Which team should handle this?",
        criteria: {
          billing: "Payments and refunds",
          technical: "Bugs and integrations"
        }
      },
      urgency: {
        type: "score",
        instructions: "How urgent is the issue?",
        criteria: ["Can wait", "Needs attention today", "Immediate action"]
      },
      escalate: {
        type: "noul",
        instructions: "Should a human review this first?",
        criteria: {false: "No review needed", true: "Review before acting"}
      }
    }
  })
});

if (!response.ok) throw new Error("Decision request failed");
const {answers} = await response.json();
console.log(answers.team.choice, answers.urgency.score, answers.escalate.noul);
READ THE ANSWER

Three question types, three response shapes.

Choose the type that matches the decision your code needs to make. In the multiple-question cases above, one request returns a separate answer for each question ID.

Explore TypeSafe question types ↗

Choice

Which option fits?
choice · probabilities · confidence

Use the chosen key to route a request. Inspect the distribution before automating a high-stakes action.

Score

Where on a defined scale?
score · legend · probabilities · confidence

The score is a probability-weighted position and may fall between the levels you defined.

Noul

How likely is “yes”?
noul

Read a value from 0 (no) to 1 (yes). Noul has no separate confidence field.

Before using a decision in production

TypeSafe accepts text, JSON objects, or arrays of text as state; this simple form wraps your text under input. Jev does not accept images, audio, or video. Typed output keeps the format predictable, but an individual judgment can still be wrong. Test on your own examples and define when your code should ask for review.