Moderation

Stream Moderation screens text, images and video with AI engines and configurable rules, and queues borderline cases for human review. Use it with Stream Chat, or send any platform's content through the API.

Start here

How the pieces fit together

Your backend sends content through a moderation check, and the response recommends an action based on your policy: keep the content, queue it for human review, or remove it. The getting started guide walks through creating your first policy.

flowchart LR
  content[User content] --> check[Moderation check]
  check --> rec{recommended_action}
  rec -->|keep| keep[Your app keeps it]
  rec -->|flag| queue[Review queue]
  rec -->|remove| removed[Your app removes it]
  removed -.->|for audit and appeals| queue

SDKs

Server Side SDKs

Moderation is configured, queried and enforced from your backend.

Build with AI

Your AI agent can work with Stream from the terminal with the Stream CLI. There's also an Agent Skills pack so it can look up docs and configure your app.

curl -fsSL https://getstream.io/cli.sh | bash
getstream skills

Platform

Users, auth and the rest of the account-level machinery work the same in every Stream product, so they are documented once in the platform docs. Moderation setups touch these first:

FAQ

Does Moderation require Stream Chat?

No. The Chat integration is built in, but the API checks content from any platform.

What can it check?

Text, images and video, judged by AI engines and the rules in your policy.

Does AI remove content on its own?

Your policy decides. A check returns keep, flag or remove; flagged content waits in a review queue for a human.

Is there a client SDK?

No. Moderation is configured, queried and enforced from your backend with a server-side SDK or the REST API.

Can I read these docs as markdown?

Append .md to any page URL. /llms.txt indexes every page.