> ## Documentation Index
> Fetch the complete documentation index at: https://docs.omnifence.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Moderation categories

> Three content categories evaluated during moderation

Every moderation job evaluates content against three built-in categories. Each category is a boolean — `true` if detected, `false` if not.

## Categories

### NSFW

Sexually explicit or not-safe-for-work content detected. Includes nudity, sexual acts, and other adult material.

### AI Adult General

Catch-all classifier for adult content not covered by the other built-in categories.

### Underage

Content involving minors detected. The job is rejected like any other category violation. Repeated detections may be reviewed manually and can result in account termination at our discretion — see [account termination](/authentication#account-termination).

## Category output

Categories appear in the top-level `categories` object of a completed job. Per-client custom
categories are nested under `categories.custom`:

```json theme={null}
{
  "categories": {
    "ai_adult_general": false,
    "underage": false,
    "nsfw": true,
    "custom": {
      "brand_logos": false
    }
  }
}
```

`categories.custom` is only included when at least one custom category ran for the job. If you haven't configured any custom categories, the `custom` key is omitted entirely.

## How categories affect decisions

If **any** category (built-in or custom) is `true`, `is_prohibited` is `true`. All categories must
be `false` for `is_prohibited: false`. See [decision logic](/moderation/decisions) for details.

For video moderation jobs, categories are [merged across frames](/moderation/video-moderation#category-merging) — if any single frame triggers a category, the entire video is flagged.
