Multimodal Jev
Jev went multimodal with jev-1.14.0: a decide call can now carry images alongside your text state, and a new Box question type returns where a described target sits in a picture. It's still a decision model — you get back typed, calibrated values, not a paragraph — only now the context it judges can include what's in an image. These are opt-in preview features: you pick the model and send one header, and nothing changes for your existing text calls.
Multimodal Jev doesn't turn Jev into an image generator or a vision-language chatbot. Jev is TypeSafe AI's System One model: you hand it state plus one or more typed questions, and it returns structured values — choice, score, noul, and now box — in a single non-autoregressive parallel pass. "Multimodal" here means the state it reasons over can include images, so the same calibrated decide call can judge a photo, a screenshot, or a scanned document, not just text.
What's new in Jev 1.14
jev-1.14.0 (also reachable as jev-preview) is the version that adds the vision path. It introduces the box question type and is required for it; images themselves are accepted by both jev-1.13 and jev-1.14. The long-context ceiling also lifts in this line. Everything here is marked preview by TypeSafe — the field and header names are theirs, and the exact shapes and limits may still move — so pin the version explicitly rather than relying on jev-latest if you depend on vision.
- Images — send pictures in a top-level assets map and reference them from your state or questions
- box — a new question type that locates a described target in an image as fractional coordinates
- Long context — raise both input budgets to ~262k tokens with one header, at the same per-token price
- Opt-in — every vision feature is gated behind an official TypeSafe-Danger-Zone-* header; text calls are unaffected
Send an image
Put each image in a top-level assets map keyed by a reference string, then mention that reference from state, a question's instructions, or its criteria. Over HTTP an asset is a base64 payload with a format; you opt in with the TypeSafe-Danger-Zone-Images header — without it the request is rejected. Through this site's gateway you send exactly the same request you'd send to TypeSafe directly; the danger-zone header is forwarded verbatim.
curl https://jevtypesafeai.com/api/v1/decide \
-H "Authorization: Bearer $JEV_KEY" \
-H "Content-Type: application/json" \
-H "TypeSafe-Danger-Zone-Images: true" \
-d '{
"model": "jev-1.14.0",
"state": { "photo": "shot" },
"assets": {
"shot": { "type": "image", "data_base64": "<base64 jpg>", "format": "jpg" }
},
"questions": {
"tidy": { "type": "noul", "instructions": "Is the kitchen in `photo` tidy and free of hazards?" }
}
}'The Box question — locate something in an image
A box question answers where, not whether. It returns a box with top / bottom / left / right as 0–1 fractions measured from the top-left corner, plus a confidence. It always returns a box — there is no "not found" answer — so pair it with a noul question that checks the target is actually present before you trust the coordinates. box requires jev-1.14.0 (or jev-preview) and the same images header.
// Locate a target in an image, and check it's really there first.
const res = await fetch("https://jevtypesafeai.com/api/v1/decide", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.JEV_KEY}`, // jv_live_...
"TypeSafe-Danger-Zone-Images": "true", // forwarded verbatim
},
body: JSON.stringify({
model: "jev-1.14.0", // box needs 1.14.0 / jev-preview
state: { photo: "shelf" },
assets: { shelf: { type: "image", data_base64: imgB64, format: "png" } },
questions: {
present: { type: "noul", instructions: "Is there a red mug in `photo`?" },
where: { type: "box", instructions: "the red mug in `photo`" },
},
}),
});
const { answers } = await res.json();
if (answers.present.noul > 0.8) crop(answers.where.box); // {top,bottom,left,right}, 0–1Opt-in headers, model, and limits
- Model: pin model: "jev-1.14.0" (or "jev-preview") for box; images also work on jev-1.13. We never override a model you set.
- Header: send TypeSafe-Danger-Zone-Images: true for any request with images or a box question, or it's rejected.
- Long context: add TypeSafe-Danger-Zone-Long-Context: true to raise the input budgets to ~262k tokens at the same per-token price.
- Size: the whole request body (images included) is capped near 32 MiB — an over-size request comes back 413, not a silent truncation.
What it costs
Images are billed as ordinary input tokens — the same per-token rate as text, with output free. A single image decision is still a fraction of a cent; a client-side character count won't estimate image tokens well, so the reservation is a floor that reconciles to real usage after the call. For current per-million rates (they fall as your prepaid pack gets larger) see the pricing page.
FAQ
Is Jev multimodal?
Yes, as of jev-1.14.0. A decide call can carry images in a top-level assets map, and the new box question type locates a described target in an image. It's a preview capability you opt into per request with the TypeSafe-Danger-Zone-Images header; plain text calls are unchanged.
What is Jev 1.14?
jev-1.14.0 (also addressable as jev-preview) is the Jev version that adds the vision path: the box question type, which it requires, plus the lifted long-context ceiling. Images are accepted by both jev-1.13 and jev-1.14. Pin the version explicitly if your code depends on these preview features rather than using jev-latest.
How do I send an image to Jev?
Put the image in a top-level assets map keyed by a reference name, reference that name from your state or a question, and send the header TypeSafe-Danger-Zone-Images: true. Over HTTP each asset is { type: "image", data_base64: "…", format: "png"|"jpg"|"jpeg" }. Without the header the request is rejected.
What does the box question return?
A box with top/bottom/left/right as 0–1 fractions from the top-left corner, plus a confidence. It always returns a box — there's no "not found" — so pair it with a noul question ("is the target present?") and only trust the coordinates when that confidence is high. box needs model jev-1.14.0 or jev-preview.
Does using images cost more?
Images are metered as ordinary input tokens at the same rate as text, with output free, so a single image decision is still a fraction of a cent. Because exact image tokenization happens on the model, the charge is reserved as a floor and reconciled to real usage; see the pricing page for current per-million rates.
See also: Jev for computer use · Jev context window & long context · Docs — Vision & advanced · API reference · Pricing
Put an image in front of a decision
Grab a jv_live_ key, pin jev-1.14.0, send the images header, and get a typed, calibrated answer about what's in a picture — one round trip.