Introduction

The Jev AI decision API. Send a piece of state and a set of questions, get back calibrated answers with probabilities in about a quarter of a second.

Jev is a decision model, not a chat model. You send it a state — a ticket, a review, a document, a JSON payload — and a set of questions, and it answers each one with a value and a probability distribution. There is no prompt to tune, no JSON to parse out of prose, and no temperature to worry about.

EndpointPOST /api/v1/systemoneOne call answers up to 20 questions
Typical latency~0.2 sMeasured p50 upstream
Question typesnoul · choice · scoreProbability, label, scale
Billed onInput tokensOutput tokens are always free

Your First Decision

Create an API Key

Keys live in Settings → API keys. A key is shown once, starts with sk-glm5-, and is stored as a hash — we cannot recover it for you. Creating a key does not run the model and is not charged.

Send a State and Some Questions

curl https://jev-ai.org/api/v1/systemone/ \
  -H "Authorization: Bearer $JEV_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jev-1.13",
    "state": "We were billed $49 twice on September 3. I opened ticket #4417 four days ago and have had no reply, and our books close on Friday.",
    "questions": {
      "needs_human": {
        "type": "noul",
        "instructions": "Does this ticket need a human reply rather than an automated one?"
      },
      "queue": {
        "type": "choice",
        "instructions": "Route this ticket to the team that should own the first reply.",
        "criteria": {
          "billing": "Invoices, refunds, duplicate charges, plan changes, tax.",
          "technical": "API errors, integrations, outages, SDKs.",
          "sales": "Pre-purchase questions about plans, limits or trials."
        }
      },
      "anger": {
        "type": "score",
        "instructions": "Rate the customer'"'"'s frustration.",
        "criteria": ["Calm", "Mildly annoyed", "Frustrated", "Angry"]
      }
    }
  }'

Read the Answers

{
  "id": "dec_24088aa50f8c6c46361f8a2a",
  "model": "jev-1.13",
  "model_version": "jev-1.13-20260917",
  "provider": "jev-ai.org",
  "answers": {
    "needs_human": { "type": "noul", "noul": 0.89 },
    "queue": {
      "type": "choice",
      "choice": "billing",
      "probabilities": { "billing": 1, "technical": 0, "sales": 0 },
      "confidence": 1
    },
    "anger": {
      "type": "score",
      "score": 1.89,
      "legend": { "0": "Calm", "1": "Mildly annoyed", "2": "Frustrated", "3": "Angry" },
      "probabilities": { "0": 0, "1": 0.11, "2": 0.89, "3": 0 },
      "confidence": 0.89
    }
  },
  "usage": {
    "input_tokens": 503,
    "output_tokens": 70,
    "charged_tokens": 503,
    "charged_credits": 0,
    "wallet": "tokens"
  },
  "latency_ms": 1056
}

Three Things That Trip People Up

These are the ones worth reading before you write any code. Each has its own section, but here they are in one place.

`criteria` is a different container for each type

A choice question takes criteria as an object (label → description). A score question takes criteria as an array (tier labels, low to high). Swapping them is a 400. We validate this before the request leaves our server and tell you which shape was expected — see Question types.

A `score` answer is a decimal, not an integer

On a four-tier scale you can get back 1.89. The number is the expected value of the probability distribution, which is what makes it useful for ranking and thresholds. Do not type it as an integer, and do not round it before you threshold on it.

Use the trailing slash

This site canonicalises every URL with a trailing slash, so POST /api/v1/systemone is answered with a 308 to /api/v1/systemone/. Most HTTP clients follow that and preserve the method; curl only does so with -L. Sending the trailing-slash form avoids the question entirely.

Where to Go Next

  • Authentication — keys, headers, and what a 401 means.
  • Models — jev-1.13 versus jev-latest, and their limits.
  • Decisions — the full request and response contract.
  • Question types — noul, choice and score in detail.
  • Billing — the token wallet, the credit fallback, and what is never charged.
  • Errors — every status this endpoint returns and what to do about it.