The short answer
Voice mode fails for one of four reasons: the account is not signed in or has no voice minutes left, the browser blocked the microphone, the realtime connection to the voice service failed, or the session hit one of its own limits. The message Whizi shows tells you which, and each message maps to exactly one condition in the code.
Find the text you are looking at in this table, then read the matching section below for the detail.
| What you see | Where it comes from | What to do |
|---|---|---|
Sign in to Whizi to use voice mode. | No session token when the voice overlay opens | Sign in, then reopen voice mode |
Upgrade your subscription to talk with Whizi in voice mode. | A free account starting a voice session | Subscribe: free accounts get 0 voice minutes |
Your monthly voice minutes have been used up. | The period voice reservation was refused | Wait for the period to reset, or move up a tier |
Microphone access is blocked. Allow it in your browser to use voice mode. | The microphone request was rejected by the browser | Allow the microphone for whizi.io and retry |
This browser does not support realtime voice. | No getUserMedia or no AudioContext | Use a browser that has both |
Realtime voice is not configured yet. Please try again later. | The voice provider key is not set on the server | Nothing you can do: retry later |
The realtime voice connection failed. | A websocket error during the session | Retry, and check the network |
Voice sessions are limited to 15 minutes. Start a new session to continue. | The session timer reached the 15 minute cap | Start a new session |
The Whizi server only mints a short-lived session token, and the browser then opens a websocket straight to the voice provider. No audio passes through the Whizi backend. That is why microphone failures are entirely local to your browser, while the strings in the connection section come from the token mint on the server or from the provider upstream of it.
Voice will not start: the account gates
Three refusals happen before any audio is captured, and none of them are bugs.
Sign in to Whizi to use voice mode. The voice overlay throws this when no token is available. A signed-out or expired session produces it. Sign in and reopen voice mode.
Upgrade your subscription to talk with Whizi in voice mode. This is HTTP 402 with code subscription_required, returned when a free account tries to start a voice session. Free accounts have an allowance of 0 voice minutes, so there is no partial access to fall back on. The cheapest plan with any voice allowance is Starter at $15.99/month, which includes 10 realtime voice minutes per month.
Your monthly voice minutes have been used up. and Your weekly voice minutes have been used up. These are HTTP 429 with code voice_limit_reached, thrown when the period voice reservation is refused. The noun is "weekly" on a weekly billing cycle and "monthly" otherwise, so which one you see tells you which cycle your plan is on.
The allowances, per monthly billing period:
| Plan | Voice minutes per month |
|---|---|
| Free | 0 |
| Starter | 10 |
| Pro | 80 |
| Powerhouse | 500 |
Weekly billing periods take a quarter of the monthly allowance unless the plan names its own weekly figure.
The microphone will not start
These four messages all come from the browser side of voice mode, before or during capture. Because audio never reaches Whizi servers, nothing about your account or plan affects them.
This browser does not support realtime voice. Shown when getUserMedia or AudioContext is unavailable. This is a capability check, not a permission problem, so no amount of granting permissions will clear it. Try a different browser.
Microphone access is blocked. Allow it in your browser to use voice mode. Shown when the microphone request rejects with NotAllowedError or SecurityError. Grant microphone access to the site and start the session again.
The microphone could not be started. The catch-all for any other microphone failure. If the permission is granted and the browser is capable, this is the message that points at the device itself or at another application holding the input.
Voice mode could not start. It is the fallback used when the start sequence throws with no message of its own, so it carries no detail to act on.
The connection fails or drops
Starting a session has two steps that can fail independently: the server mints a token, then the browser opens a websocket. The strings tell you which step broke.
Failures while minting the token:
| Message | Status and code | Trigger |
|---|---|---|
Realtime voice is not configured yet. Please try again later. | 503 voice_live_unavailable | The provider API key is not set on the worker |
Realtime voice is temporarily rate-limited. Please retry shortly. | 429 provider_rate_limited | The upstream token mint answered 429 |
Whizi could not start a realtime voice session. | 502 voice_live_unavailable | Any other upstream failure on the token mint |
Whizi received an invalid realtime voice token. | 502 voice_live_unavailable | The mint succeeded but returned no token name |
Realtime voice is not available in this build yet. | 503 voice_not_configured | The shared API base is missing, or the voice domain is not enabled for this build |
Whizi received an invalid realtime voice session. | 502 invalid_voice_live_response | The session payload failed validation, including a websocket URL that does not start with the expected provider host |
Request failed ({status}). | Varies | The client fallback when a voice error body cannot be read |
The first four rows come from the token mint on the Whizi worker or from the provider upstream of it. No client setting, browser change, or plan change clears them. Retry shortly, and if the same string persists, contact support with the exact message and the time.
Failures on the websocket itself:
| Message | Trigger |
|---|---|
Whizi could not reach the realtime voice service. | The websocket closed before setup completed |
The realtime voice connection was closed. | The websocket closed after setup completed |
The realtime voice connection failed. | A websocket error event fired |
The overlay labels a failed session with the state Connection error. A close before setup points at reachability (a network that blocks the websocket, for instance), and a close after setup points at an interruption mid-session.
Retry loops have their own ceiling. Starting or ending a voice session is limited to 6 requests per minute each, so hammering the start button swaps the problem you had for a 429. See rate limits for the other windows a retry pays into.
The session ended on its own
Four endings are deliberate, and each has its own message.
Voice sessions are limited to 15 minutes. Start a new session to continue. A single voice session is capped at 15 minutes (900 seconds) regardless of how much of your allowance is left. This message fires when the timer reaches that full maximum. Starting a new session is the intended path, not a workaround.
This session used the last of your plan's voice minutes for this period. The start call reserves seconds and returns how long this particular session may run, and that figure shrinks when your remaining minutes are low. When the server shortened the session below the 15 minute maximum, this message is what you get at the end instead of the cap message.
Whizi ended the session after a couple of quiet minutes. Tap retry when you want to keep talking. The idle timeout elapsed with no speech. This is the message to look for if your symptom is "it never heard me": a session that captures no speech at all ends this way rather than sitting open. If you see this while you were definitely talking, the problem is upstream of the timeout, in the microphone section above.
The realtime voice session is ending. Start a new session to continue. The upstream service sent a goAway frame, which is the provider asking the connection to wind down. Start a new session.
The session token is minted with a 16 minute lifetime, one minute of slack past the 15 minute session cap. A session cannot outlive its token, and the cap is always what you hit first.
Reading the error yourself
If you are looking at a network trace or reporting a problem, the code in the error body is the more useful half of it. These are the codes voice mode can produce: subscription_required, voice_limit_reached, voice_live_unavailable, provider_rate_limited, voice_not_configured, invalid_voice_live_response and rate_limit_reached.
For what happens to what you said, the training statement covers voice explicitly: Whizi does not use your prompts, files, conversations, voice transcripts, or generated content to train Whizi-owned AI models, and does not sell that content as training data. The full detail is in what Whizi does with your data.
- Free accounts get 0 voice minutes: the 402 upgrade message is the gate, not a bug
- Allowances per month: Starter 10, Pro 80, Powerhouse 500 minutes
- "Weekly" in a limit message means the account is on a weekly billing cycle
- Microphone errors are entirely browser side: no audio passes through Whizi servers
This browser does not support realtime voice.is a capability check, not a permission one- Token mint failures (503 and 502) are server side: retry later or contact support
- A session is capped at 15 minutes regardless of remaining allowance
- A session with no speech at all is ended by the idle timeout
- Starting a session is rate limited to 6 per minute, so retry loops backfire
Frequently asked questions
Whizi says my microphone is blocked but it works in other apps. What now?
That exact string, Microphone access is blocked. Allow it in your browser to use voice mode., is shown when the microphone request rejects with NotAllowedError or SecurityError. Grant microphone access to the site and start the session again. If what you see instead is The microphone could not be started., permission was not the refusal: that message is the catch-all for any other microphone failure.
Voice mode says it is not configured. Is that my account?
No. Realtime voice is not configured yet. Please try again later. is HTTP 503, returned when the voice provider API key is not set on the server, and Realtime voice is not available in this build yet. is the client-side equivalent when the voice domain is not enabled for that build. Neither is fixable from your side. Retry later, and if it persists, contact support with the exact string.