Jev Box: find where something is in an image
Box is the experimental image question in Jev 1.14. We drew scenes with known edges, ran 15 calls, and wrote down how close it got, what an image costs in tokens, and where it goes wrong.
Independent and unofficial. Jev is a model by TypeSafe AI; Jagent is not affiliated with or endorsed by them. Measured 2026-11-12; reference at docs.typesafe.ai, linked below.
What is Jev Box?
Jev Box is a question type: you send an image and name one thing in it, and Jev returns the smallest rectangle around that thing as four edges, each a fraction of the image's width or height, plus a confidence. It is the only Jev answer that is a location rather than a choice, a score or a probability. TypeSafe calls it experimental and changeable, so treat it as a prototype tool.
| Model | jev-1.14.0 — jev-1.13.0 rejects it |
|---|---|
| Header | TypeSafe-Danger-Zone-Images: true |
| Status | Dreamer-ready — not production-ready, per TypeSafe |
| Image | PNG or JPEG, 280 to 1,568 px a side |
| Answer | Four edges, 0 to 1 — two decimals in every run |
| 1280 × 800 | ~2,980 input tokens — about $0.000125, measured |
Quick answer · verified 2026-11-12
Can you run Jev Box on this site?
No. This site's API and MCP server send text only; they do not pass images to Jev, so there is no live box to try here. Box calls go straight to TypeSafe with your own key. How images fit into Jev in general is a short section on the Jev AI page, and the request shape for every question type is in the API reference.
This is the call we used, as a multipart upload. It asks for the button and, in the same request, whether the button can actually be seen — the pairing the results below argue for:
curl https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" \
-H "TypeSafe-Danger-Zone-Images: true" \
-F 'request={
"model": "jev-1.14.0",
"state": {"screen": "f3a9c1d0-signup"},
"assets": {"f3a9c1d0-signup": {"type": "image", "part": "shot"}},
"questions": {
"button": {"type": "box", "instructions": "the Sign up button in `screen`"},
"visible": {"type": "noul", "instructions": "Is the Sign up button in `screen` fully visible, not covered by anything?"}
}
};type=application/json' \
-F 'shot=@signup.png;type=image/png'Our runs sent the same body as base64 JSON instead; the answers have the same shape either way. Pin jev-1.14.0 rather than jev-latest: with an experimental type, the next release is the most likely thing to move your numbers.
How accurate is Jev Box? Our measured runs
We rendered three 1280 × 800 scenes in headless Chrome: a sign-up form, the same form under a cookie banner, and a desk drawn from CSS rectangles with a laptop, mug, phone, pen, potted plant and notebook. Because we placed every shape, we know each true edge to the pixel. Each figure below is one call to jev-1.14.0 on 2026-11-12; edges are listed top / bottom / left / right.
| Target | True edges | Box answer | Worst edge off by | Confidence |
|---|---|---|---|---|
| Sign-up button | 0.650 / 0.715 / 0.422 / 0.578 | 0.64 / 0.73 / 0.42 / 0.58 | 0.015 | 0.90 |
| Laptop | 0.325 / 0.700 / 0.180 / 0.570 | 0.32 / 0.70 / 0.18 / 0.57 | 0.005 | 0.70 |
| Coffee mug | 0.413 / 0.575 / 0.641 / 0.750 | 0.41 / 0.57 / 0.63 / 0.75 | 0.011 | 0.77 |
| Phone | 0.750 / 0.913 / 0.109 / 0.164 | 0.74 / 0.92 / 0.11 / 0.19 | 0.026 | 0.87 |
| Pen (12 px tall) | 0.813 / 0.828 / 0.813 / 0.938 | 0.79 / 0.86 / 0.80 / 0.93 | 0.032 | 0.33 |
| Potted plant | 0.275 / 0.600 / 0.820 / 0.914 | 0.27 / 0.51 / 0.81 / 0.92 | 0.090 | 0.73 |

On solid, well-separated objects Box was within about 0.01 of every edge, which is roughly 13 pixels on a 1280-pixel-wide image. Two misses are worth knowing. The plant's box stopped where the leaves met the pot, so “potted plant” was read as the plant alone, with 0.73 confidence — confidence did not flag it. And the 12-pixel-tall pen got a box almost five times its height, at 0.33. Five Box questions in one request cost 3,034 tokens against 2,981 for one: the image is paid once, each extra question about 13 tokens.
How many tokens does an image cost in Jev?
TypeSafe says images are billed as input tokens at the text rate and that guidance on estimating them is still to come. So we sent the desk scene at four sizes with the same single Box question for the mug, and read usage.input_tokens. Costs are at $0.042 per million input tokens:
| Image | Input tokens | Cost | Worst edge off by | Confidence |
|---|---|---|---|---|
| 448 × 280 | 632 | $0.0000265 | 0.042 | 0.34 |
| 640 × 400 | 1,004 | $0.0000422 | 0.010 | 0.53 |
| 1280 × 800 | 2,981 | $0.000125 | 0.012 | 0.71, 0.67 |
| 1568 × 980 | 4,236 | $0.000178 | 0.011 | 0.60 |
| 400 × 250 | rejected | — | — | 400: Invalid image dimensions. |
The four accepted sizes fit a simple rule closely: about 350 tokens, plus one token for every 400 pixels of image area. A full-HD screenshot scaled down to the 1,568-pixel maximum (1568 × 882) works out at about 3,800 tokens, and a thousand such requests at about $0.16. The 400 × 250 copy was refused with a 400 and “Invalid image dimensions.”, not resized — one side under 280 pixels is enough.
Size bought confidence more than accuracy. Edges were as good at 640 × 400 as at 1568 × 980, but confidence on the same mug fell from 0.71 to 0.53 to 0.34 as the image shrank, and at 448 × 280 the box finally drifted by 0.04. Bigger was not always surer either: the 1568 × 980 copy scored 0.60. If you gate on confidence, tune the threshold at the size you will actually send. Usage also reported about 20 output tokens per Box answer; TypeSafe's published price is per input token, so the costs above count input only.
When the target is covered, missing or not unique

Box always returns a box. With the button hidden under a cookie banner it answered with a thin strip over the last password field at 0.17 confidence; the companion Noul, “is the Sign up button fully visible?”, answered 0.01, against 0.99 on the clean form. Asked for a stapler that is not on the desk, Box boxed the pen at 0.22, and a Noul asking whether a stapler was present answered 0.24 — low, but not as low as the covered button, so do not set that gate at 0.5 and walk away.
Ambiguity behaves differently. We added a blue mug to the desk and asked again for “the coffee mug”: Box returned the red one, accurately, but confidence dropped from 0.71 to 0.23. Asking for “the blue mug” found it within 0.014 at 0.82. Low confidence on a target you know is present usually means your description fits more than one thing. A gate that combines both signals:
def usable_box(answers, visible_min=0.5, conf_min=0.5):
"""Return the Box edges only when the target is seen and the answer is sure."""
box, visible = answers["button"], answers["visible"]["noul"]
if visible < visible_min:
return None # covered or absent: the edges point at something else
if box["confidence"] < conf_min:
return None # ambiguous description, tiny target or small image
return box["box"]Both thresholds are starting points from 15 calls on drawn scenes, not recommendations. Tune them on your own images, the same way you would for a Noul gate on text.
Gotchas we hit
- Two decimals. Every edge came back rounded to 0.01. On a 1,568-pixel side that is a 16-pixel step, so pad before cropping anything that must not be clipped.
- Say what the box should include. “Potted plant” lost the pot. Name the parts: “the plant together with its pot”.
- Same box, different confidence. The identical mug request, sent twice, returned identical edges at 0.71 and then 0.67. Leave a margin around any threshold.
- Unhelpful errors. Without the images header the API says so plainly. Sending Box to
jev-1.13.0returned only a 400 “Invalid request.”, which does not mention the model. - Size did not cost time. Round trips were 406 to 802 ms from Asia through a proxy, and image size did not move them: 408 ms at 640 × 400, 423 ms at 1568 × 980.
When not to use Jev Box
- Anything in production. TypeSafe says the format and answers can change between releases. Prototype with Box; ship with something that has a stability promise.
- Finding every instance. One question returns one box. Counting people in a crowd or detecting every defect on a board is an object detector's job.
- Pixel-exact work. A 0.01 grid and 0.03 misses on thin shapes rule out masks, measuring, or clicking a 10-pixel icon without a second, zoomed-in pass.
- Deciding whether something is there. Box cannot say no. Ask a Noul, or a Choice between none, one and several.
- Reading text in the image. Box locates; it does not transcribe. Crop with its edges, then run OCR on the crop.
Where it fits today: a UI test checking that a button rendered where it should, a prototype that crops a product out of a photo, or a first pass that tells a bigger vision model where to look, at about $0.000125 a screenshot.
Sources
- TypeSafe docs: Box — request and response reference, writing Box questions
- TypeSafe docs: Images — header, uploads, size limits and errors
- Our runs: 15 calls to jev-1.14.0, measured 2026-11-12; raw responses kept without image data