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.
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
nsfwlabel, because no image or video is evaluated. is_prohibitedistruewhen the text (or transcript, for audio) is judged prohibited.reasonexplains 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
reasonnames the category by slug.