docs

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

ItemJev (TypeSafe)Sieve
Base URLhttps://api.typesafe.aihttps://api.sieve.one
KeyTypeSafe keySieve key (sieve_app_live_...)
Model namesjev-latest, jev-preview, versioned jev-x.y.zAliases 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.
PricingTypeSafe list priceSieve-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/systemone and GET /v1/models.
  • Auth: Authorization: Bearer <key>. Missing or invalid keys get 401.
  • Question types: noul, choice and score.
  • Option limits: 1 to 255 for choice, 1 to 10 for score.
  • Context limits: 32k tokens per question row, 64k per request.
  • Answer shapes: probabilities, confidence, legend, usage and model (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 429 insufficient_quota when 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-id response 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: true adds sieve with model_version, answered_by, temperature, escalated, state_tokens and latency_ms, on System One and /v1/decisions. On GET /v1/models it adds each model's version, type, pricing unit, context limits, regions and vision support.
  • sieve-auto sets Sieve-Escalation: unavailable when it could not ask the larger model.
  • Responses include "stats": {} on each answer and "assets_used": null at 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
stateinput
questions (map by name)questions (ordered list, name optional)
noulpredicate
criteria (choice)choices (value, description)
criteria (score)levels (label, description)
answers keyed by nameanswers in question order

Things to check

  • Images. Images and box need a vision model. Until one ships they return 400. See Limits.
  • Model names. Replace jev-* names with sieve-* names from GET /v1/models. There is no official Jev-to-Sieve model mapping; start with sieve-latest and 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

  1. Create a Sieve key in the console (API keys).
  2. Change the base URL and key in your config. Keep the SDK.
  3. Call GET /v1/models and choose model names.
  4. Run your test suite and a sample of real questions.
  5. Compare the answers and the cost.
  6. Switch traffic.

Next steps

Last updated