How it works

From content ingestion to automated action in one pipeline.

1. Ingestion

Content arrives via API, webhook, or social platform connector.

POST /v1/moderations Webhooks Facebook YouTube Discord

2. AI Moderation

Smart routing sends content to the best provider. Standardized result returned.

OpenAI Azure HuggingFace LLMs

3. Rules & Actions

Rules engine evaluates results. Actions execute automatically.

Hide Delete Flag Webhook

4. Manual Review

Edge cases flagged for human moderators to approve or reject.

Review queue Approve Reject
Step 1

Content arrives from anywhere

Submit content through any channel. Use the direct API for programmatic access, configure webhooks to receive content from external platforms, or set up native social media connectors that ingest comments and posts automatically.

  • API: POST /v1/moderations for single or batch moderation
  • Webhooks: Generic endpoint receives and normalizes external payloads
  • Connectors: Native Facebook, YouTube, Discord integration

Example: Facebook comment

json
// Facebook sends comment via webhook
{
  "source": "facebook",
  "content_id": "comment_123",
  "author_id": "user_456",
  "text": "Comment text here...",
  "metadata": {"post_url": "..."}
}
Step 2

AI moderates the content

Content is routed to the best available provider based on language, content type, category requirements, and cost. Each provider returns standardized results with scores from 0.0 to 1.0 across 17 content categories.

  • Smart routing: Picks the best provider if not specified
  • BYOK: Use your own provider API keys (or use platform keys)
  • Standardized output: Same format regardless of provider behind the scenes

Standardized response

json
{
  "model": "openai/omni-moderation-latest",
  "results": [{
    "category": "hate",
    "score": 0.02,
    "flagged": false
  }],
  "flagged": false,
  "usage": {
    "latency_ms": 243,
    "provider": "openai"
  }
}
Step 3

Rules enforce your policy

Configure rules that trigger automatic actions based on moderation results. Rules are evaluated by priority. The first matching rule executes its actions.

if hate > 0.8 hide + flag_for_review

if sexual/minors > 0.5 delete + notify_webhook

if spam > 0.7 mark_as_spam (YouTube)

Rule configuration

json
{
  "name": "Hide hate speech",
  "priority": 10,
  "conditions": [{
    "category": "hate",
    "operator": "gte",
    "score": 0.8
  }],
  "actions": [{
    "type": "hide"
  }]
}
Step 4

Review edge cases manually

Content that doesn't trigger a definitive rule can be flagged for manual review. Human moderators access the review queue, see the content and its moderation results, and make final decisions.

  • GET /v1/reviews/items — browse flagged content
  • POST /v1/reviews/items/{id}/resolve — approve or reject
  • Webhook notifications for new review items

Everything is logged

json
// Complete audit trail for every content item
{
  "content_id": "...",
  "source": "webhook",
  "platform": "facebook",
  "status": "actioned",
  "moderation": {
    "provider": "openai",
    "flagged": true,
    "results": [...]
  },
  "actions": [{
    "rule": "Hide hate speech",
    "type": "hide",
    "status": "executed"
  }]
}

Ready to simplify your moderation stack?

Deploy in minutes with Docker or start a free trial. One API for every moderation provider, with no vendor lock-in.