System One
POST /v1/systemone and GET /v1/models, generated from the backend OpenAPI contract.
POST /v1/systemone answers one or more typed questions about a state. It follows TypeSafe's System One contract. For the three question types see Question types.
curl https://api.sieve.one/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sieve-latest",
"state": { "document": "I was charged twice. Please fix this ASAP." },
"questions": {
"billing": { "type": "noul", "instructions": "Is this about billing?" },
"tone": {
"type": "choice",
"instructions": "What is the tone?",
"criteria": { "angry": "Upset or hostile", "calm": "Neutral or polite" }
},
"urgency": {
"type": "score",
"instructions": "How urgent is this?",
"criteria": ["Can wait", "This week", "Today"]
}
}
}'GET /v1/models
Lists the models and aliases your key can use. Pass a returned name as model. A versioned ID is accepted even if it is not in the list.
{
"models": [
{ "name": "sieve-4b", "description": "...", "release_date": "..." }
]
}The list has the aliases (sieve-latest, sieve-preview, sieve-auto, sieve-4b, ...) and the versioned IDs (sieve-4b-v1, sieve-9b-v2, ...), plus your organisation's custom models.
Send Sieve-Extras: true to add a top-level sieve object with, per model: name, version, type, pricing_unit, context (per_question, per_request, long_context), regions and vision. OpenAI SDKs (or ?format=openai) get the OpenAI list shape, {"object": "list", "data": [{"id", "object", "created", "owned_by"}]}.
Compression and LiteLLM
The TypeSafe SDKs send zstd-compressed bodies. Python needs typesafe-sdk[zstd] on 3.13 and older. LiteLLM proxy cannot read zstd, so turn compression off behind it. See Limits.
Full schema
The reference below is generated from the backend-owned TypeSafe contract. It is presented with Sieve model aliases and sandbox/local Try-it servers; code samples, schemas, headers and responses come from the contract.