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

## Reference

### Permissions

| Permission | Required For |
|-----------|-------------|
| `CONTENT_MODERATE_BASE` | List moderation flags (`baseEntry.listFlags`) |
| `CONTENT_MODERATE_APPROVE_REJECT` | Approve or reject entries; receives flag email notifications |
| `CONTENT_MANAGE_CATEGORY_USERS` | Manage category-level moderation settings |
| `REACH_VENDOR_CONFIG` | Configure REACH moderation catalog items and policies |
| `CONTENT_MANAGE_ENTRY_USERS` | Required for `user.notifyBan` |

### Notifications

**Email templates:** The platform sends email notifications when entries are flagged, approved, or rejected. These use the account's configured email templates and are sent to users with the `CONTENT_MODERATE_APPROVE_REJECT` permission.

**Webhook integration:** Use event notifications to trigger external systems on moderation events:

| Event | Trigger |
|-------|---------|
| `ENTRY_MODERATION_CHANGED` | Entry `moderationStatus` changes (flag, approve, reject) |
| `ENTRY_VENDOR_TASK_STATUS_CHANGED` | REACH moderation task status changes (processing → ready) |

### REACH Automation Rules

Automate moderation by triggering REACH tasks on upload events:

**Trigger events:**
- `ENTRY_CREATED` — run moderation on newly uploaded entries
- `ENTRY_CHANGED` — re-run moderation when content is replaced
- `ENTRY_CATEGORY_ADDED` — run moderation when an entry is added to a moderated category

**Rule structure:**

```json
{
  "triggerEvent": "ENTRY_CREATED",
  "catalogItemId": 12345,
  "conditions": {
    "mediaTypeIn": "1,5",
    "tagsLike": "ugc"
  }
}
```

**Setup flow:**
1. Create a moderation catalog item (`serviceFeature=15`) with the desired policy
2. Create an automation rule linking an event trigger to the catalog item
3. Optionally add conditions to limit which entries are auto-moderated (by media type, tags, category, etc.)

### Error Handling

| Error | Code | Cause |
|-------|------|-------|
| `ENTRY_CANNOT_BE_FLAGGED` | `MODERATE_NOT_ALLOWED` | Entry is in REJECTED or PENDING_MODERATION status — cannot flag |
| `ENTRY_NOT_FOUND` | `ENTRY_ID_NOT_FOUND` | Invalid entry ID passed to approve/reject/flag |
| `MODERATION_NOT_ENABLED` | `SERVICE_FORBIDDEN` | Account does not have moderation enabled |
| `INSUFFICIENT_PERMISSIONS` | `INVALID_KS` | KS lacks the required moderation permission |
| `REACH_CATALOG_ITEM_NOT_FOUND` | `CATALOG_ITEM_NOT_FOUND` | Invalid catalog item ID for AI moderation task |
| `REACH_QUOTA_EXCEEDED` | `VENDOR_QUOTA_EXCEEDED` | Account REACH quota exhausted — contact support |

### Related Guides

| Guide | Description |
|-------|-------------|
| [Authentication](/docs/getting-started/authentication/ks-overview) | How to generate admin and user KS tokens |
| [Content Management](/docs/rich-media-cms-apis/content-management/upload-ingestion-overview) | Entry CRUD and metadata management |
| [Categories &amp; Channels](/docs/rich-media-cms-apis/content-management/categories-overview) | Category management and entitlements |
| [REACH Captions](/docs/rich-media-cms-apis/content-management/captions-overview) | Captioning — shares the REACH infrastructure with moderation |
| [Webhooks](/docs/rich-media-cms-apis/integration/webhooks) | Event notification setup for moderation triggers |
| [Player Embed](/docs/embeddable-kaltura-products/kaltura-player/player-embed-overview) | Embedding Kaltura Player with the moderation plugin |
| [Analytics](/docs/rich-media-cms-apis/analytics/analytics-overview) | Track moderation-related events and queue metrics |
