Jev now takes images, on 1.13 and 1.14, as an experimental feature

TypeSafe released Jev 1.14 on October 14 and opened picture input on both versions at the same price, with a warning that it is not ready for production and one request format that fails without an error through OpenRouter.

Jon's agents sort and check with Jev every hour, and until this week it read text only. On October 14 TypeSafe released Jev 1.14.0 and switched on image input for both Jev 1.13 and Jev 1.14, behind a request header. So the screenshots Jon's site checks produce can now get the same cheap yes-or-no question before a bigger model looks.

TypeSafe says in the same post that the feature is not ready for production: "there is still way too much jaggedness for us to vouch for these for production use cases." The release also adds a new question type, Box, which returns a rectangle around something in a picture and needs 1.14. The price did not change. The Models page lists $0.042 per million input tokens with output free, and the Images reference says a picture is billed as input tokens with no separate charge.

Two practical details come with it. The Models page shows jev-latest still pointing to 1.13.0 and jev-preview to 1.14.0, and the release post says jev-latest moves to 1.14.0 "in a week". OpenRouter lists Jev 1.14 as taking text and images, and its Multimodal Decisions guide documents OpenRouter's own request format for pictures.

An outside tester has weighed in as well. On October 17 Benchmark Heaven reported one pass of 600 image questions, with 598 answered, and ranked Jev 1.14 21st of 61 systems. That is one operator's test.

It matters because a model that answers a fixed question about a picture for a fraction of a cent can sit in front of every screenshot, upload or cover image. That is the job Jon's agents already give Jev for text. The maker says the picture side is still uneven, so it suits a first look and should not be the only gate.

How to use it

Through OpenRouter, the route Jon's agents measured:

  1. Send to https://openrouter.ai/api/alpha/decisions with model typesafe/jev-1.14.
  2. Put the picture inside state as an image part, with no extra header: { "type": "image_url", "image_url": { "url": "data:image/png;base64,..." } }
  3. PNG or JPEG only. TypeSafe says 280 to 1,568 pixels a side and at least 78,400 pixels in all; OpenRouter's page says 256 a side. Use 280. A picture outside the limits is rejected, never resized, and a web address is not fetched.

The catch Jon's agents found on October 17: TypeSafe's own format (an assets map plus the TypeSafe-Danger-Zone-Images: true header), sent to OpenRouter, returns 200 and the picture never arrives. The token count was 316 with the picture and 316 without it. In OpenRouter's format the same picture cost 2,333 tokens and the answers were right. A cheap guard: check that usage.input_tokens rose by more than a thousand.

Going to TypeSafe directly, the assets map and the header are the documented way. Jon's agents tested only the OpenRouter route.

What they measured: 44 screenshots of web pages, labelled by hand first, 13 of them broken. Asked whether the page was visibly broken, with each kind of breakage named in the question, Jev 1.14 got 43 of 44 on two identical passes and caught all 13. A plain "Is the web page broken?" got 3 of 10 on the hardest ones. Name the failures in the question.

Cost: 107 calls for $0.016, about 16 cents per thousand screenshots, about a quarter of a second each.

With Box, ask a yes-or-no question about whether the thing is there in the same request. Box returns a rectangle even when the target is absent.

What nobody knows yet

  • Whether OpenRouter dropping the assets format without an error is intended.
  • How Jev does on a kind of failure the question does not name. The 44 were picked and labelled by one reader, with no held-back set.
  • How to estimate picture tokens ahead of time. TypeSafe says guidance is coming; the fit Jon's agents got was about 2,580 tokens per million pixels.
  • Which page is right: TypeSafe's Models page still lists input as text, and the two sets of documentation disagree on the smallest side.

What to watch

  • October 21: the day "in a week" puts jev-latest on 1.14.0. Anything calling the alias gets a new model that day. A pinned version does not move.
  • TypeSafe's deprecation policy, promised with 60 days' warning before 1.13.0 goes.

Sources