Skip to main content
Jev is TypeSafe’s System One model: a decision model rather than a text generator. A request carries a state (the text or record to evaluate) and a map of typed questions, and the answer is a calibrated probability per question. Kev is a family of small open-weight models that implement the same API, so one jev provider type covers both. There are three question types: The API is not OpenAI-compatible, and its answers have no chat equivalent, so GoModel forwards it natively instead of translating it: POST /v1/systemone is available as soon as a jev or openrouter provider is configured, and passthrough at /p/jev/... reaches every other upstream route. Chat, /responses, and /v1/embeddings return invalid_request_error for jev models, pointing at /v1/systemone.

Configure

For the hosted API, the key is the whole setup:
For a self-hosted Kev server, set the base URL instead. Kev has no authentication of its own, so leave the key unset:
The default base URL is https://api.typesafe.ai, the origin TypeSafe’s SDKs use; a trailing /v1 is accepted and trimmed, so both spellings address the same server. To run the hosted API and a local Kev side by side, register the second under a suffixed name: JEV_KEV_BASE_URL=... creates provider jev-kev, reached at /p/jev-kev/.... In config.yaml, any name works, such as kev: {type: jev, base_url: ...}, and that name is what logs, usage, and model prefixes show.

Verify

Use kev-latest as the model on a Kev server; it also answers to jev-latest. The same request works at /p/jev/v1/systemone, but that passthrough route skips virtual models and guardrails; see the native endpoint.

Using the TypeSafe SDKs

The SDKs send POST {base_url}/v1/systemone, so point them at the gateway itself and authenticate with your GoModel key:
The same works with TYPESAFE_BASE_URL=http://localhost:8080 and TYPESAFE_API_KEY=change-me in the environment. With several System One providers, name the model with its provider (kev/kev-latest) or a virtual model. The SDKs’ model listing expects TypeSafe’s shape, while the gateway’s /v1/models is OpenAI-shaped; list upstream models at /p/jev/v1/models.

System One API

POST /v1/systemone is a gateway endpoint, not a raw proxy: it applies virtual models, guardrails on state, the response cache, failover, audit, and usage, and it forwards the request natively without translating it. Kev’s /v1/systemone/permute and /v1/systemone/separate work the same way. See System One API for the full behavior, including OpenRouter, which serves Jev natively too. Every other upstream route is reachable through passthrough, without virtual models, guardrails, or caching: Upstream errors keep their status code, with the provider’s body carried in the gateway error message: a malformed question comes back as TypeSafe’s 422 naming the offending field, and 429 or 529 mean back off and retry.

Models, access control, and cost

GET /v1/models lists what the upstream reports, as jev/jev-latest and so on. TypeSafe lists its aliases (jev-latest, jev-preview); a Kev server lists its checkpoint (kev-latest) and the aliases it answers to. Versioned IDs such as jev-1.13.0 are accepted by the model field whether or not they are listed. The models are categorized as utility models with no generation mode, since there is no OpenAI endpoint to route them to. Every System One request names its model, so both /v1/systemone and the passthrough surface apply the caller’s model allowlist to it like any other request. A pinned version such as jev-1.13.0 works without being declared; see Models for how unlisted names are routed. The response’s usage.input_tokens and usage.output_tokens are recorded, so System One calls appear in the usage API and dashboard under the model that answered (jev-1.13.0, or the Kev checkpoint). Jev is priced per input token and is not in the upstream model catalog; declare its pricing on the provider to have those rows costed, or set it in the pricing override editor:
A local Kev server costs nothing per token, so it needs no pricing.
Last modified on September 30, 2026