RTCDeveloper Docs Flyan Cloud
中文

Content Moderation

Moderation task lifecycle, sampling findings and status queries backing the SDK content-inspection capability.

Generated from the public REST API definitions

Version v1.1.0 · Updated 2026-10-26 · revision 1

Group overview

Generated at build time from the public REST API definition: tag moderation, 6 operations (out of 230). For authentication, envelope and pagination conventions see REST API overview.

MethodPathSummary
POST/v1/moderation/inspectUpload a sample for inspection
GET/v1/moderation/tasksList moderation tasks
POST/v1/moderation/tasksCreate a moderation task
GET/v1/moderation/tasks/{taskId}Get a moderation task
GET/v1/moderation/tasks/{taskId}/findingsList findings of a task
POST/v1/moderation/tasks/{taskId}/stopStop a moderation task

Operation details

POST /v1/moderation/inspect

Upload a sample for inspection

Called by the client SDK (ContentInspectConfig / ContentInspectModule) with the task token. The sample is judged by the deployment's moderation provider; a flagged verdict triggers a signed callback to the task callbackUrl. A deployment without a provider answers 503 moderation_provider_unavailable (fail-closed).

Authentication: no credentials required

Request body

FieldTypeRequiredDescription
mediaTypeenum(image | audio | video)is
mediastringisbase64 sample bytes (decoded limit 512 KiB)
capturedAtstringformat date-time
extraInfostringlength 0..1024
json
{
  "mediaType": "image",
  "media": "string",
  "capturedAt": "string",
  "extraInfo": "string"
}

Response

Status codesDescription / schema
201OK — ModerationInspectResult
400Invalid parameter — Error
401Bad/expired task token (moderation_token_invalid) — Error
403Task stopped or media type not declared (moderation_task_inactive) — Error
413Sample too large (moderation_payload_too_large) — Error
503No provider configured (moderation_provider_unavailable) — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/moderation/inspect" \
  -H "Content-Type: application/json" \
  -d '{"mediaType":"image","media":"string","capturedAt":"string","extraInfo":"string"}'

GET /v1/moderation/tasks

List moderation tasks

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
statusqueryenum(active | stopped)
channelNamequerystring
limitqueryinteger1..200
offsetqueryinteger>= 0

Response

Status codesDescription / schema
200OK — object{ tasks, total }
400Invalid parameter — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/moderation/tasks?status=active&channelName=weekly-sync&limit=50&offset=0" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

POST /v1/moderation/tasks

Create a moderation task

One active task per (project, channel, uid); a duplicate answers moderation_task_conflict with details.taskId. The response carries the one-time inspectToken and inspectUrl — the SDK uploads samples there (ContentInspectConfig.serverConfig equivalent). providerConfigured=false means the deployment has no moderation provider and uploads will answer 503.

Authentication: project credentials (Base64 of customerId:customerSecret)

Request body

FieldTypeRequiredDescription
channelNamestringispattern ^[A-Za-z0-9_-]{1,128}$
uidinteger | null1..2147483647
mediaTypesarray<enum(image | audio | video)>
intervalSecondsinteger1..3600
callbackUrlstring | nulllength 0..2048
metadataobject
json
{
  "channelName": "weekly-sync",
  "uid": 1,
  "mediaTypes": [
    "image"
  ]
}

Response

Status codesDescription / schema
201OK — ModerationTaskCreated
400Invalid parameter — Error
409An active task already exists (moderation_task_conflict) — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/moderation/tasks" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"channelName":"weekly-sync","uid":1,"mediaTypes":["image"]}'

GET /v1/moderation/tasks/{taskId}

Get a moderation task

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
taskIdpathisstring

Response

Status codesDescription / schema
200OK — ModerationTask
404Unknown task (moderation_task_not_found) — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/moderation/tasks/taskId" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

GET /v1/moderation/tasks/{taskId}/findings

List findings of a task

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
taskIdpathisstring
verdictqueryenum(pass | review | block)
limitqueryinteger1..200
offsetqueryinteger>= 0

Response

Status codesDescription / schema
200OK — object{ findings, total }
404Unknown task (moderation_task_not_found) — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/moderation/tasks/taskId/findings?verdict=pass&limit=50&offset=0" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

POST /v1/moderation/tasks/{taskId}/stop

Stop a moderation task

Idempotent: stopping an already-stopped task returns it unchanged.

Authentication: project credentials (Base64 of customerId:customerSecret)

Parameters

NameLocationRequiredTypeDescription
taskIdpathisstring

Response

Status codesDescription / schema
200OK — ModerationTask
404Unknown task (moderation_task_not_found) — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/moderation/tasks/taskId/stop" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

Schemas used by this group

Error — object{ code, message, reason, sdkCode, details }
FieldTypeRequiredDescription
codestringisstable machine code, see errors.json
messagestringis
reasonstring
sdkCodeintegerAgora-aligned client error number
detailsobject
ModerationFinding — object
FieldTypeRequiredDescription
findingIdstringis
taskIdstringis
mediaTypeenum(image | audio | video)is
verdictenum(pass | review | block)is
labelsarray<string>is
scorenumber | nullis0..1
capturedAtstringisformat date-time
receivedAtstringisformat date-time
providerstringis
notifiedAtstring | nullisformat date-time
notifyStateenum(delivered | failed | skipped)is
ModerationInspectResult — object{ findingId, verdict, labels, score }
FieldTypeRequiredDescription
findingIdstringis
verdictenum(pass | review | block)is
labelsarray<string>is
scorenumber | nullis
ModerationTask — object
FieldTypeRequiredDescription
taskIdstringis
projectIdstring
channelNamestringis
uidinteger | nullis1..2147483647
mediaTypesarray<enum(image | audio | video)>is
intervalSecondsintegeris1..3600
callbackUrlstring | null
statusenum(active | stopped)is
inspectUrlstring
inspectedCountintegeris>= 0
flaggedCountintegeris>= 0
metadataobject
createdAtstringisformat date-time
updatedAtstringisformat date-time
stoppedAtstring | nullisformat date-time
ModerationTaskCreated — object
FieldTypeRequiredDescription
taskIdstringis
projectIdstring
channelNamestringis
uidinteger | null1..2147483647
mediaTypesarray<enum(image | audio | video)>is
intervalSecondsinteger1..3600
callbackUrlstring | null
statusenum(active | stopped)is
inspectUrlstring
inspectedCountinteger>= 0
flaggedCountinteger>= 0
metadataobject
createdAtstringisformat date-time
updatedAtstringformat date-time
stoppedAtstring | nullformat date-time
inspectTokenstringis
inspectTokenExpiresAtstringisformat date-time
providerConfiguredboolean

Generated by the documentation build pipeline · 2026-11-05 14:43:28 UTC · Documentation center v1.1.0.

Content follows the public API definitions.

ni-meet is a self-hosted RTC PaaS with a LiveKit-based media plane (Apache-2.0) and an Agora-compatible API.