Jev through LiteLLM
LiteLLM lets your apps talk to one proxy instead of many provider APIs. Jev is a typed decision call (state plus questions, not a chat completion), so you route it as a pass-through. To bill through your hosted account, point a LiteLLM route at the jevtypesafeai.com gateway with your jv_live_ key.
Every example needs a jv_live_ key. Grab one on the pricing page, export it as JEV_API_KEY, and you're ready. Get a key →
A Jev call isn't an OpenAI-style chat completion — it's a POST of { state, questions } that returns a typed answers map. LiteLLM handles that cleanly as a pass-through endpoint: the proxy forwards your request body straight to Jev and streams the typed response back, so your app keeps a single base URL for everything.
Route through your hosted Jev account (bills you)
Add a pass-through route to your LiteLLM proxy config that targets the hosted gateway, with your jv_live_ key supplied by the proxy:
# litellm config.yaml — expose /jev and forward it to the hosted gateway
general_settings:
pass_through_endpoints:
- path: "/jev"
target: "https://jevtypesafeai.com/api/v1/decide"
headers:
Authorization: "Bearer os.environ/JEV_API_KEY" # jv_live_...
content-type: "application/json"Now your apps POST the normal Jev body to the proxy and read the typed answer — one base URL, billed through your hosted account:
const res = await fetch(`${LITELLM_PROXY_BASE_URL}/jev`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
state: { ticket: text },
questions: {
queue: { type: "choice", instructions: "Which queue should this go to?",
criteria: { billing: "payments", technical: "bugs", abuse: "spam/fraud", sales: "pricing" } },
},
}),
});
const { answers } = await res.json();
route(answers.queue.choice); // same typed shape, now through your proxyThe built-in TypeSafe provider
LiteLLM also ships a TypeSafe (Jev) pass-through provider: you replace https://api.typesafe.ai with LITELLM_PROXY_BASE_URL/typesafe and set TYPESAFE_API_KEY in the proxy. Note this one targets the official api.typesafe.ai (with an official TypeSafe key), not your hosted jevtypesafeai.com account — so use the custom /jev route above when you want decisions billed through your hosted jv_live_ key.
Why front Jev with LiteLLM
- One base URL for your apps — Jev sits next to your chat models behind the same proxy.
- Central keys, budgets, rate limits and logging across every provider, Jev included.
- Swap or add decision backends without touching app code — just change the route target.
- The typed response is unchanged: you still read answers.<question>.choice / .noul / .score.
FAQ
How do I use Jev with LiteLLM?
Add a pass-through route in your LiteLLM proxy config that targets https://jevtypesafeai.com/api/v1/decide with your jv_live_ key, then POST the normal Jev body ({ state, questions }) to that proxy path. The typed answers map comes back unchanged, and the decision bills through your hosted account.
Does LiteLLM have a built-in Jev/TypeSafe provider?
Yes — a TypeSafe (Jev) pass-through where you replace https://api.typesafe.ai with LITELLM_PROXY_BASE_URL/typesafe and set TYPESAFE_API_KEY. It targets the official api.typesafe.ai endpoint, though, so use a custom route to the hosted gateway if you want to bill through your jevtypesafeai.com jv_live_ key.
Which endpoint bills through my hosted account?
The hosted gateway at https://jevtypesafeai.com/api/v1/decide with a jv_live_ key. Point your LiteLLM pass-through route's target there so usage runs through your hosted account rather than the official api.typesafe.ai endpoint.
Do I send a chat-completion body through LiteLLM for Jev?
No. Jev takes { state, questions } and returns a typed answers map — not chat messages. Route it as a pass-through so LiteLLM forwards the Jev body as-is; don't try to map it onto the chat-completions schema.
Why put Jev behind LiteLLM at all?
To keep one base URL, one set of keys, budgets and logs across all your models. LiteLLM becomes the single control point, and Jev's decisions sit alongside your generation calls — while the typed response your code reads stays exactly the same.
See also: How to use the Jev API · Jev and OpenRouter · Jev MCP server · Pricing
Try Jev before you wire it in
Run a real, typed decision in the browser — free, no signup — then drop your key into the example above.