Decision API

Jev APIDecisions your code can act on.

Send context and typed questions. Get probabilities and structured answers for routing, scoring, and automation. Start in the playground, then integrate with a single API request.

1 credit per successful call · failed calls are free

POST/api/v1/decisionsJSON
{  "model": "jev-1.13",  "state": "I was charged twice for my subscription.",  "questions": {    "refund": {      "type": "noul",      "instructions": "Is the customer asking for money back?"    }  }}

Example request · authenticate with your Bearer API key.

Three answer types

Noul, Choice, and Score in one API.

Pay for successful calls

1 credit per decision request.

Fits your existing stack

HTTP requests and TypeSafe SDK support.

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.

Built for clear integration

Know what you are integrating.

Transparent usage

Each successful decision request costs 1 credit. Validation errors and failed requests do not use credits. Check plans before adding a balance.

Explore pricing

Documented access

Create an API key in your dashboard. Follow the request schemas, response examples, and limits in the docs to plan your integration.

Read the API docs

A direct line to support

Get help with API access, integration, or billing at [email protected]. Our contact page brings the support details together.

Contact support

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, and the first key works right away.

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?

jev-api.org now exposes both. POST /v1/systemone takes the TypeSafe body as-is — model, state, and questions — and works with the TypeSafe SDKs by changing the base URL. POST /api/v1/decisions is the simpler endpoint with tighter limits: 1 to 6 questions, 2 to 8 Choice options, and 2 to 10 Score levels. Keys come from this site's dashboard on both.

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.