The short answer
When image generation fails in Whizi, the wording of the error tells you which kind of failure it was: a plan gate, a spent allowance, a screener refusal, a rejected request, or a provider failure after the job had already started. Only the first two are fixed by changing plan. Provider failures are usually fixed by sending the same prompt again, and they refund what they reserved.
Image generation is included on Pro and Powerhouse. Free and Starter accounts have an image allowance of zero, so on those plans a refusal is the designed behavior rather than a fault.
| Error you see | What happened | What to do |
|---|---|---|
Choose a subscription to generate images. | A free account asked for an image (HTTP 402) | Subscribe to Pro or Powerhouse |
Upgrade to Pro or Powerhouse to generate images. | A paid plan with no image allowance, which is Starter (HTTP 403) | Move up to Pro or Powerhouse |
Your monthly image generation limit has been reached. | The period image counter is exhausted (HTTP 429) | Wait for the next period, or move up a tier |
Your weekly image generation limit has been reached. | The same, on a weekly billing cycle (HTTP 429) | Wait for the next period, or move up a tier |
Image generation could not be started. Please try again. | The provider refused the job at submit (HTTP 429 or 502) | Send it again. The reservation was refunded |
The image provider could not complete this generation. | The provider accepted the job, then reported it failed | Send it again, or try a different image model. The reservation was refunded |
Image prompts must be between 1 and 4000 characters. | The prompt was empty or over the cap (HTTP 400) | Shorten the prompt |
Plan and allowance: the two refusals that are not bugs
Image generation is metered on its own counter, separate from text messages. A standalone image job spends only the image counter, not the credit balance.
| Plan | Image generations per monthly period |
|---|---|
| Free | 0 |
| Starter | 0 |
| Pro | 100 |
| Powerhouse | 500 |
On a weekly billing period the figure is the monthly allowance divided by four, rounded up.
A free account gets Choose a subscription to generate images. as HTTP 402 with code subscription_required. A paid account whose tier carries no image allowance gets Upgrade to Pro or Powerhouse to generate images. as HTTP 403 with code tier_upgrade_required. Today that second case means Starter, because Starter and free are the two plans with an allowance of zero.
When the counter for the period runs out, the message is Your monthly image generation limit has been reached. on a monthly cycle and Your weekly image generation limit has been reached. on a weekly one, both HTTP 429 with code image_limit_reached. The counter is per billing period, so the options are to wait for the period to turn over or to move up a tier. The image counter is a separate meter from the credit balance.
The job started and then failed
These are provider failures. They are worth retrying, because the same prompt often succeeds on a second attempt, and because both of the common ones give your allowance back.
Image generation could not be started. Please try again. is returned when the submit call fails: HTTP 429 with code image_provider_rate_limited when the provider answers with a rate limit, and HTTP 502 with code image_submit_failed otherwise. The reservation is refunded before the error is returned.
The image provider could not complete this generation. is written into the job record when the provider accepts the job and later reports it as failed. The reservation is refunded at that point too.
Image generation status is temporarily unavailable. means the status poll failed rather than the generation: HTTP 429 when the upstream poll is rate limited and HTTP 502 otherwise, both with code image_status_failed. The job may still be running, so reload before assuming it died.
Image job not found. is HTTP 404 with code image_job_not_found, returned when the job id does not resolve.
Three rarer strings mean the image itself was produced but could not be retrieved or stored: The completed image could not be saved. when the finished image cannot be copied into storage, Generated image could not be downloaded. when the fetch of the provider image is not OK or declares an over-cap length, and Generated image exceeded the size limit. when the downloaded image is empty or over the byte cap. Two more sit earlier in that chain: Image provider returned an invalid URL. is raised when the provider result URL is missing or not on the allowed host list, and Image result was unavailable. when the result fetch is not successful. Retry is the only user-side action for all of them.
Something went wrong. Please retry. is the HTTP 500 body with code internal_error, used for any unhandled backend error, so it carries no diagnostic of its own. If it keeps coming back on the same prompt, a different prompt will not fix it, and support is reachable from Settings.
Errors that reject the request before generation
Choose Whizi Image, Nano Banana, FLUX, or Stable Diffusion. is HTTP 400 with code invalid_image_model, returned when the model on the request is not an image generation model. Those four names are the image models the catalogue offers.
Image prompts must be between 1 and 4000 characters. is HTTP 400 with code invalid_image_prompt. An empty prompt and a 5,000 character prompt fail the same check.
If you are generating inside a chat rather than as a standalone job, the strings come from the chat path instead and read differently. The model is temporarily rate-limited. Please retry shortly. is HTTP 429 with code provider_rate_limited. Error generating response. Please try again. is HTTP 502 with code provider_error, returned when a creative generation fails for any reason other than a provider 429.
An in-chat image prompt can also be stopped by the ordinary chat submission errors, which are not image errors and are documented on their own page: a duplicate submission, a generation already running on the account, and an edited prompt whose original message is gone from the conversation. See message not sending.
The prompt was refused, not failed
Content policy refusals return HTTP 400 rather than 403, deliberately, because the clients already render the error message on a 400. So a refusal reads as an ordinary error in the interface even though nothing broke.
Screening runs before any quota is reserved and before the provider is called, which means a refused prompt costs you no allowance at all.
The three refusals most likely to hit an image prompt:
Whizi does not create sexual or suggestive content involving minors. This request was not sent to any model. If you think this was a mistake, contact support from Settings.(codecontent_policy_minor_safety)Whizi does not create sexual content featuring real, identifiable people. If you think this was a mistake, contact support from Settings.(codecontent_policy_real_person). This rule applies to generation requests only, not to text chat, which is why the same wording can pass in a conversation and fail on an image.Whizi cannot help with building weapons, explosives, or other things designed to hurt people. If you think this was a mistake, contact support from Settings.(codecontent_policy_weapons)
If the screener has been tripped repeatedly on generation prompts, the account earns a lockout and gets Generation is paused on this account after repeated requests that Whizi cannot fulfil. It reopens automatically. Contact support from Settings if you think this is wrong. as HTTP 429 with code content_policy_locked. The string carries its own remedy: it reopens automatically, and support is reachable from Settings.
An image that generated fine and will not load now
Generated images are stored on the server and served back through signed URLs, so the link in an old chat is not a permanent address. Uploaded attachments and generated media are configured to expire after up to 30 days.
Media has expired. is HTTP 404 with code media_expired, returned when the stored object is past its retention window.
Media not found. is HTTP 404 with code media_not_found, returned when the media id does not resolve for your account at all.
Downloading is the only durable copy. A chat is not storage.
- Image generation is on Pro and Powerhouse only, at 100 and 500 per monthly period
- Free and Starter have an image allowance of zero, so refusals there are expected
- Weekly billing gets the monthly allowance divided by four, rounded up
- A standalone image job spends only the image counter, not your credit balance
- Submit failures and provider failures refund the reservation automatically
- Content policy refusals are screened before any quota is reserved, so they cost nothing
- A content policy lockout reopens automatically, and support is reachable from Settings
- Generated media is configured to expire after up to 30 days, so download what you want to keep
Frequently asked questions
What does "Choose a subscription to generate images." mean?
It means the account is on the free tier, which has an image allowance of zero. The error is HTTP 402 with code subscription_required. The paid equivalent is "Upgrade to Pro or Powerhouse to generate images.", HTTP 403, which appears on a paid plan that carries no image allowance. Image generation is included on Pro at 100 per monthly period and Powerhouse at 500.
I am on Starter and every image request is refused. Is that a bug?
No. Starter has an image allowance of zero, the same as free, so the refusal is the designed behavior and no amount of retrying will change it. Starter reaches four ids for text chat, including Auto, which is a router rather than a model. Image generation is not part of the tier, and Pro is the lowest plan that includes it.
Does a failed image generation still cost me a generation?
Usually not. An image job reserves against the image counter before the provider is contacted, and that reservation comes back on both of the provider failures named above. A screener refusal never reaches the reservation step at all, so there is nothing to give back in the first place.
Why was my image prompt refused when the same wording works in a chat?
One rule is deliberately generation-only. The refusal about sexual content featuring real, identifiable people applies to generation requests and not to text chat, so a phrase that passes in a conversation can be refused as an image prompt. Every content policy refusal returns HTTP 400, which is why one arrives looking like an ordinary error rather than a policy notice.
My generated image will not load any more. Where did it go?
Two different 404s produce that symptom, and the code tells them apart. "Media has expired." (code media_expired) means the stored object is past its retention window; generated media is configured to expire after up to 30 days. "Media not found." (code media_not_found) means the id does not resolve for your account at all. Neither state can be undone from the interface.