预览提示 · 本站为上线前预览:模型清单与费率以正式上线公告为准

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.

Quick answers

Why did my prompt get blocked when a nearly identical one worked yesterday?
Filters score the whole prompt, not just the subject. Small wording changes, the day's filter configuration, and accumulated session history all shift the score. Rewrite the risky clause and it will usually pass again.
Do blocked attempts count against my account?
Isolated refusals do not. Repeated refusals of the same policy category in a short window can trigger a warning. Space out retries and rewrite between attempts.
Can I turn the content filter off on the API?
No. The policy applies platform-wide, but over the API a rejection arrives as a structured, programmable error with a retryable flag — so pipelines can branch (rewrite / skip / park) instead of stalling, and failed generations are not charged.
已复制