Web search not working in Whizi: why it did not run

The short answer

In most cases no search was ever issued. With the toggle on, Whizi first sends the model a cheap probe tool of about 50 tokens, and a real web search only runs on a turn where the model actually calls that tool. If the model judged it could answer from what it already knew, no search happens and you get an unsourced answer with the toggle still showing green.

The causes, in the order worth checking:

What you sawMost likely causeWhat to do
Toggle on, answer has no sourcesThe model never called the probe tool, so no search was issuedNothing on your side forces a search: the model decides per turn
Toggle looks off in this chatThe toggle is stored per conversation, not per accountSwitch it on again in this conversation
Only two or three sources came backAn ordinary search is capped at 3 resultsNothing to change: 3 per search and 3 in total is the cap
An error mentioning a booleanThe request body was malformedReload the page and resend
The whole message erroredA model provider failureRetry, then contact support if it repeats

Why the toggle being on does not mean a search ran

A request runs in one of three search modes: off, probe, or native.

Probe mode is the cheap stand-in. The model is handed an ordinary function it can call, costing roughly 50 tokens, and only a message where it actually calls that function gets re-issued with real search attached. On messages that never needed the web, probe mode is about 46 times cheaper than native, and on the ones that do need it, it costs about 0.8 percent extra.

Native mode runs the provider real web search tool directly. It is not free: the tool definition injects a fixed preamble of roughly 4,400 input tokens. The same two-message prompt measured 36 tokens without the tool and 4,472 with it.

The toggle permits a search. The model decides whether to run one, which is why a question like "what is a good CRM" can come back with no sources while "what did this company announce this week" comes back searched, in the same conversation, with the toggle untouched.

Web search is a per-request user toggle rather than a per-model capability flag, so there is no published list of models that can browse and models that cannot.

The exact error strings and what each one means

Whizi clients render the backend error.message directly, so the string in front of you is the one the route emitted. If you have one of these in front of you, this is what it is telling you.

Error stringHTTP and codeTrigger
webSearchEnabled must be a boolean.400, invalid_generate_requestThe website send route received a webSearchEnabled field that was not true or false
webSearch must be a boolean.400, invalid_chat_requestThe app chat route received a webSearch field that was not true or false
Web searches failed. You have not been charged.Written onto a failed runFewer than the minimum number of searches completed on a Deep Research run

The two boolean errors report a malformed request. The value the client sent for the search flag was not a boolean, and nothing about your account, plan or model caused it. Reload the page and send the message again. If a reload does not clear it, contact support.

Web searches failed. You have not been charged. is written onto a failed Deep Research run when fewer than the minimum number of searches complete. The credits are not taken. Try the request again later.

The results came back, but there were only three

An ordinary search request is capped at 3 results per search and 3 results in total, at low search context size. A thorough looking question and a trivial one both come back with at most three pages behind them.

One route behaves differently. The Canadian CPA agent is the only route that forces web search on every turn, capped at 7 searches, and its searches are restricted to an allowed domain list and an approximate Canadian user location. On that agent, results from a narrow set of sites are the allowed domain list at work.

If the answer is out of date rather than unsourced, or you want to check a figure against more than one retrieval, that is covered in using web search and in the troubleshooting hub.

When the whole message fails

A search turn can also die for reasons that have nothing to do with search. These strings come from the model provider layer and mean the generation itself failed.

Error stringHTTP and codeMeaning
The model is temporarily rate-limited. Please retry shortly.429, provider_rate_limitedThe upstream provider refused the connection, not Whizi
The model provider rejected the request.502, provider_errorThe provider error body could not be read
The model provider returned an empty stream.502The upstream response was fine but carried no body
The model stream was interrupted.In-stream error eventThe stream failed part way through
Too many requests. Please wait and try again.429, rate_limit_reachedYou hit a Whizi rate window

Chat messages are limited to 10 per minute and 60 per hour per user, flat across every plan, with a shared ceiling of 30 requests per minute across all routes. A refused request costs nothing: rate-limit refusals are unwound, so a 429 never spends a message off your allowance.

None of these have a setting on your side that prevents them. Wait a moment and send again. If the same model keeps failing across several minutes, switch to a different model to keep working and contact support so it can be looked at on your account.

Workflow checklist
  • A green toggle permits a search, and the model decides whether to run one
  • Probe mode costs about 50 tokens, and only a turn where the model calls it gets real search
  • An ordinary search returns at most 3 results
  • The two boolean errors are malformed requests: reload and resend
  • Search is a per-request toggle, not a per-model capability flag
  • Provider errors and 429s are transient: wait, retry, then contact support
Common questions

Frequently asked questions

I turned on web search in Whizi and it did not search. Why?

Because the model decided it did not need to. With the toggle on, Whizi sends a cheap probe tool of about 50 tokens alongside your message, and a real search is only issued on a turn where the model actually calls that tool. The design keeps the cost down, since native provider search injects roughly 4,400 input tokens of preamble on every request.

What does "webSearchEnabled must be a boolean." mean?

It is an HTTP 400 with the code invalid_generate_request, returned when the send request carries a webSearchEnabled value that is not true or false. It reports a malformed request, so nothing about your account, plan or model caused it. Reload the page and send again, and contact support if a reload does not clear it. The app chat route has the equivalent string webSearch must be a boolean. with the code invalid_chat_request.

What does "Web searches failed. You have not been charged." mean?

It is written onto a failed Deep Research run when fewer than the minimum number of searches complete. The wording is literal: the credits are not taken. There is no configuration change that prevents it, so the only useful response is to run the request again later.