AI Moderation via REACH - Content Moderation
AI Moderation via REACH
REACH (Real-time Enrichment, Analysis, and Classification Hub) provides AI-powered content moderation using LLMs and computer vision models. Content is analyzed against configurable policies that define rules for text, visual, and audio content.
Ordering a Moderation Task
curl -X POST "$KALTURA_SERVICE_URL/service/entryVendorTask/action/add" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "entryVendorTask[objectType]=KalturaEntryVendorTask" \
-d "entryVendorTask[entryId]=$KALTURA_ENTRY_ID" \
-d "entryVendorTask[catalogItemId]=$MODERATION_CATALOG_ITEM_ID" \
-d "entryVendorTask[taskJobData][objectType]=KalturaEntryVendorTaskModerationJobData"
Moderation catalog items have serviceFeature=15. List available items:
curl -X POST "$KALTURA_SERVICE_URL/service/vendorCatalogItem/action/list" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "filter[serviceFeatureEqual]=15"
Reading Moderation Results
Poll the task until status=2 (READY):
curl -X POST "$KALTURA_SERVICE_URL/service/entryVendorTask/action/get" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "id=$VENDOR_TASK_ID"
The moderation output is in the moderationOutputJson field of the task's taskJobData:
{
"moderationOutputJson": {
"violations": [
{
"rule": "profanity",
"severity": "high",
"timestamp": 45.2,
"description": "Explicit language detected in transcript"
}
],
"summary": "Content flagged for profanity at 0:45",
"overallScore": 0.85,
"policyId": "default_moderation_v2"
}
}
Task status values (KalturaEntryVendorTaskStatus):
| Value | Name | Description |
|---|---|---|
| 1 | PENDING | Task queued for processing |
| 2 | READY | Analysis complete — results available |
| 3 | PROCESSING | Currently being analyzed |
| 5 | ERROR | Task failed — check errDescription |
| 7 | ABORTED | Cancelled before completion |
Category Auto-Action
When a moderation task completes, the system can automatically activate or reject the entry within a specific category based on the moderation result:
- Pass →
categoryEntry.activate— entry becomes visible in that category - Fail →
categoryEntry.reject— entry is hidden in that category
This is configured at the catalog item level and applies per-category, not per-entry. The entry's global moderationStatus is not changed by this auto-action — only the categoryEntry status is affected.