Skip to content
kenari.

System One

kenari provides a System One endpoint for decision models. This endpoint only serves models marked as System One models in the catalog. Calling it with an ordinary chat model returns status 400. System One is not the OpenAI chat wire, so this is kenari’s own contract.

The list of System One models is dynamic. Do not hardcode an id from this page: call GET /v1/models?modality=systemone (public, no key) to read the ids that are currently active. A bare GET /v1/models lists chat models only, so System One models do not appear there.

As of 24 September 2026 the public catalog shows jev-1-13-free as a free System One model. The examples below use that id. If it is no longer available, swap in one returned by ?modality=systemone.

POST /v1/systemone

Send state and questions. The gateway returns one typed answer per question, plus token usage.

FieldTypeRequiredDescription
modelstringyesSystem One model id from the catalog.
statestring, object, or arrayyesThe text or data to evaluate.
questionsobjectyesOne or more questions. Each key is a question id. Maximum 128 questions.

Each question is an object with these fields:

FieldTypeRequiredDescription
typestringyesnoul, choice, or score.
instructionsstring, object, or arrayyesThe question itself.
criteriaobject or arraynoNoul true/false descriptions, a choice map, or an ordered score rubric.

The request body is capped at 512 KiB.

Billing is per input token. The gateway holds a local estimate (roughly four characters per token across state and questions, or across the raw body, whichever is larger), then charges the upstream usage.input_tokens when that count is positive and no larger than the hold. Output tokens are reported and not billed. Free models, including jev-1-13-free, deduct Rp 0 from the balance. See Billing for balance and deduction details.

The response contains only model, answers, and usage. model is the versioned id that answered, when that id is a valid Jev id. answers holds one entry per question. Extra upstream fields are dropped.

{
"model": "jev-1.13.0",
"answers": {
"q": { "type": "noul", "noul": 0.91 }
},
"usage": { "input_tokens": 12, "output_tokens": 20 }
}
Terminal window
curl https://kenari.id/v1/systemone \
-H "Authorization: Bearer kn-..." \
-H "Content-Type: application/json" \
-d '{
"model": "jev-1-13-free",
"state": "a cat sitting on a rug",
"questions": {
"q": {
"type": "noul",
"instructions": "Is this a sentence about an animal?"
}
}
}'
import requests
resp = requests.post(
"https://kenari.id/v1/systemone",
headers={"Authorization": "Bearer kn-..."},
json={
"model": "jev-1-13-free",
"state": "a cat sitting on a rug",
"questions": {
"q": {
"type": "noul",
"instructions": "Is this a sentence about an animal?",
}
},
},
)
print(resp.json()["answers"])
const resp = await fetch("https://kenari.id/v1/systemone", {
method: "POST",
headers: {
Authorization: "Bearer kn-...",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "jev-1-13-free",
state: "a cat sitting on a rug",
questions: {
q: {
type: "noul",
instructions: "Is this a sentence about an animal?",
},
},
}),
});
const { answers } = await resp.json();