---
title: Overview
url: https://docs.kaltura.com/docs/rich-media-cms-apis/content-moderation/moderation-overview
---

## Moderation API

Moderation lets administrators and AI engines review content before it becomes visible to end users. The platform provides two complementary systems: a **manual moderation queue** (community flagging, moderator approve/reject) and **AI-powered moderation via REACH** (automated policy evaluation using LLMs and computer vision). The two work together — AI screens content at scale against configurable policies, while community flagging catches context-specific issues that automated systems miss. Both systems share the same entry-level `moderationStatus` field that controls playback visibility.

**Base URL:** `$KALTURA_SERVICE_URL` (default `https://www.kaltura.com/api_v3`)
**Auth:** KS (admin session for approve/reject; user or widget session for flagging)
**Format:** All requests use `format=1` for JSON responses

### When to Use

- **Content review before publishing** — Hold uploaded entries for moderator approval before they become playable
- **User-reported content** — Let viewers flag inappropriate content via the player plugin
- **Automated AI content screening** — Screen video transcripts and frames against moderation policies using REACH
- **Channel-level content gating** — Require approval before content appears in specific categories/channels
- **Compliance workflows** — Enforce corporate content policies (hate speech, PII, profanity) with configurable rules

### Prerequisites

- An ADMIN KS (type=2) with `disableentitlement` privilege for approve, reject, and moderation queue operations (see [Session Guide](/docs/getting-started/authentication/ks-overview))
- The moderation feature enabled on your account (`moderateContent` setting) for entry-level moderation workflows
- For AI moderation: the REACH plugin enabled with a moderation catalog item (serviceFeature=15) provisioned on your account

### Architecture

```
┌─────────────────────────────────────────────────────────────────┐
│            ENTRY MODERATION (Manual / Community)                │
│                                                                 │
│  baseEntry.flag ──► FLAGGED_FOR_REVIEW (5)                     │
│  baseEntry.approve ──► APPROVED (2)                            │
│  baseEntry.reject ──► REJECTED (3)                             │
│  baseEntry.listFlags ──► view pending flags                    │
└─────────────────────────────────────────────────────────────────┘
           ▲                              │
           │  Manual or webhook bridge    │  entry.moderationStatus
           │                              ▼
┌─────────────────────────────────────────────────────────────────┐
│               AI MODERATION (REACH + KAI)                       │
│                                                                 │
│  entryVendorTask.add (serviceFeature=15) ──► AI analysis       │
│  Output: moderationOutputJson { violations[], summary }        │
│  Auto-action: categoryEntry.activate / categoryEntry.reject    │
└─────────────────────────────────────────────────────────────────┘
```

The AI moderation engine produces a `moderationOutputJson` report on the vendor task but does **not** automatically update `entry.moderationStatus`. To bridge AI results to entry-level moderation, either review the output manually and call `baseEntry.approve`/`reject`, or configure a webhook that reads the task result and triggers the appropriate action.
