Skip to main content
View as Markdown

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):

ValueNameDescription
1PENDINGTask queued for processing
2READYAnalysis complete — results available
3PROCESSINGCurrently being analyzed
5ERRORTask failed — check errDescription
7ABORTEDCancelled 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.