{"endpoint":"POST /api/v1/systemone","mirrors":"POST https://api.typesafe.ai/v1/systemone","purpose":"Try a real Jev call without an early-access key. The request and response are the official shapes; move to the official endpoint by changing the host and the bearer token.","auth":"Authorization: Bearer jv_live_… — get one free at https://jev-agent.com/api-access","body":{"model":"optional (default jev-latest): Jev's ids jev-latest | jev-preview | jev-1.14.0 | jev-1.13.0, or any decision model in GET /api/v1/models","state":"the text to ask about","questions":{"<name>":{"type":"choice | score | noul","instructions":"the question","criteria":"choice: {option: description} · score: [\"Low\",\"High\"] · noul: {\"true\":\"…\",\"false\":\"…\"}"}}},"differences_from_official":["the response carries an extra `quota` object. Delete that one key and what is left is exactly what api.typesafe.ai sends.","billing is 1 credit per 1,000 input tokens, rounded up, minimum 1. Failed requests are not charged.","the model field is an allowlist rather than a passthrough, because the id goes into a request we pay for: Jev's three ids, plus every decision model in GET /api/v1/models (answered through OpenRouter's Decisions API, billed at Jev's rate scaled by the model's price).","no streaming, no batching — same as the official endpoint.","no size or count limits of our own: state length, instruction length and question count are whatever the official API accepts. A long state costs more because it is more tokens, which is the only control that is not arbitrary."],"gotchas":["score returns the probability-weighted mean of the rubric indices (0..n-1), not a 0-1 float. Use `legend` to name the band.","probabilities on a score are keyed by index as strings — \"0\", \"1\" — never by label.","a noul answer carries no confidence field at all. Distance from 0.5 is what you have."]}