OpenAI Moderation API: omni-moderation-latest, categories, pricing and limits
The OpenAI Moderation API tells you whether a piece of text or an image is potentially harmful, and in which category. It is free, quick to call and a common first step for teams that need to moderate user content. This guide sums up what it detects, what it returns, and what it leaves for you to build.
The short answer
- Model:
omni-moderation-latest, which accepts text and image inputs. It does not classify audio. - Price: free. OpenAI states that "the moderation endpoint is free to use", and image files can be up to 20 MB.
- Output: a
flaggedboolean plus, for each category, a boolean and a confidence score between 0 and 1. - Categories: 13, six of which also apply to images.
How to call it
Send a POST request to the /v1/moderations endpoint with the model name and your input.
curl https://api.openai.com/v1/moderations -H "Content-Type: application/json" -H "Authorization: Bearer $OPENAI_API_KEY" -d '{
"model": "omni-moderation-latest",
"input": "The comment you want to check"
}'
You can also turn on inline moderation through the moderation parameter of the
Responses API. In that case the result contains separate input and
output sections, and either one can be an error object instead of scores.
What the response contains
flagged:trueif the model classifies the content as potentially harmful,falseotherwise.categories: one boolean per category, telling you whether that category is violated.category_scores: one confidence score per category, from 0 to 1. Higher means more confident.category_applied_input_types: for each category, which input types (text, image) the score applies to.
The 13 categories
When you send only an image, text-only categories return a score of 0.
| Category | What it covers | Inputs |
|---|---|---|
| harassment | Harassing language towards any target. | Text |
| harassment/threatening | Harassment that also includes violence or serious harm towards any target. | Text |
| hate | Hate based on race, gender, ethnicity, religion, nationality, sexual orientation, disability or caste. Hateful content aimed at non-protected groups counts as harassment. | Text |
| hate/threatening | Hateful content that also includes violence or serious harm towards the targeted group. | Text |
| illicit | Advice or instructions on how to commit illicit acts. | Text |
| illicit/violent | Illicit content that also references violence or procuring a weapon. | Text |
| self-harm | Content that promotes, encourages or depicts acts of self-harm. | Text and images |
| self-harm/intent | The speaker expresses that they are engaging, or intend to engage, in self-harm. | Text and images |
| self-harm/instructions | Content that encourages self-harm or gives instructions on how to do it. | Text and images |
| sexual | Content meant to arouse sexual excitement, or that promotes sexual services (sex education and wellness excluded). | Text and images |
| sexual/minors | Sexual content that includes an individual under 18. | Text |
| violence | Content that depicts death, violence or physical injury. | Text and images |
| violence/graphic | Content that depicts death, violence or physical injury in graphic detail. | Text and images |
Points to keep in mind
- OpenAI warns that custom policies relying on
category_scoresmay need recalibration over time, as the model evolves. - Scores are not included in partial streamed output deltas when you use inline moderation.
- With tool calls, arguments and tool outputs are moderated, but tool names, descriptions and schemas are not.
- Do not send known or suspected child sexual abuse material to the Moderation API.
What the Moderation API leaves to you
A score is not a moderation decision. Once you have it, you still need to decide where to set the threshold for each category, what to do with the comments in between, how to apply rules that are specific to your community, and how to explain each removal to its author. Under the Digital Services Act, hosting services must give a statement of reasons for every removal and say whether automated means were used.
OpenModeration adds that missing layer, on top of its own moderation AI cross-checked by other models: rules written in plain language, two thresholds per category with a grey zone reviewed by our team, a console where you see every decision in real time, a written reason for every decision and a complete audit log. When a better or cheaper AI model comes out, we plug it in, without any change to your integration.
Source: OpenAI Moderation guide, consulted on October 20, 2026.
FAQ
Is the OpenAI Moderation API free?
Yes. OpenAI states that the moderation endpoint is free to use. Image inputs can be up to 20 MB.
What is omni-moderation-latest?
omni-moderation-latest is OpenAI's current moderation model. It accepts text and image inputs, but it does not classify audio.
Which categories does the OpenAI Moderation API detect?
Thirteen: harassment, harassment/threatening, hate, hate/threatening, illicit, illicit/violent, self-harm, self-harm/intent, self-harm/instructions, sexual, sexual/minors, violence and violence/graphic. Six of them also apply to images.
What does the OpenAI Moderation API not do?
It returns scores and flags, nothing more. Deciding what to hide, writing your community rules, reviewing borderline cases, explaining each decision to the author and keeping an audit trail for the DSA are left to you. OpenModeration adds that layer, with its own moderation AI cross-checked by other models and doubtful cases handled by our team.