Decision API

Jev API for typed decisions in your code

Jev is TypeSafe AI's System One model. It returns a Noul, Choice, or Score with probabilities instead of text. Get a key here and call it from one POST, with no waitlist.

{
  "model": "jev-1.13",
  "state": "I was charged twice for my subscription.",
  "questions": {
    "refund": {
      "type": "noul",
      "instructions": "Is the customer asking for money back?"
    }
  }
}
Read Jev DocsTry a decision

2 free calls for new accounts · 1 credit per successful call · failed calls are free

Examples

Eight decisions you can run

Hover a card to read the request. Copy it, or open it in the playground.

Route a blank checkout

Choice returns the owning team and the probability of each team.

{
  "model": "jev-1.13",
  "state": "Checkout shows a blank page after Pay is clicked. The customer is on the live store, not a sandbox.",
  "questions": {
    "team": {
      "type": "choice",
      "instructions": "Which team should own this ticket?",
      "criteria": {
        "payments": "Checkout, billing, or payment processing.",
        "frontend": "Rendering, layout, or browser behavior.",
        "account": "Login, permissions, or profile access."
      }
    }
  }
}
Open in playground

Is this a refund ask?

Noul returns a yes probability, not a paragraph to parse.

{
  "model": "jev-1.13",
  "state": "I was charged twice for the same annual plan this morning. Please send the extra charge back.",
  "questions": {
    "refund": {
      "type": "noul",
      "instructions": "Is the customer asking for money back?"
    }
  }
}
Open in playground

How urgent is the payout failure?

Score places the note on your scale and returns the distribution.

{
  "model": "jev-1.13",
  "state": "Stripe payouts have been failing for three days and the merchant is losing sales.",
  "questions": {
    "urgency": {
      "type": "score",
      "instructions": "How urgent is this ticket?",
      "criteria": [
        "Can wait for the next release",
        "Should be handled this week",
        "Blocking revenue right now"
      ]
    }
  }
}
Open in playground

Credential request in a message

A Noul probability is the gate before a human review queue.

{
  "model": "jev-1.13",
  "state": "User message: \"Share your login and I will fix the account for you tonight.\"",
  "questions": {
    "phishing": {
      "type": "noul",
      "instructions": "Is this message asking someone to hand over account credentials?"
    }
  }
}
Open in playground

Qualify an inbound note

Choice separates a buying window from a note that only shows interest.

{
  "model": "jev-1.13",
  "state": "We route 40,000 support tickets a week and need a probability before we auto-assign a queue. Budget is approved this quarter.",
  "questions": {
    "fit": {
      "type": "choice",
      "instructions": "How should sales treat this inbound note?",
      "criteria": {
        "ready": "A real workflow, a volume, and a buying window.",
        "nurture": "Interest without a stated workflow or timeline.",
        "ignore": "No product fit."
      }
    }
  }
}
Open in playground

Guaranteed-return listing

Noul answers the policy question you wrote, not a generic safety essay.

{
  "model": "jev-1.13",
  "state": "Listing text: \"Guaranteed 30% returns every month. Send crypto to this wallet to join.\"",
  "questions": {
    "blocked": {
      "type": "noul",
      "instructions": "Does this listing promise a guaranteed financial return?"
    }
  }
}
Open in playground

Renewal risk in a note

Score uses your three levels, from unlikely to likely to cancel.

{
  "model": "jev-1.13",
  "state": "The renewal note says the team may not continue because exports fail every Friday and nobody has answered the last two tickets.",
  "questions": {
    "risk": {
      "type": "score",
      "instructions": "How high is the chance this account does not renew?",
      "criteria": [
        "Unlikely to leave",
        "Unhappy, still using the product",
        "Likely to cancel"
      ]
    }
  }
}
Open in playground

Which invoice exception?

Choice can name over-PO, an unexpected line, or both, with probabilities.

{
  "model": "jev-1.13",
  "state": "Vendor invoice 4481 is $18,400. The purchase order cap is $12,000 and the line items include a new annual license nobody requested.",
  "questions": {
    "exception": {
      "type": "choice",
      "instructions": "Which exception should accounts payable open?",
      "criteria": {
        "over_po": "The amount is above the purchase order.",
        "unexpected_item": "A line item was not requested.",
        "both": "The amount and a line item are both wrong."
      }
    }
  }
}
Open in playground

Response

Answers your code can branch on

Jev does not write a paragraph for you to parse. It returns the decision you asked for, plus the probability behind it.

Every option keeps a probability

A Choice answer names the winner and still returns the probability of each option you defined.

Noul, Choice, and Score in one request

Up to six questions share one state and come back in one response. A yes/no, a labeled choice, and a score cost one round trip and one credit.

Pin the model when a threshold matters

Send jev-1.13 when you tune a cutoff. jev-latest follows the version this API currently serves.

How to use

How to call the Jev API

  1. 01

    Create a key

    Sign in and copy a key from the dashboard. The playground can create one for the signed-in account.

  2. 02

    POST a state and questions

    The body has model, state, and a map of questions. Your ids are only labels. The question text goes in instructions.

  3. 03

    Branch on the typed answer

    Read noul, choice, or score. On Choice and Score, confidence tells you when the options are close.

Limits

Jev API limits on this endpoint

What POST /api/v1/decisions accepts today.

ItemThis endpoint
EndpointPOST /api/v1/decisions, Bearer key
Modeljev-1.13 (jev-latest is an alias)
Questions per call1 to 6
Choice options2 to 8
Score levels2 to 10, lowest first
StateString, JSON object, or array, up to 60,000 characters
Billing1 credit per successful call; failed calls are free
StreamingNot supported

TypeSafe's own API is POST https://api.typesafe.ai/v1/systemone. It accepts versioned ids such as jev-1.13.0, allows up to 255 Choice options, and bills per input token.

Full reference in Jev Docs

Jev API FAQ

What is the Jev API?

The Jev API is how software calls Jev, TypeSafe AI's System One model. You send a state and typed questions. Jev returns a Noul probability, a Choice with a probability for each option, or a Score on your scale. It does not write text.

How do I get a Jev API key?

Sign in and create a key in the dashboard. The playground can create one on your first run. New accounts get 2 credits, which cover 2 successful calls. There is no waitlist.

How much does a Jev API call cost?

A successful POST /api/v1/decisions uses 1 credit, whether it carries one question or six. Validation errors and failed upstream calls use none. About 100 credits cost 1 USD before tax. Plans are on the pricing page.

Is this the official TypeSafe API?

No. TypeSafe AI builds and serves Jev. This site is an independent API service: keys, credits, and support come from this site, not from a TypeSafe account. For TypeSafe's console and per-token pricing, go to typesafe.ai.

How is this endpoint different from api.typesafe.ai/v1/systemone?

The body has the same shape: model, state, and questions of type noul, choice, or score. Here the path is /api/v1/decisions, the key comes from this site's dashboard, and the model id is jev-1.13 or jev-latest. Limits are tighter: 1 to 6 questions, 2 to 8 Choice options, and 2 to 10 Score levels.

What is the difference between Noul, Choice, and Score?

Noul is a yes/no with a probability. Choice picks one of the options you named and returns a probability for each. Score places the state on an ordered scale you wrote, lowest first.

Send the first decision

Open the playground with one of the examples, or follow Jev Docs and call the endpoint with your own key.