Skip to main content
Omnifence API screens text, images, video, and audio for unsafe content. Each modality has its own endpoint, tuned to that medium.

Why moderation

A platform that creates or hosts content must stop harmful material before it reaches people. Omnifence automates that check. It analyses your content against the configured moderation categories and returns a single is_prohibited decision, with a reason when it rejects the content.

Modalities

Text moderation

Screen text against your configured moderation policies before you act on it, including any custom categories you have configured.
  • Input: text field
  • Output: is_prohibited decision, plus a reason when the text is rejected
Learn more about text moderation

Image moderation

Screen a single image against the always-on AI Adult General prohibited-content check, which also covers any custom categories you have configured. The optional NSFW label runs alongside it.
  • Input: image field, a public HTTP/HTTPS URL. The endpoint takes a URL, not a file upload.
  • Output: is_prohibited decision, an informational nsfw label, plus a reason when an image is rejected
Learn more about image moderation

Video moderation

Screen a video against the same checks as image moderation, applied to the whole clip.
  • Input: video field, a public HTTP/HTTPS URL up to 100 MB. The endpoint takes a URL, not a file upload.
  • Output: is_prohibited decision and an informational nsfw label
Learn more about video moderation

Audio moderation

Screen the speech in an audio clip with the same checks as text moderation, including any custom categories you have configured. Non-speech audio (music, sound effects) is not screened.
  • Input: audio field, a public HTTP/HTTPS URL up to 100 MB and 30 minutes
  • Output: is_prohibited decision, plus a reason when a clip is rejected
The transcript is never stored and never returned; see transcript privacy. Learn more about audio moderation

Asynchronous processing

All modalities run asynchronously. When you submit a request, the API returns a job_id immediately with status: "queued". You can then:
  1. Poll the job status endpoint for results.
  2. Receive results via webhook when the job completes.
The job status endpoint reports queued, processing, completed or failed. A moderation job goes straight from queued to a terminal completed or failed, and it never reports percentage progress, so poll for the terminal status rather than trying to render a progress bar.