Overview - Content Moderation
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
disableentitlementprivilege for approve, reject, and moderation queue operations (see Session Guide) - The moderation feature enabled on your account (
moderateContentsetting) 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.