Answers
Why was my AI image blocked by the safety filter?
Short answer
Because one of two independent filters fired. The first checks your prompt before anything is drawn and can be relaxed; the second inspects the finished pixels and cannot be turned off by anyone. A relaxed filter only affects the first. Since every run draws a different picture, a borderline prompt that fails the second stage often passes on a retry — and a blocked generation is refunded, so the retry costs only time.
- Stage 1 — prompt check
- Configurable. Raw code: SAFETY_BLOCK
- Stage 2 — output classifier
- Not configurable. Raw code: IMAGE_SAFETY
- Shown to you as
- SAFETY_FILTERED (both stages)
- Cost of a blocked generation
- $0.00 — refunded automatically
- Retry after stage 2
- Often works — the classifier judges pixels, not the prompt
Facts on this page were checked against the live platform on .
What are the two filtering stages?
Google runs safety twice, and the two passes are unrelated. Stage one reads your prompt and reference images before the model draws anything. It is the stage exposed through safetySettings and personGeneration, so it is the one a platform can loosen. When it fires, the upstream reason is SAFETY_BLOCK and no compute was spent.
Stage two runs after the picture exists: a classifier looks at the actual pixels and can reject a file whose prompt passed cleanly. Its upstream reason is IMAGE_SAFETY (for video, rai_media_filtered_reasons). No API parameter, account tier or platform setting disables it — not for us, and not for anyone else reselling the same models.
Both reach you as the single error code SAFETY_FILTERED. If you need to know which one fired, the raw upstream_reason is returned with the failed job over MCP, so an agent can branch on it.
What does the relaxed content filter actually change?
For images it does two things: it sets safetySettings to OFF and personGeneration to ALLOW_ADULT. That widens stage one — prompts about violence in fiction, medical context, or adult subjects that a default configuration rejects outright will usually reach the model. It does nothing to stage two.
For video the switch is close to a no-op, which is why it is not offered in the video studio at all. Veo 3.1 has no safetySettings surface, and ALLOW_ADULT is already its default. The honest levers for a blocked video are a different wording, a retry, or switching between Gemini Omni Flash and Veo 3.1 Fast — not a toggle.
Should I retry, or rewrite the prompt?
Retry first if the block came from stage two. That classifier judges one specific render, and the model draws a different picture every run — the same borderline prompt genuinely passes on the second or third attempt. Since a filtered generation is refunded in full, the retry costs you nothing but the wait.
Rewrite if it came from stage one, or if three retries fail the same way. The prompt check is deterministic enough that the same wording keeps producing the same verdict. The usual fixes: name the subject as an adult explicitly, drop brand and celebrity names, describe the scene rather than the act, and remove reference photos of identifiable people.
One thing that is not a fix: paying more or picking a heavier model. Nano Banana 2, Nano Banana Pro and Nano Banana 2 Lite all sit behind the same two filters.
Where this is documented
Longer reads on the same thing
More on this question
Am I charged for a blocked generation?
No. A content-filter rejection is refunded to your balance automatically, whether it happened in the web studio, over MCP, or through x402 (there, the payment simply never settles).
Can I get an account with the filter switched off entirely?
No, and nobody selling these models can. The output classifier is enforced inside Google's serving path, above the API surface, so it applies identically to every reseller and to direct Vertex AI access.
Does the same rule apply to reference images I upload?
Yes. Reference photos go through the stage-one check together with the prompt, and a rejected reference blocks the whole call before any image is drawn.
Why did the same prompt work yesterday?
Almost always because stage two saw different pixels. The classifier is applied per render, so identical prompts can land on either side of the line on different days.
Questions next door
Try it on your own prompt
New accounts start with $0.20 of balance — no card, nothing expires.