# Getting Started

Stream's Moderation API lets you integrate content moderation into any application. This guide walks you through installation, configuration, and your first moderation check.

## Installation

```bash
npm install @stream-io/stream-node
# or
yarn add @stream-io/stream-node
```

## Initialize the Client

```js
const { StreamClient } = require("@stream-io/stream-node");

const client = new StreamClient("YOUR_API_KEY", "YOUR_API_SECRET");
```

## Create a Moderation Policy

Before checking content, create a moderation configuration that defines which rules to apply:

```js
await client.moderation.upsertConfig({
  key: "my_config",
  ai_text_config: {
    rules: [
      { label: "SPAM", action: "flag" },
      { label: "HARASSMENT", action: "remove" },
    ],
  },
  block_list_config: {
    rules: [{ name: "profanity_en", action: "remove" }],
  },
});
```

> For Stream Chat, use config key `chat:messaging`. For Stream Feeds, use `feeds`. See [Configuration](/moderation/docs/node/configuration/policies/) for details.

## Check Content

```js
const response = await client.moderation.check({
  entity_type: "stream:chat:v1:message",
  entity_id: "message-123",
  entity_creator_id: "user-456",
  moderation_payload: {
    texts: ["Hello, this is a test message"],
  },
  config_key: "my_config",
});

console.log(response.recommended_action); // "keep", "flag", or "remove"
```

## Handle the Response

The response includes:

- `recommended_action` -- `"keep"`, `"flag"`, or `"remove"`
- `status` -- `"complete"` or `"partial"` (if async checks are still running)
- `item` -- the review queue item (if content was flagged or removed)

```js
if (response.recommended_action === "keep") {
  // Content is safe, no action needed
} else if (response.recommended_action === "flag") {
  // Content is suspicious, send to review queue
  console.log("Flagged for review:", response.item);
} else if (response.recommended_action === "remove") {
  // Content violates policies, remove it
  console.log("Content removed:", response.item);
}
```

## Next Steps

- [Configuration](/moderation/docs/node/configuration/policies/) -- Advanced policy setup
- [Stream Chat Integration](/moderation/docs/node/integrations/stream-chat/) -- Chat moderation
- [Stream Feeds Integration](/moderation/docs/node/integrations/stream-feeds/) -- Feeds moderation
- [Review Queue](/moderation/docs/node/content-moderation/review-queue/) -- Query and act on flagged content
- [Client Configuration](/moderation/docs/node/guides/client-configuration/) — HTTP defaults, timeouts, and connection pooling


---

This page was last updated at 2026-04-16T15:55:52.092Z.

For the most recent version of this documentation, visit [https://getstream.io/moderation/docs/node/](https://getstream.io/moderation/docs/node/).