The latest Moderation api releases and improvements.

Connect Claude, ChatGPT, Cursor, VS Code or any MCP client to Moderation API, and let your agent work your queues, authors and policies.
Most moderation work happens in the dashboard, one item at a time. Your AI agent could do the first pass, but it had no way into your account.
Today, we're launching the Moderation API MCP server at https://mcp.moderationapi.com/mcp. It is hosted, so there is nothing to install, and you don't need an API key: you sign in to Moderation API in the browser when it opens.
Setup steps for every client are on the MCP server page in the dashboard, under Configure → MCP server.
Claude and Claude Desktop. Moderation API is in the Claude connectors directory. Open Moderation API in the directory, connect it and sign in.
Claude Code. Run claude mcp add --transport http moderation-api https://mcp.moderationapi.com/mcp, restart Claude Code, then type /mcp and sign in. Or install the plugin, which adds the MCP server and the setup skill together: /plugin marketplace add moderation-api/skills, then /plugin install moderation-api@moderation-api.
ChatGPT. Turn on Developer mode under Settings → Apps & Connectors → Advanced settings. Back in Apps & Connectors, click Create, enter the name Moderation API, paste the URL and set Authentication to OAuth. You need a ChatGPT plan that has developer mode.
Cursor. Click Add to Cursor on the MCP server page, or add the URL to .cursor/mcp.json. Then click Connect next to moderation-api in Cursor Settings → MCP.
VS Code. Click Add to VS Code on the MCP server page, or run code --add-mcp with the URL. Start the server and sign in when the browser opens.
Other clients. Add a remote MCP server with the URL.
The first time, your browser opens: sign in, choose an organization and approve the connection. Owners, admins and developers can connect.
Test content. "Send three test messages to Moderation API, one clean, one spam and one with an insult, and show me what got flagged and why."
Triage the queue. "Go through my review queue and show me the items you are not sure about." It can resolve up to 100 items at a time.
Check an author. "Check user history and suspend them if it's a pattern."
Tune a policy from examples. Give it the messages that got through and the ones flagged by mistake. It tests them without storing anything, then adjusts thresholds or wordlists.
Respond to an incident. Find a scam raid, block the authors and add the domains to a blocklist.
Report. "How did moderation go this week? Which policy flags the most?"
The server ships these as ready-made prompts: triage-queue, check-author, tune-policy, incident-response and moderation-report. More examples are in the docs.
Already moderating content? Your coding agent can review the integration you have and fix what's wrong. Install the Moderation API skill with npx skills add moderation-api/skills (the Claude Code plugin above includes it), then ask your agent to "review my Moderation API integration and fix any mistakes".
The skill checks your code against the mistakes we see most often:
Acting on the wrong field. Reading evaluation.flagged instead of recommendation.action, which skips your rules, thresholds and review routing.
No handling for review. Treating review the same as allow or reject.
Gaps in coverage. Moderating text only, and missing images, profile names, bios and uploads.
Missing webhooks. Without them, your app never hears what a moderator decided later, or that an author was blocked.
Unsafe webhook handling. Not checking the signature on the raw body, or handling a retried event twice.
Missing context. No authorId, conversationId or stable contentId, so author history, conversation context and edits are lost.
Risky calls. Calling from the browser, no timeout, or blocking users when the API can't be reached instead of failing open.
Your agent asks before each change and never asks for your keys in the chat. Starting from scratch? Ask it to "set up Moderation API" and it writes the integration for you. Read more about the skill.

Train a model on your own messages, so moderation follows the rules only your platform has.
Built-in policies know what spam or hate looks like in general. They don't know your rules, like whether sharing a phone number is fine on your platform or a reason to reject.
Today, you can teach them. A custom model learns the labels you care about from your own messages, and you build it yourself in Model Studio.
Train on up to 25,000 examples: each model learns from up to 25,000 labelled messages, up from 5,000.
Make one model per decision: for example, one for off-platform payments and one for contact sharing. Each model has its own labels and examples.
Helps you label examples in real time: after each label has 10 examples, the model suggests labels as you work. Press Enter to accept a suggestion.
Model Studio walks you through each model in four steps, and saves your work as you go.

Labels. Add up to 10 labels and describe each one the way you would to a new moderator. Mark the label for normal messages as Means the message is fine, so it never flags.
Examples. Bring in messages from wherever you have them:
A review queue, where your reviewers' decisions become labels, so there's the least work.
A CSV or Excel file with one column of messages, and a label column if you have one.
Recent messages your projects already sent us, for when you have nothing curated yet.
Another model, copying its examples and labels.
Write them yourself, one message at a time.
Labelling. Go through the messages that have no label yet. Once each label has 10 examples, the model starts suggesting labels.
Train. Each label needs at least 10 examples to train, and around 100 to be reliable.

An honest score. One in five examples of each label is kept aside during training. The model labels those messages it hasn't seen, and the score is how often it agreed with you, shown for each label.
See where it goes wrong. Every test message the model got wrong is listed, with what it said and how sure it was. Fix the labels or add examples, then retrain.
Try a message. Type any message to see how the model labels it before you use it anywhere.
Your examples stay yours. Export a model's examples as a CSV at any time.
Add a trained model to a channel: go to Policies and open Custom models. It starts sorting messages from the next one. When you retrain, channels keep using the current version until the new one is ready.
Open Model Studio and select New model to start.

Record which moderator allowed or rejected content in your own tool, and add the decision to your casebook.
If your team reviews content in its own tool, you send the result to us with an allow or reject action. Until now, that action was not recorded as any person's, and it never became a casebook case.
Now you can name the moderator, and the decision counts the same as one made in the review inbox.
await client.content.reject({
id: 'post-123',
body: { reason: 'Spam', moderator: '[email protected]' },
});moderator takes the user ID or email of a member of your organization. The action is recorded as theirs. If no member matches, the request fails with a 400 error.
createCasebookCase controls the casebook. A decision with a moderator becomes a case by default. Set it to true to add a decision without a moderator, which is recorded as System. Set it to false to keep a decision out.
Both fields work on content.allow(), content.reject() and actions.execute().
Calls that send neither field work as before. Automated actions stay out of your casebook.

New major versions of the TypeScript, Python, PHP and Ruby SDKs, and modapi, a command-line interface for the whole API.
Our SDKs covered most of the API, but not all of it, and each language did some things its own way.
Today, we're releasing new major versions of all four SDKs and a new command-line interface, generated from the same OpenAPI spec as our API reference. When the API changes, the SDKs, the CLI and the docs change with it.
The whole API in every SDK. Content, authors, review queues, actions, wordlists, webhooks, and the management API for projects and channels.
Automatic pagination. List methods fetch the next page for you.
Clear errors. Every error has a specific code, like quota_exceeded or author_not_found, a request ID for support, and a link to the docs.
Retries and timeouts. Requests retry with backoff on rate limits and server errors.
Webhook verification in every language, with the secret read from MODAPI_WEBHOOK_SECRET.
modapi, the Moderation API CLI. Moderate content and manage your setup from the terminal, in scripts and in CI. It is built for AI coding agents too: every command and request body is described by the CLI itself.
These are major versions: @moderation-api/sdk 5.0, moderation_api 2.0 for Python, moderation-api/sdk-php 1.0 and moderation_api 3.0 for Ruby. List responses and error bodies changed, and a few methods were renamed. Each SDK's release notes list the changes.

See what a policy would flag on your own content before you turn it on.
Turning on a new policy used to be a guess. The threshold preview only had data for policies you had already enabled, so for a new one you switched it on and waited for your review queue to show whether it was right.
Now every policy scores your content in the background, including the ones you haven't enabled. Open any policy and it already has your recent traffic behind it.
See the impact. Go to Policies, open a policy and select the Threshold tab. The histogram shows the policy's scores for recent items in that channel, and the counts show how many it would have flagged.
See the messages. Highlight part of the histogram or press Would have flagged to see the actual messages the policy would have caught.
Set the threshold first. Drag the slider and the counts update before you save, so the threshold is based on your own content.
Turn it on when it looks right. Until then nothing changes for your users: a policy you haven't enabled doesn't flag anything.

Create, change, copy and delete projects and channels from your own code.
Teams that run moderation for many products or customers set up the same projects and channels again and again, by hand, in the dashboard.
Today, you can do it over the API.
Create an organization key. Go to Settings → API keys. An organization key manages projects and channels across the organization. It cannot moderate content, and project keys cannot manage projects.
Give it only the access it needs. Pick read or write access for projects and channels, limit the key to some projects, and set when it expires.
Manage projects. List, create, update and delete projects. A new project comes with a channel, a review queue and a secret key, returned in the response.
Manage channels. List, create, update and delete the channels in a project, and change their content type, flagging mode and media settings.
Copy a setup. Duplicate a project to get its settings, channels, policies, rules, actions and queues in a new project with its own key. Duplicate a channel to try a change next to the original.
Roll keys without downtime. Rolling a key gives you a new one and keeps the old one working for up to 7 days while you switch.
Every key shows when it was last used, and every change made with an organization key shows in Settings → Activity.

Give the Slack bot your own name and avatar, so moderation notices come from someone on your team rather than from a tool.
Telling someone their message broke the rules is a delicate message to get right, and until now it arrived from "Moderation Bot". The wording was yours; the messenger was ours.
Today, the messenger can be yours too.
A name and an avatar, per workspace. Set them under Slack → Bot identity. The bot's messages in channels, and its DMs to authors, carry them from the next flagged message on.
Leave it empty for ours. No name means the bot posts as Moderation Bot, exactly as before.

When you moderate with AI, two things go wrong. It flags content it should not flag. And it misses content it should flag. Either way you spend more time on manual review, or things slip through.
You can tune prompts and thresholds. But the real problem is that the AI does not learn from your reviews. You allow the same kind of item ten times, and the eleventh one still lands in your inbox.
Today we're introducing Casebook. It remembers every decision you make in the review inbox. When similar content shows up again, it makes the same decision for you.
Every item gets one of three recommendations: allow, reject, or review. Casebook works on the third one.
Take a marketplace that bans weapons. An airsoft gun listing gets flagged for firearms and lands in review. You allow it. Casebook records that. The next airsoft listing is allowed without you.
You review as usual: every allow and reject in the review inbox becomes a case. Nothing extra to do.
Casebook looks up new content: when an item arrives, it finds the closest cases and checks how you ruled on them.
It is careful on purpose: one example is not enough. Casebook needs a few agreeing cases before it rules on a pattern, and tells you when it needs more.
It sends the rest to you: if the evidence is thin, or past cases disagree, the item goes to review as before.

Two reviewers, or one mistake, can leave you with similar content ruled both ways. Casebook will not rule on that pattern until you settle it. Open the disagreement and pick one:
Allow all of them.
Reject all of them.
Keep both rulings, when the cases really are different kinds of content.
Every day, Casebook sorts your cases into topics on its own. Open a topic like "Replica firearms" and you see how your team handles that kind of content. There is nothing to set up.

Pin a topic to keep it. A pinned topic keeps its name and is never reorganized. Then go to your rules, pick Casebook → Topic, and decide what happens to it: always review it, always reject it, whatever fits your platform.
Your reviews already go into Casebook. To let Casebook act on them, open your channel's rules and enable the Casebook lookup row. Then test it in the playground: an item flagged for firearms, allowed by Casebook, final recommendation allow.
New channels on Growth and above have this on from the start. Moderation results carry the Casebook verdict, confidence, and topic, so you can see why an item was allowed or rejected.
Open an item and pull the Casebook bookmark at the right edge. It shows the most similar cases and how you ruled on them, so you decide with your history in front of you.

Press Import on the Casebook tab to replay the last 90 days of review decisions, or upload a CSV from another tool. It runs in the background, and cases Casebook already holds are skipped.