Skip to main content
Every completed moderation job reports is_prohibited as a boolean. While the job is still processing, is_prohibited is null.

Decision rule

On an image or video job, the AI Adult General check owns the decision:
  • is_prohibited: true: the check found a breach of the content policy, of one of your custom categories, or content depicting an apparent minor.
  • is_prohibited: false: the check found nothing prohibited.
There is no confidence score or threshold. The decision is binary. There is also no categories object on the response: the reason string explains a rejection instead.

Example: a rejection

reason is present only when is_prohibited is true. It names the policy or the custom category (by slug, in parentheses) that tripped.

The NSFW label is not a decision

nsfw is informational. It reports whether an image or video contains nudity or sexual content, and it never rejects a job on its own. An image can return is_prohibited: false together with nsfw: true. Apply your own product rule to that label. The field is present only when the NSFW check is enabled for your account. See per-account category toggles.

Image and video specifics

  • Every enabled custom category is evaluated as part of the AI Adult General check, so a custom match rejects the job the same way a built-in policy breach does.

Text and audio specifics

  • These modalities carry no nsfw label, because no image or video is evaluated.
  • is_prohibited is true when the text (or transcript, for audio) is judged prohibited. reason explains why.
  • Every enabled custom category is evaluated as part of that same check, so a custom match rejects a text or audio job the way it rejects an image one. The reason names the category by slug.

Content involving minors

Content that appears to depict a minor is rejected by the always-on AI Adult General check, which has no account toggle. Repeated detections may be reviewed manually and can result in account termination at our discretion. See account termination.