Per-account category toggles

Enable or disable individual moderation checks for your account

You can enable or disable the NSFW label, text moderation, and individual default policy categories. Default categories are enabled unless you explicitly disable them. Each category lists the moderation types it applies to. You can add custom categories alongside the default policy.

For image and video jobs, the AI Adult General check evaluates the enabled default and custom categories together. The separate Underage check remains enabled. See moderation categories.

Text jobs work differently: they have no image or video to evaluate, so their is_prohibited decision comes from the text check alone. Disabling the text toggle therefore removes the only check those jobs have, and every text job passes. Audio jobs are checked on their transcript by the same text check, but that check is not covered by the text toggle and always runs.

By default, both optional checks are enabled.

Where to configure#

Open the 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 toggles#

Toggle What it does
nsfw Flags images and videos containing nudity, sexual content, or other adult material. Informational only. It never rejects a job itself.
text Screens submitted text against your moderation policies, including your custom categories.

How disabled checks behave#

  • nsfw disabled: the NSFW check is skipped and the nsfw field is omitted from the job result and the webhook payload. The prohibited decision is unaffected.
  • text disabled: the text check is skipped for text jobs, and with it every custom category. Those jobs have no other check, so every one of them passes. Image, video, and audio jobs are unaffected. Audio still runs the same check on its transcript, custom categories included.
  • A default_* category disabled: the category is not scored, so its key does not appear in the risk scores (scores) of the job result and the webhook payload.

Default categories#

The same dashboard page lists Default moderation categories above your custom categories. You can toggle each listed default category. You cannot edit its criteria or view its prompt. Child-safety categories are never listed: they always run, and a default_* key for one of them is accepted but has no effect. Independent keyword filtering and the separate Underage check keep their own behavior.

Call GET /api/v1/me/default-categories to discover category IDs, display names, enabled states, and applicable workflows. This endpoint does not return policy prompts. Include the returned default_* IDs in your enabled_categories configuration to change their state.

The optional scores object on a completed text or audio job holds an informational risk score per enabled category. Its keys are the same IDs without the default_ prefix: default_violence is scored as violence. Child-safety categories are never scored.

Custom categories#

Custom categories have their own enable/disable flag, set per category rather than through this endpoint. An enabled category runs on image, video, text and audio, but the text toggle still wins over it. With text disabled, text jobs run no check at all, so the API evaluates none of your custom categories on them. See custom categories.

API access#

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

Read current settings#

Shell
curl https://api.omnifence.ai/api/v1/me/moderation-config \
  -H "Authorization: Bearer $OMNIFENCE_API_KEY"
JSON
{
  "enabled_categories": { "nsfw": false },
  "catalogue": {
    "nsfw": { "label": "NSFW", "description": "...", "icon": "..." },
    "text": { "label": "Prompt Sanitisation", "description": "...", "icon": "..." }
  }
}

The enabled_categories object contains only the checks you have explicitly disabled. Anything missing is enabled. The catalogue provides human-readable labels and descriptions for each toggle.

Update settings#

Shell
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 }'

The body must be a JSON object, and it replaces your whole configuration. Allowed keys are nsfw, text, and default_* category IDs returned by /me/default-categories. Values must be booleans. Sending an empty object {} resets all toggles to their default (enabled).