canonical: https://jentic.com/apis/azure.com/content-moderator-client

# Microsoft Azure Content Moderator Client

Jentic publishes the only available OpenAPI specification for Content Moderator Client, keeping it validated and agent-ready. The Azure Content Moderator API scans user-generated text and images for adult, racy, profane, or otherwise unsafe content and returns either a verdict or a routed review item. Across 35 endpoints it covers image moderation (with limits of 128px minimum and 4MB max), text moderation (1024 character maximum), custom term and image lists for blocklists with refreshable indexes, OCR, face detection in images, and a review workflow that hands flagged content to human moderators. Use it to gate UGC ingest, build a moderation queue, or detect specific terms before publishing.

## For AI agents

Scan text and images for adult, racy, or unsafe content; manage custom term and image blocklists; and route flagged items into a human review queue.

## Scope

Does not classify generic objects, identify named individuals, run sentiment analysis, or moderate audio or video - use for image and text safety scoring with optional human review only.

## Capabilities

- Scan an image up to 4MB and 128px minimum side for adult and racy classification
- Scan text up to 1024 characters for profanity, PII, and custom term matches
- Run OCR over an image to extract text for downstream moderation
- Detect faces in an image to flag content where face counts trigger review
- Maintain custom image and term lists, including RefreshIndex calls so list updates take effect
- Submit content to a human review workflow and read back the human decision via job and review APIs

## Use cases

### Gate user-generated content at upload time

Apps that accept user uploads need to block adult and racy images before they ever reach the public feed. Content Moderator's image moderation endpoints accept a binary or URL-referenced image up to 4MB and return per-category scores plus a single verdict, so the upload pipeline can reject, downrank, or queue the image for review. Adding text moderation on the caption catches profanity at the same checkpoint.

Example prompt: POST a JPEG to the image moderation endpoint, read the AdultClassificationScore, and reject the upload if the score is above 0.5.

### Custom blocklists for brand-specific terms

Generic profanity filters miss product-specific banned words, character names, or competitor mentions. Content Moderator's term lists let teams maintain a custom blocklist per language, then call RefreshIndex so subsequent text scans flag those terms alongside the built-in profanity model. Image lists work the same way for hash-based image blocking.

Example prompt: POST a new term to /contentmoderator/lists/v1.0/termlists/{listId}/terms/{language}/{term}, then POST RefreshIndex on the list and run a text scan to confirm the term is matched.

### OCR-then-moderate for embedded text

Memes and screenshots often hide unsafe text inside the image. Content Moderator's OCR endpoint extracts the text from an image, which can then be passed to the text moderation endpoint to apply the same profanity and PII checks the rest of the corpus uses. This catches what pure image classification misses.

Example prompt: Run OCR on an uploaded JPEG, take the extracted text, and POST it to the text moderation endpoint to flag any profanity or PII matches.

### Hand flagged content to human review

When automated scoring lands in the gray zone, the safe answer is human review. The Content Moderator review APIs let an app submit content and metadata, route it to a configured review team, and poll for the human decision. Engineering teams use this to keep a small moderation team in the loop without building custom queue infrastructure.

Example prompt: Submit a borderline image plus metadata to the review API, store the returned reviewId, and poll for the human-assigned label.

### Agent-driven moderation pipeline through Jentic

An AI agent integrated through Jentic can run a multi-step moderation pipeline - image scan, OCR plus text scan, face detection, and human-review escalation - selecting each operation by intent rather than wiring 35 paths by hand. Jentic's intent search exposes the right Content Moderator call at each step and the API key sits in the vault.

Example prompt: Given an image and caption, run image moderation, OCR, text moderation, and face detection in parallel, then escalate to human review if any step returns a flagged verdict.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /contentmoderator/lists/v1.0/imagelists | List custom image lists |
| GET | /contentmoderator/lists/v1.0/imagelists/{listId} | Get a single image list by ID |
| POST | /contentmoderator/lists/v1.0/imagelists/{listId}/RefreshIndex | Refresh the match index for an image list after edits |
| GET | /contentmoderator/lists/v1.0/imagelists/{listId}/images | List images stored in a custom image list |
| GET | /contentmoderator/lists/v1.0/termlists | List custom term lists |

## Key resources

- **Image Moderation** — Scan images for adult and racy content, run OCR, and detect faces
- **Text Moderation** — Scan text up to 1024 characters for profanity, PII, and custom term matches
- **Image Lists** — Manage custom image blocklists and refresh their match indexes
- **Term Lists** — Manage custom term lists per language and refresh their indexes
- **Reviews and Jobs** — Submit content to human reviewers and poll for assigned decisions

## Why Jentic

- **Setup:** Wiring Content Moderator by hand means learning its Ocp-Apim-Subscription-Key header auth, shaping separate image, text, OCR, and review request bodies within the 4MB image and 1024-character text limits, and calling RefreshIndex after list edits yourself. Through Jentic you install once, import Content Moderator Client from the API Directory, store the subscription key once, and your agent calls it.
- **Permission scoping:** List and term identifiers travel in the URL path (/contentmoderator/lists/v1.0/termlists/{listId}/terms/{language}/{term}), so a rule can pin the agent to one blocklist. You choose the operations it may call, so write actions like adding a term, refreshing an index, or submitting to human review are not included unless you add them.
- **Credential handling:** Your Content Moderator subscription key is stored once, encrypted, by your own Jentic One instance and injected into the Ocp-Apim-Subscription-Key header at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'scan a user upload for adult content' or 'add a term to my blocklist', and Jentic returns the matching Content Moderator operation with its input schema so the agent calls the right endpoint without navigating the 35 paths by hand.

## Related APIs

- **Cognitive Services Management Client** — ARM-side API for provisioning the Cognitive Services account that hosts Content Moderator
- **QnA Maker Runtime Client** — Knowledge-base Q&A runtime when the goal is answering rather than moderating user content
- **Azure Search Service Client** — Full-text search when filtering content via indexed terms beats per-call moderation scoring

## FAQ

### Why is there no official OpenAPI spec for Content Moderator Client?

Microsoft Azure publishes Content Moderator reference docs but does not publish a maintained OpenAPI 3.0 specification for the API. Jentic generates and maintains this spec so that AI agents and developers can call Content Moderator Client via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Content Moderator Client use?

It uses an API key passed via the Ocp-Apim-Subscription-Key header, declared in the spec as the apim_key apiKey scheme. Through Jentic the API key is stored in the encrypted vault and the agent receives a scoped access token instead of the raw key.

### What size limits apply to images and text?

Images must be at least 128 pixels on the shorter side and at most 4 MB in size. Text inputs are capped at 1024 characters per call. Calls that exceed these limits return an error code; the caller is responsible for resizing or chunking before retrying.

### What are the rate limits for the Content Moderator Client?

Limits depend on the pricing tier of the Cognitive Services account hosting Content Moderator. The F0 free tier allows 1 transaction per second and 5,000 transactions per month; the S0 paid tier allows higher throughput. The spec does not declare separate rate-limit headers.

### How do I add a custom term and start matching it through Jentic?

Search Jentic for 'add term to content moderator list', POST the term to /contentmoderator/lists/v1.0/termlists/{listId}/terms/{language}/{term}, then POST /contentmoderator/lists/v1.0/termlists/{listId}/RefreshIndex. The new term is matched on subsequent text scans. Run pip install jentic to get the SDK.

### Is the Content Moderator Client free?

There is a free F0 tier (5,000 transactions per month, 1 TPS). Paid S0 tiers bill per 1,000 transactions across image, text, and review operations. Pricing follows the Azure Cognitive Services Content Moderator price list.

### Can I limit what my agent is allowed to do with the Content Moderator API?

Yes. Because Jentic One is self-hosted, your own rules decide which Content Moderator operations the agent may call and which subscription key it may use. You can allow read-only scanning of images and text while withholding write actions such as adding a term, calling RefreshIndex, or submitting content to human review. Since list and term identifiers travel in the URL path, a rule can also pin the agent to a single blocklist rather than every list in the account.
