Documentation
Everything you need to go from the playground to production.
Quickstart
Create an account, create an API key in the dashboard, and send your first request. Keys are shown once — store them in a server-side secret, never in browser code.
curl https://jevai.website/api/v1/systemone \
-H "Authorization: Bearer $JEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"state": "The deployment failed three times and production is returning 500s.",
"questions": {
"needs_human": {
"type": "noul",
"instructions": "Should this be escalated to a person?"
}
}
}'Request
Send a JSON body with a `state` and a map of named `questions`. The optional `model` field is accepted for compatibility and ignored. `state` can be a string, an array of strings or a JSON object, up to 100,000 characters.
Response
Answers are keyed by your question names. Every response carries a `request_id` you can quote to support.
Question types
Each question has a `type`, `instructions`, and for choice and score a set of `criteria`. Yes/no. Returns `noul`: the probability that the answer is yes. `criteria` with `true` and `false` descriptions is optional. Pick one of 2–20 labelled options. Returns `choice`, `probabilities` per option and `confidence`. Place the state on an ordered scale of 2–10 levels. Returns a continuous `score` (0 = first level), `probabilities`, `legend` and `confidence`.
Errors
Errors always use the same shape. Branch on `error.code`, not on the message text. Retry `429`, `502` and `529` with exponential backoff. Do not retry `401`, `402` or `422` without changing the request.
| HTTP | Code | Meaning |
|---|---|---|
| 401 | missing_api_key / invalid_api_key | API key missing, invalid or revoked |
| 402 | insufficient_credits | Not enough credits in the workspace |
| 422 | invalid_request | Malformed JSON or invalid questions |
| 429 | rate_limited | Rate or concurrency limit reached |
| 502 | upstream_error | The model provider failed or timed out |
| 529 | upstream_overloaded | The model provider is overloaded |
Credits and limits
One credit is 1,000 input tokens. The final charge is the real token count, rounded up, with a minimum of 1. Credits are reserved before the call and returned if it fails. Concurrency and requests per minute depend on your workspace plan. Exceeding them returns `429` with a `Retry-After` header.
Data handling
We forward your request to the model to produce an answer, and we do not keep the content. We store request metadata (time, status, credits, token counts) for your usage history.