API · Last updated

Your first Jev API call

Your first Jev API call is the official quick-start POST to https://api.typesafe.ai/v1/systemone with a bearer key, a model, a state string, and one Noul. Get the key from the TypeSafe dashboard after you have access — not from this site. The only first-party evaluation URL in the public API reference is that POST; GET /v1/models lists aliases.

This page is for builders wiring TypeSafe Jev (System One) into agents, routing, or evals. jev.pro is an independent unofficial field guide — not affiliated with TypeSafe AI. We do not sell or issue keys. Confirm the quick-start body on docs.typesafe.ai.

curl

curl -X POST https://api.typesafe.ai/v1/systemone \
  -H "Authorization: Bearer $TYPESAFE_API_KEY" \
  -H "Content-Type: application/json" \
  -d @- <<'EOF'
{
  "state": "Hi, I've been trying to connect my Stripe account for 3 days and the integration keeps failing. I'm losing sales. Please help ASAP.",
  "model": "jev-latest",
  "questions": {
    "urgency": {
      "type": "noul",
      "instructions": "Does this message express urgency?"
    }
  }
}
EOF

That is the official quick-start request, slightly compacted. The documented response includes a resolved model (for example jev-1.13.0), answers.urgency.noul, and usage. Noul is P(yes) in 0–1 and has no confidence field. "urgency" is your id; question ids are not sent to the model.

Then add two more questions

The same quick start shows mixing Choice, Score, and Noul in one body: department, frustration, urgency. You do not need three HTTP calls. Choice returns choice, probabilities, and confidence. Score returns score, legend, probabilities, and confidence. Pack them while the state is already in memory.

After curl works, freeze the JSON and move assertions into Jev API testing. There is no documented /v1/test route. Assert policy actions (hold vs route), not only the argmax label, and pin jev-1.13.0 once you care about floors. jev-latest and jev-preview currently resolve to jev-1.13.0 — confirm language on the models page.

Python equivalent

pip install typesafe-sdk

TypeSafeClient() reads TYPESAFE_API_KEY and defaults to jev-latest. See Python SDK. Node 20+ uses @typesafe-ai/sdk and systemOne — JavaScript SDK.

If it fails

Status Meaning
401 Key missing or wrong
422 Body failed validation (often a missing model, state, or questions)
429 / 529 Back off

Those four statuses are the documented HTTP failures. Official SDKs retry 429/529. Never commit a real key. This site will never give you one.

A 200 with a Noul near 0.5 is not an HTTP error. It is a judgment you may refuse to act on. Schema-safe ≠ factually correct.

Production notes for the second call

See also

FAQ

Can I skip the Playground?

Yes. Curl is enough. The Playground is faster for wording.

Should the first production call use jev-latest?

Fine for hello-world. Pin a versioned id before you tune floors.

Gateway first call?

Use the Gateway base URL and model id Vercel documents — Jev on Vercel AI Gateway or channels. Do not send a TypeSafe key to a Gateway host or the reverse. First-party walkthrough: Jev on TypeSafe.

Why is model in the response a patch id?

Aliases resolve. Log the id you actually got.

What this page does not claim

Disclaimer

This is an independent unofficial site and is not affiliated with TypeSafe AI; official documentation is available at https://docs.typesafe.ai. Never treat jev.pro as TypeSafe official documentation. We do not sell, issue, or proxy API keys.

Sources