/ 01

Quick Start

  1. Get a key at console.typesafe.ai/keys.
  2. POST to the endpoint with Authorization: Bearer <API_KEY>.
  3. Read answers using your question id.
curl -X POST https://api.typesafe.ai/v1/systemone   -H "Authorization: Bearer $TYPESAFE_API_KEY"   -H "Content-Type: application/json"   -d '{"state":"Help! My payout failed.","model":"jev-latest","questions":{"is_urgent":{"type":"noul","instructions":"Does this convey urgency?"}}}'

Request shape checked against the official quick start.

/ 02

The Endpoint

POST https://api.typesafe.ai/v1/systemone with a Bearer key and Content-Type: application/json. This is TypeSafe’s direct endpoint; this guide documents it for your own integration.

VerdictKit’s live playground instead calls POST https://openrouter.ai/api/alpha/decisions with typesafe/jev-1.13 through a server-side relay and our OpenRouter key. For your own OpenRouter integration, use your own key. Neither path gives you a VerdictKit API key.

/ 03

Request Body

FieldTypeRequiredMeaning
statestring | object | arrayYesText or structured state to evaluate.
modelstringYesUse jev-latest for the stable alias.
questionsmap<string, Question>YesYour named ids and typed questions.

/ 04

The Three Question Types

TypeYou provideJev returnsUse for
NoulYes/no question, optional true/false criteriaOne probability, 0–1Checks and guardrails
ChoiceNamed options and descriptions, up to 255Selected option, distribution, confidenceClassification and routing
Score2–10 ordered level descriptionsWeighted score, legend, distribution, confidenceRatings and severity
{
  "state": "Help! My payout has failed for three days. Please fix it ASAP.",
  "model": "jev-latest",
  "questions": {
    "department": { "type": "choice", "instructions": "Which team should handle this?", "criteria": { "billing": "Payments", "technical": "Bugs", "sales": "Pricing" } },
    "frustration": { "type": "score", "instructions": "How frustrated is the customer?", "criteria": ["Calm", "Frustrated", "Very angry"] },
    "is_urgent": { "type": "noul", "instructions": "Does this convey urgency?" }
  }
}

/ 05

Response Body

FieldMeaning
modelActual version that evaluated the request; may differ from the alias.
answersMap keyed by your question ids.
usageInput and output token counts.
noul:  { "type": "noul", "noul": 0.95 }
choice: { "type": "choice", "choice": "billing", "probabilities": {...}, "confidence": 0.81 }
score:  { "type": "score", "score": 1.05, "legend": {...}, "probabilities": {...}, "confidence": 0.92 }

See Jev JSON output for all fields and parsing pitfalls.

/ 06

Get Your Jev API Key

  1. Sign in to the TypeSafe console.
  2. Open the keys page and generate a key.
  3. Store it in a server-side TYPESAFE_API_KEY environment variable.
Never hardcode a secret API key into browser JavaScript or a public repository.

/ 07

Official SDKs

Python 3.10+: pip install typesafe-sdk. The client reads TYPESAFE_API_KEY and defaults to jev-latest.

from typesafe_sdk import Choice, Noul, Score, TypeSafeClient

client = TypeSafeClient()
response = client.system_one(
    state="Help! My payout failed again. Please fix it ASAP.",
    questions={
        "department": Choice(instructions="Which team should handle this?", criteria={"billing": "Payments", "technical": "Bugs"}),
        "frustration": Score(instructions="How frustrated is the customer?", criteria=["Calm", "Frustrated", "Very angry"]),
        "is_urgent": Noul(instructions="Does this convey urgency?"),
    },
)
print(response.answers["department"].choice)

The official SDK retries 429 and 529 by default. See Python SDK documentation.

/ 08

Errors and Retries

StatusMeaning / action
401Missing or invalid API key. Check Authorization.
422Invalid request body. Inspect the offending field and fix it before retrying.
429Rate limit exceeded. Retry with exponential backoff.
529TypeSafe temporarily overloaded. Retry with exponential backoff.

/ 09

What It Costs

At review time, TypeSafe lists $0.042 per million input tokens for Jev 1.13 and free output tokens. This is a current reference, not a guaranteed future price. Check the official models page before budgeting. For what our planned workflow plans cost, see Pricing. We do not control TypeSafe’s rate or resell API credits.

/ 10

Is There a Free Jev API?

Short answer: no. TypeSafe does not publish a free tier for the Jev API. Calling it requires an API key and is billed per input token, with output free at the currently published rate. A small call can cost a fraction of a cent, but the API is still metered. The paths below separate free playground exploration from paid API access.

1. Use a playground — two guest runs or ten account runs per day, no API key

Paste your state, ask a typed question, and inspect the structured answer. Today our Jev playground provides clearly labeled example previews without an account, key or card. When live access is configured, guests can make two live runs per day without signup. Sign in with Google for the 10-live-runs-per-day Free account. Both include Choice, Score and Noul and full JSON output, resetting at 00:00 UTC. A playground is a browser workflow, not an API key.

TypeSafe’s console playground is another option for hands-on evaluation, but requires sign-in.

2. Start on a gateway for metered access without a TypeSafe account

OpenRouter lists Jev as typesafe/jev-1.13. You can top up an OpenRouter account and pay per call without a separate TypeSafe account. Check its current model price and any gateway fees against TypeSafe’s published rate; a markup is not guaranteed.

3. Go direct — the official API

Get a key at console.typesafe.ai/keys and call POST https://api.typesafe.ai/v1/systemone. Your application pays TypeSafe directly for input tokens; output tokens are free at the published rate.

What we don’t do

VerdictKit is not an API reseller. We do not provide customer API keys, sell an API gateway or mark up tokens. This page documents TypeSafe’s official API so your own integration can call TypeSafe and pay TypeSafe directly. Playground live requests, when configured, pass through our server using our key; this internal relay does not give customers API access.

Our planned paid plans cover playground workflow features: Run Pack includes 500 runs that never expire, Pro adds unlimited runs, saved judges, history and CSV export, and Batch adds file processing for teams. None includes a TypeSafe API key or API credits. See Pricing for launch status and plan details.

If you find an offer called a “free Jev API,” check whether it is a trial credit or a gateway product. TypeSafe does not publish a free API tier in the documentation reviewed here.

/ 11

Try Jev Without an API Key

Open the Jev playground, paste your state and add a typed Choice, Score or Noul question. Example previews and sample JSON need no account, key or card. When live access is configured, a human-verification challenge protects each live request.

The guest trial allows two live runs per day without signup. A free Google account allows 10 live runs per day. Both include all three question types and full JSON output, with allowances resetting daily at 00:00 UTC. Need more once plans launch? Run Pack offers 500 runs that never expire; Pro removes the daily cap and adds saved judges, run history and CSV export; Batch handles files for teams. See Pricing. These plans do not include an API key.

/ FAQ

Frequently asked questions

What is the Jev API endpoint?

POST https://api.typesafe.ai/v1/systemone.

How do I get a Jev API key?

Sign in to the TypeSafe console and create a key on the keys page.

Is there a free Jev API?

No. TypeSafe does not publish a free API tier: Jev requires an API key and is billed per input token, with output tokens free. VerdictKit offers demo previews. A configured playground allows two guest live runs per day without signup or ten per day with a Google account; neither provides an API key.

Why does the response model say jev-1.13.0 when I sent jev-latest?

jev-latest is an alias; the response identifies the actual version.

Can I ask several questions in one API call?

Yes. The questions map can hold several typed questions.

What does the 422 error mean?

The request failed validation. Inspect the response and fix the invalid field.

Do you resell the Jev API?

No. We do not sell API access, distribute API keys or mark up tokens. This page documents TypeSafe’s official API so your integration can call TypeSafe and pay it directly. Playground live requests use an internal server relay, not a customer-facing API product.