> ## 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.

# Per-account category toggles

> Enable or disable individual moderation checks for your account

Every moderation job evaluates content against four checks (one per [moderation category](/moderation/categories) plus the prompt prohibition check). You can disable any check that doesn't fit your use case — disabled checks are skipped entirely, saving cost and latency.

By default, all four checks are enabled.

## Where to configure

Open the [Moderation](https://app.omnifence.ai/moderation) page in the customer dashboard. Each check appears as a tile with a toggle. Changes are saved immediately and apply to all subsequent jobs.

## Available checks

| Check              | What it does                                                               |
| ------------------ | -------------------------------------------------------------------------- |
| `nsfw`             | Flags images containing nudity, sexual content, or other adult material.   |
| `ai_adult_general` | Catch-all VLM check for adult content not covered by the other categories. |
| `underage`         | Flags images that appear to depict minors.                                 |
| `text`             | Keyword filtering and an LLM prohibition check on submitted text prompts.  |

<Warning>
  When `underage` is enabled, jobs are rejected if the check fires. Account termination is **not**
  automatic — it is a manual admin action triggered separately. Disabling `underage` removes that
  rejection signal, so make sure you have an alternative CSAM-detection control in place before
  turning it off.
</Warning>

## How disabled checks behave

* **Text disabled** — keyword filtering and the LLM prohibition check are skipped for prompts, so a prompt is never rejected on text grounds.
* **A single VLM category disabled** (e.g. `nsfw`) — the per-category VLM prompt is skipped at enqueue time and the category does not appear in the result. For video, the corresponding per-frame VLM prompt is skipped too.
* **At least one built-in VLM category must remain enabled.** The API rejects an update to `/me/moderation-config` that would disable `nsfw`, `ai_adult_general`, and `underage` all at once with a `400 invalid_request`.

## API access

You can also read and update your toggles from the API.

### Read current settings

```bash theme={null}
curl https://api.omnifence.ai/api/v1/me/moderation-config \
  -H "Authorization: Bearer $OMNIFENCE_API_KEY"
```

```json theme={null}
{
  "enabled_categories": { "nsfw": false },
  "catalogue": {
    "nsfw": { "label": "NSFW", "description": "...", "icon": "..." },
    "...": "..."
  }
}
```

The `enabled_categories` object contains only the checks you've explicitly disabled — anything missing is enabled. The `catalogue` provides human-readable labels and descriptions for each check.

### Update settings

```bash theme={null}
curl -X PUT https://api.omnifence.ai/api/v1/me/moderation-config \
  -H "Authorization: Bearer $OMNIFENCE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "nsfw": false, "ai_adult_general": false }'
```

The body must be a JSON object. Allowed keys are the four check names listed above; values must be booleans. Sending an empty object `{}` resets every check back to its default (enabled).
