/preview/evaluation) is replaced by the stable v1 endpoint (/v1/systemone). This is a breaking change: the endpoint, the request shape, and the response shape all changed. This page lists each delta with a before/after example so you can update your integration.
Auth is unchanged — keep sending Authorization: Bearer <API_KEY> and Content-Type: application/json.
At a glance
1. Endpoint rename
evaluation became systemone.
2. prompts array becomes a questions map
In preview, you sent a prompts array where each item carried its own key, and answers came back in the same order. In v1, you send a questions map: the map key is an id of your choice, and answers come back mapped to the same id.
3. Unified criteria per question type
Every question type now describes itself with a field named criteria. The shape of criteria differs by type:
- Noul —
criteria?: { true?, false? }. An optional object describing the two outcomes. New feature in v1! - Choice —
criteria: { <option>: description }. A map of option labels to their descriptions; usenullwhen an option needs no explanation. Was anoptionsarray of{ option, description? }. - Score —
criteria: [description, ...]. A bare array of level descriptions; the level is the 0-indexed array position. Was alevelsarray of explicit{ level, description }objects. You can no longer skip levels; it was an anti-pattern now addressed by design.
Choice criteria
Score criteria
4. responses array becomes an answers map
Preview returned a responses array in the same order as your prompts, with each item containing a key property. v1 returns an answers map keyed by the question id you chose.
5. Renamed answer value fields
The core value field on each answer type was renamed:6. Choice probabilities becomes a map
A Choice answer’s probabilities changed from an array of { option, probability } objects to a map of option → probability. (Score answers now also include a probabilities map over their levels, which preview did not return at all.)
7. Confidence is a new computation
The computation behindconfidence changed to make the value reliable, so the value will differ from preview even for an identical evaluation. Any logic your integration uses based on confidence should be carefully re-evaluated.
v1 also returns the full probability distribution for both Choice and Score. Since confidence is a statistic over that distribution, you can compute your own measure from the response. If you would like to re-create the same value that preview called “confidence” use a normalized-entropy computation. Here it is in Python:
8. Usage reports token counts
Preview reported a placeholderusage.billing_units. v1 reports token counts instead: usage.input_tokens and usage.output_tokens.
9. document becomes state
The field that carries the content to evaluate is named state. Preview, and the first v1 releases, called it document. v1 now accepts only state; a request with document fails validation.
Full before/after example
Request
Response
Python SDK
The v1 API is served by a new package,typesafe-sdk, installed from PyPI with pip install typesafe-sdk. The previous typesafe-client package (every release, 0.1.x and 1.0.x) sends document and no longer works against the API. All of the API changes above apply, plus these renames in the client:
See the Python SDK reference for installation, async usage, retries, and error handling.

