TROUBLESHOOTING · ERROR FAQ
ChatGPT Content Policy Errors: Why Images Get Blocked & 9 Fixes
ChatGPT's image generator refuses some prompts with a content policy message — and the refusal often feels arbitrary, because the same idea phrased differently sails through. This page maps the four categories that cause nearly all blocks, where the boundary between allowed, gray-zone, and prohibited actually sits, nine rewriting tactics that recover a blocked idea, and what to do when a block looks like a mistake. The last section covers the API side: filter decisions you can read as error codes and handle in code, on image models like Nano Banana Pro.
What actually triggers a block
- Real people. Named celebrities, public figures, and recognizable faces — especially in fabricated or embarrassing situations.
- Violence-adjacent imagery. Injury detail, weapons pointed at people, gore framing — even clearly fictional or game-style art.
- Minors in any sensitive context. Children near violence, romance, or any adult theme; the strictest category by far.
- Medical, financial, and legal claims. Before/after treatment imagery, guaranteed-outcome framing, personified advice.
The boundary map: allowed, gray zone, prohibited
Allowed: fictional adults in ordinary scenes, stylized violence-free action, products, landscapes, text overlays, most illustration styles. Gray zone: public figures in neutral, non-fabricated settings (speech at a podium, yes; a fake scandal photo, no), historical violence in documentary framing, medical illustration without outcome claims. Prohibited: real-person fabrication, sexual content involving anyone who could be read as a minor, gore, and identity-adjacent abuse (deepfake framing, impersonation).
The practical rule: the closer a prompt gets to a real, identifiable person or a real-world harm claim, the harder the filter pushes back.
Nine rewriting tactics that recover a blocked idea
- Replace the named person with a role: "a senator", "a goalkeeper", "a news anchor".
- Add scene context: "a fictional movie still, clearly stylized" reframes intent.
- Move the action before or after the event: aftermath instead of the moment of injury.
- Change the medium: illustration or watercolor framing reads softer than photoreal.
- Drop loaded nouns, keep the visual: "dramatic weather" instead of storm-casualty wording.
- Split the generation: generate the setting first, edit the subject in as a second step.
- Shorten the prompt — long prompts accumulate risk tokens even when each part is fine.
- Reorder so the benign subject leads; filters weight opening clauses heavily.
- Retry once after a rewrite, not before — identical resubmission trains nothing and changes nothing.
When the block looks like a mistake: appeals and rhythm
False positives cluster around innocuous words that double as policy terms ("shooting a scene", "striking a pose"). Rewrite around the ambiguous word rather than appealing — appeals resolve in days, a rewrite resolves in seconds. If a whole account starts refusing everything, stop submitting for a few hours; rapid consecutive refusals tighten the filter for the session.
The API side: filter decisions as error codes
Over an API, a filter rejection is not a paragraph of prose — it is a structured error with a code, a retryable flag, and a suggested action. Your code can log it, route it to a rewrite queue, or surface it to the user, and failed generations are not charged. See the quickstart for a first request in curl / Python / JS, the GPT-image-specific guide for upload-side triggers, or the account-impact guide if you are worried about standing.