---
title: Category Moderation
url: https://docs.kaltura.com/docs/rich-media-cms-apis/content-moderation/moderation-categories
---

## Category Moderation

Categories (channels) can require moderation independently of entry-level moderation. When a category has `moderation=1`, entries added to that category start with `categoryEntry.status = PENDING` and must be explicitly activated.

### categoryEntry.activate — Approve Entry in Category

```bash
curl -X POST "$KALTURA_SERVICE_URL/service/categoryEntry/action/activate" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "entryId=$KALTURA_ENTRY_ID" \
  -d "categoryId=$CATEGORY_ID"
```

### categoryEntry.reject — Reject Entry in Category

```bash
curl -X POST "$KALTURA_SERVICE_URL/service/categoryEntry/action/reject" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "entryId=$KALTURA_ENTRY_ID" \
  -d "categoryId=$CATEGORY_ID"
```

### Entry Moderation vs. Category Moderation

| Feature | Entry Moderation | Category Moderation |
|---------|-----------------|-------------------|
| **Scope** | Global — affects playback everywhere | Per-category — affects visibility in that category only |
| **Status field** | `entry.moderationStatus` | `categoryEntry.status` |
| **Default for new content** | `AUTO_APPROVED` (6) or `PENDING_MODERATION` (1) | `PENDING` if category has `moderation=1` |
| **User flagging** | `baseEntry.flag` creates flags | Not supported — admin-only |
| **Actions** | `baseEntry.approve` / `reject` | `categoryEntry.activate` / `reject` |
| **Playback impact** | Blocks playback entirely | Entry still plays via direct link; hidden from category listing |
| **AI integration** | Manual bridge via webhook | Direct auto-action from REACH task results |

An entry can be approved globally (`moderationStatus=APPROVED`) but still pending in a specific category. The two systems are independent — approving an entry does not activate it in moderated categories, and vice versa.
