Connect Search1API to OpenClaw, Claude Code, and Codex with the Search1API CLI

How to Use TypeSafe Jev for Web Search: Intent Detection, Engine Routing, and Reranking

Jev answers typed questions with calibrated probabilities instead of generating text. Here is how Search1API’s Ask API uses it to detect search intent, route a request to the right engines, and rerank every result.

4 minute read

TypeSafe's Jev model does not write prose. You give it a typed question, such as "which of these options fits best" or "is this true", and it returns a calibrated probability. That makes it a poor chatbot and a very good decision-maker, and search is mostly decisions: what to search for, where to look, how far back to go, and which results are actually about the question.

This post shows how we use Jev for web search in Search1API's Ask API, and what you need if you want to build the same pipeline yourself.

What Jev is good at in a search pipeline

Jev is TypeSafe AI's System One model. Instead of generating tokens, it answers multiple-choice and yes/no questions with probabilities you can threshold. In a search pipeline, that maps onto three jobs.

Intent detection. Turn a request written like a person talks ("what are developers saying about Bun 1.3 this month?") into a keyword query and a time window.

Engine routing. Decide which sources are worth searching. A question about community reaction belongs on Hacker News, Reddit, and X; a question about recent papers belongs on arXiv.

Reranking. After the search, judge whether each result is about the request, and order results by that judgment instead of by whichever engine happened to rank them first.

Because every answer is a probability rather than text, each step has a clear threshold, and you can log exactly why a source was picked or a result was dropped.

How Ask uses Jev on every request

When you send a request to POST /ask, Ask puts a small set of typed questions to Jev before it searches:

  • Which candidate keyword query best matches what the user means? For catalogue engines such as IMDb, Jev also picks the exact title to look up.
  • How well does each of the 12 supported engines fit the request? Engines are ranked by that probability, and up to five that clear the threshold are searched in parallel. If none clears it, a default set of general engines is used.
  • Does the request imply a time window of a day, week, month, or year? If it does not, no window is applied.

The selected engines run in parallel. Jev then scores every returned result for relevance to the request. Results scoring below 0.5 are dropped, duplicates across engines are merged, and the rest are returned best first. Each result keeps its relevance score, so you can apply a stricter cut-off in your own code.

Ask does not write an answer. You get links, snippets, and scores that your own LLM can read and cite.

Make your first request

Send the request as you would phrase it to a person:

curl --request POST \
  --url https://api.search1api.com/ask \
  --header "Authorization: Bearer $SEARCH1API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "query": "What are developers saying about Bun 1.3 this month?",
    "max_results": 5
  }'

The intent field shows what Jev decided. In this run it searched for "Bun 1.3" on Google, Yandex, Hacker News, Reddit, and X, limited to the past month:

{
  "query": "What are developers saying about Bun 1.3 this month?",
  "intent": {
    "search_query": "Bun 1.3",
    "sources": ["google", "yandex", "hackernews", "reddit", "x"],
    "time_range": "month"
  },
  "results": [
    {
      "title": "Bun vs Node in 2026: where each runtime wins in production",
      "link": "https://adamarant.com/en/blog/bun-vs-node-in-2026-where-each-runtime-wins-in-production",
      "snippet": "Bun 1.3 ships a full-stack runtime, Node 24 ships stable TypeScript and a test runner. ...",
      "published_date": "2026-09-07T22:17:36Z",
      "source": "yandex",
      "relevance": 0.86
    }
  ],
  "errors": []
}

Routing depends on the wording, so the engine list can differ between similar requests. When you already know where to look, override either decision with sources and time_range:

{
  "query": "speculative decoding implementations",
  "sources": ["github", "arxiv"],
  "time_range": "year",
  "max_results": 5
}

Calling Jev directly vs. using Ask

You can call Jev yourself through TypeSafe's API. To get the same result you also need a search backend for each engine, a set of typed questions that produce stable routing, thresholds tuned on real queries, deduplication across engines, and a fallback when the model provider is unavailable.

Ask packages all of that behind one endpoint. Search1API calls Jev through TypeSafe's API and falls back to the same model on Cloudflare Workers AI during outages. If you want to see the full pipeline, our open-source prototype Jev Search shows every step with visible scores.

Pricing and limits

A completed Ask request costs a flat 5 credits, however many engines it searches, and the Jev calls are included. If some engines fail while others complete, the failures are listed in errors and the request is still charged. If no engine completes, the API returns 502 and the request is not charged.

Ask requires an API key and is limited to 30 requests per minute per account. It is not yet available through the SDKs, CLI, MCP server, or pay-per-request payments, so call it over HTTP.

To score intent and relevance, your request and the titles and snippets of returned results are sent to the Jev model. Ask is a Search1API product; it is not an official TypeSafe product.

---

Read the Ask API documentation and try your first request with the 100 free credits every new account gets.

No comments yet