Migrate from Jev
How to move from TypeSafe (Jev) to Sieve. Most code changes are the base URL and the key.
Sieve serves the same System One API as TypeSafe (Jev). Unmodified TypeSafe SDKs work after you change the base URL and the key.
What changes
| Item | Jev (TypeSafe) | Sieve |
|---|---|---|
| Base URL | https://api.typesafe.ai | https://api.sieve.one |
| Key | TypeSafe key | Sieve key (sieve_app_live_...) |
| Model names | jev-latest, jev-preview, versioned jev-x.y.z | Aliases sieve-latest, sieve-preview, sieve-auto, sieve-0.8b, sieve-2b, sieve-4b, sieve-9b, sieve-27b, sieve-31b, and versioned IDs such as sieve-9b-v2. Check GET /v1/models. |
| Pricing | TypeSafe list price | Sieve-9B modelled at $0.042 per 1M input tokens, the same as Jev. Output is free on both. Modelled prices will change after benchmarking. See Pricing. |
export TYPESAFE_BASE_URL="https://api.sieve.one"
export TYPESAFE_API_KEY="sieve_app_live_..."
export TYPESAFE_DEFAULT_MODEL="sieve-latest"The jev-latest alias is pending a decision
Both SDKs fall back to the model name jev-latest when you do not set one. Whether Sieve will accept jev-latest as an unlisted alias is a product and trademark decision that is still open, and the hosted API does not accept it today. Set the model explicitly as shown above. Do not rely on jev-latest working.
What stays the same
- Endpoints:
POST /v1/systemoneandGET /v1/models. - Auth:
Authorization: Bearer <key>. Missing or invalid keys get 401. - Question types:
noul,choiceandscore. - Option limits: 1 to 255 for
choice, 1 to 10 forscore. - Context limits: 32k tokens per question row, 64k per request.
- Answer shapes: probabilities,
confidence,legend,usageandmodel(the versioned ID that answered, never the alias). - Errors and status codes, including 422 bodies in the same shape and 529 with
retry-after. Sieve adds a few of its own, such as 429insufficient_quotawhen the prepaid balance runs out. See Errors. - Request rules: 32 MiB body, UTF-8 without BOM, nesting 64, finite numbers, gzip and zstd request bodies.
- The
x-typesafe-request-idresponse header. - SDK defaults: zstd compression for bodies of 1 KiB or more, a 10 second timeout and two retries.
Compression
The SDKs compress request bodies with zstd and the gateway reads it. In Python install the extra on 3.13 and older (pip install "typesafe-sdk[zstd]"). LiteLLM proxy cannot read zstd, so behind LiteLLM set compression=False (Python) or compression: false (JavaScript). See Limits.
What is extra
Sieve-only fields never change a standard field. They go under a top-level sieve object and in Sieve-* headers, so strict TypeSafe clients ignore them.
- The header
Sieve-Extras: trueaddssievewithmodel_version,answered_by,temperature,escalated,state_tokensandlatency_ms, on System One and/v1/decisions. OnGET /v1/modelsit adds each model's version, type, pricing unit, context limits, regions and vision support. sieve-autosetsSieve-Escalation: unavailablewhen it could not ask the larger model.- Responses include
"stats": {}on each answer and"assets_used": nullat the top, as recorded Jev responses do. Both SDKs ignore them.
Field mapping
If you use the OpenAI-style route instead of System One, the mapping is mechanical:
| System One | /v1/decisions |
|---|---|
state | input |
questions (map by name) | questions (ordered list, name optional) |
noul | predicate |
criteria (choice) | choices (value, description) |
criteria (score) | levels (label, description) |
| answers keyed by name | answers in question order |
Things to check
- Images. Images and
boxneed a vision model. Until one ships they return 400. See Limits. - Model names. Replace
jev-*names withsieve-*names fromGET /v1/models. There is no official Jev-to-Sieve model mapping; start withsieve-latestand compare on your own data. - Results. Results will differ. Run your own evaluation before you switch production traffic. Use the model cards for numbers and their sources.
- Latency. Benchmark latencies were measured on different hardware. Do not compare them across providers without the same setup.
- Rate limits. Limits are per organisation and the numbers differ. See Limits.
Steps
- Create a Sieve key in the console (API keys).
- Change the base URL and key in your config. Keep the SDK.
- Call
GET /v1/modelsand choose model names. - Run your test suite and a sample of real questions.
- Compare the answers and the cost.
- Switch traffic.
Next steps
Quickstart
Make your first decision with the TypeSafe SDK pointed at Sieve.
SDKs
Use the TypeSafe Python and JavaScript SDKs with Sieve.
Errors
Every status code the decision API returns, with the exact response bodies, headers and retry guidance.
Model cards
One card per Sieve model, with the base model, limits, calibration, benchmarks and licence.
Last updated