Jev on Cloudflare Workers AI (typesafe/jev)
Last checked · Independent guide, not affiliated with TypeSafe AI
Cloudflare lists Jev in its Workers AI catalog as typesafe/jev, a third-party model with a 32,000-token context window. You call it with env.AI.run('typesafe/jev', { state, questions }) inside a Worker, or through the Workers AI REST API with the same body wrapped in an input field. Pricing is only shown in the Cloudflare dashboard.
Cloudflare added Jev to its AI model catalog on September 19, 2026, four days after TypeSafe’s launch. When we checked, Google dated the catalog page to only a few hours earlier. This page summarizes Cloudflare’s documentation; we have not called Jev through Cloudflare yet, and we mark the parts we could not verify.
At a glance
Section titled “At a glance”| Item | Value |
|---|---|
| Model ID | typesafe/jev |
| Label in the catalog | Third-party model from TypeSafe |
| Context window | 32,000 tokens |
| Price | “View pricing in the Cloudflare dashboard”; not published on the docs page |
| Question types | noul, choice, score, same names and shapes as TypeSafe’s API |
| Returned model | Cloudflare’s example response reports jev-1.13.0 |
The catalog entry sits under Cloudflare’s text generation heading, which is misleading: Jev does not generate text. It returns the same typed answers as TypeSafe’s own API.
Calling Jev from a Worker
Section titled “Calling Jev from a Worker”With a Workers AI binding named AI, the call takes the state and questions directly:
export default { async fetch(request, env) { const result = await env.AI.run('typesafe/jev', { state: 'My invoice lists two seats, but only one of us can sign in.', questions: { wantsRefund: { type: 'noul', instructions: 'Is the customer asking for money back?', }, queue: { type: 'choice', instructions: 'Which team should handle this message?', criteria: { billing: 'Charges, invoices, refunds, seats on the bill', technical: 'Bugs, outages, login problems', }, }, }, }); return Response.json(result); },};Calling it over REST
Section titled “Calling it over REST”Outside a Worker, the Workers AI REST endpoint takes the model in the body and wraps the state and questions in an input object:
curl https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/ai/run \ -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "model": "typesafe/jev", "input": { "state": "My invoice lists two seats, but only one of us can sign in.", "questions": { "wants_refund": { "type": "noul", "instructions": "Is the customer asking for money back?" } } } }'The API token needs Workers AI permission on the account.
What Cloudflare’s example response shows
Section titled “What Cloudflare’s example response shows”Cloudflare’s documentation includes a sample response with answers in exactly TypeSafe’s shape (a noul value for yes/no, choice with probabilities and confidence, score with legend), a model field of jev-1.13.0 and a usage block with input and output tokens. That suggests Cloudflare passes requests through to TypeSafe’s current model rather than serving a different build, but Cloudflare does not state this.
What we could not verify
Section titled “What we could not verify”- Price. Workers AI usually bills in its own units; Jev’s rate is only shown after you log in. Compare it with $0.042 per million input tokens on TypeSafe and OpenRouter before you commit.
- Rate limits and free allocation. The model page does not list Jev-specific limits.
- Error messages. We have not seen Cloudflare’s errors for Jev, so the errors index does not include Cloudflare-specific entries yet.
When to choose Cloudflare
Section titled “When to choose Cloudflare”If your application already runs on Cloudflare Workers, the binding saves you from managing a separate TypeSafe key and keeps the call on Cloudflare’s network. If you need the largest context budget, model version pinning or the official SDKs, TypeSafe’s own API is the better fit. See Jev channels compared.