OpenAI Moderation API · Updated 16 October 2026

OpenAI’s Moderation API is free. When do you need something else?

OpenAI’s moderation endpoint, omni-moderation-latest, is free and checks text and images, returning true or false and a score for each of its 13 categories. If that covers what your app needs, keep using it. A paid API earns its place when you need what OpenAI’s moderation docs do not list: a separate profanity flag, documented language support, image flags for scams and hateful imagery, or a review screen for moderators with your own actions and webhooks.

The facts

What OpenAI’s endpoint gives you

From OpenAI’s own pages, as read on 16 October 2026: the omni-moderation model page, the moderation guide, the Batch guide and the deprecations page. Detectivision is not affiliated with OpenAI.

WhatWhat OpenAI saysOpenAI page
PriceThe guide says the endpoint “is free to use”. The model page calls moderation models “free models designed to detect harmful content”.Moderation guide; model page
InputsText and images, with image files up to 20 MB. Audio and video: “Not supported”.Moderation guide; model page
Categories13: harassment, harassment/threatening, hate, hate/threatening, illicit, illicit/violent, self-harm, self-harm/intent, self-harm/instructions, sexual, sexual/minors, violence, violence/graphic. Seven are text only.Moderation guide
OutputA flagged verdict, then for each category: true or false (categories), a score from 0 to 1 (category_scores) and the input types the score applies to (category_applied_input_types).Moderation guide
Word positionsNone in the documented output: the fields above describe the whole input.Moderation guide
LanguagesNeither page lists supported languages.Moderation guide; model page
Free tier limits250 requests a minute, 5,000 a day, 10,000 tokens a minute.Model page
Build tier limits500 requests a minute, 20,000 tokens a minute.Model page
Launch tier limits2,000 requests a minute, 250,000 tokens a minute.Model page
Grow tier limits5,000 requests a minute, 500,000 tokens a minute.Model page
BatchThe Batch API also takes moderation requests, as a file, with a separate pool of higher rate limits and a 24-hour turnaround.Batch guide
Current snapshotomni-moderation-latest points to omni-moderation-2024-09-26, the only snapshot listed.Model page
Older modelstext-moderation-007, text-moderation-stable and text-moderation-latest were shut down on 27 October 2025, with omni-moderation named as the replacement.Deprecations page
Score changesOpenAI plans to keep upgrading the model, so “custom policies that rely on category_scores may need recalibration over time.”Moderation guide

OpenAI’s rate-limit guide says limits apply per organization and per project, and that an organization’s usage tier rises as its total credit purchases grow.

Stay with OpenAI

When OpenAI’s endpoint is enough

  • Its categories match your rules

    Your content is text and images, in languages you have tested, and the 13 categories cover what your policy forbids.

  • You want a score for everything

    OpenAI returns a score for every category on every call, so you can draw any line, a low one included. Detectivision returns only the flags raised, from a confidence of 0.5 up.

  • You already call OpenAI models

    OpenAI’s guide says moderation scores can come back with a generated response, without a separate request.

  • Your volume fits your tier

    On the Free tier that means 250 requests a minute and 5,000 a day. The paid tiers raise the per-minute limits, and the Batch API has its own pool for work that can wait.

  • You need categories Detectivision lacks

    OpenAI’s illicit and illicit/violent categories, the threatening variants, sexual/minors, violence in text and self-harm in images have no Detectivision flag.

  • The budget is zero

    OpenAI’s endpoint is free. Detectivision is paid, with a free trial on its Basic plan.

Need more?

When you need more

Each point puts what OpenAI documents next to what Detectivision does today.

  • Swearing as its own flag

    OpenAI’s 13 categories have no profanity category. Detectivision has a profanity flag for swear words, aimed at someone or not, and a separate insult flag for attacks on a person.

  • OpenAI’s moderation guide and model page list no languages. Detectivision documents its text checks for English, Spanish, Portuguese, French, German, Italian, Turkish, Arabic, Russian and Hindi.

  • OpenAI scores hate in text only and has no scam category. Detectivision’s image flags are hate, scam, sexual and violence.

  • OpenAI’s guide suggests using its scores for routing, audit trails or human-review queues; it does not describe a review screen. In Detectivision, moderators open a request in the dashboard’s Logs and take your own actions, such as Approve or Ban.

  • OpenAI’s Batch API takes moderation requests as a file and returns a results file within 24 hours. Detectivision takes each item on its own with "async": true, at half the price of an answer given at once, and sends each result to your webhook, signed, with your metadata.

Category by category

Where OpenAI’s categories go

OpenAI scores 13 categories; Detectivision raises flags, each with its confidence. Most categories have a flag, some do not, and four flags have no OpenAI category. OpenAI’s categories as read on 16 October 2026.

OpenAI categoryDetectivision flagNote
harassment (text)insult (text)The insult flag covers attacks on one person; hate, racism and sexism cover attacks on a group for who they are. OpenAI also counts hate against other groups as harassment.
harassment/threatening (text)insult (text)The threat itself has no flag of its own.
hate (text)hate, racism, sexism (text)Three flags, so your rules can treat them apart.
hate/threatening (text)hate, racism, sexism (text)The threat itself has no flag of its own.
illicit (text)noneThe bad_habits flag covers drug use, drinking, smoking or gambling talked up, not instructions for crimes.
illicit/violent (text)noneNo flag for weapons or violence in text.
self-harm (text, images)self_harm (text)Images have no self-harm flag.
self-harm/intent (text, images)self_harm (text)One text flag for talk of suicide or self-harm.
self-harm/instructions (text, images)self_harm (text)One text flag for talk of suicide or self-harm.
sexual (text, images)sexual (text, images)Sexual language and sexual harassment in text; nudity and sexual content in images.
sexual/minors (text)noneNo flag for minors. Neither API is built to detect child sexual abuse material.
violence (text, images)violence (images)Text has no violence flag.
violence/graphic (text, images)violence (images)One image flag for violence; graphic violence has no flag of its own.

The other way round: profanity (swear words) and bad_habits (drug use, drinking, smoking or gambling talked up) in text, and hate and scam in images, have no OpenAI category.

Before and after

The same check, both ways

OpenAI
curl https://api.openai.com/v1/moderations \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "omni-moderation-latest",
    "input": "Sen tam bir salaksın, sus artık."
  }'
Detectivision
curl https://api.detectivision.ai/api/v1/moderation \
  -H "Api-Key: $DETECTIVISION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "text_moderation",
    "input": "Sen tam bir salaksın, sus artık.",
    "mode": "detect"
  }'

OpenAI takes a Bearer token and a model name. Detectivision takes its key in the Api-Key header and the type of content in type; without flags, every text flag of your account is checked.

Reading the answer

What comes back

The fields OpenAI’s moderation guide documents, next to the fields of a Detectivision answer (docs: Responses).

WhatOpenAIDetectivision
Verdictresults[0].flaggedflagged
Categoriescategories: every category, true or falseflags: only the flags raised
Scorescategory_scores: every category, 0 to 1flags[].confidence: 0 to 1, only for the flags raised, from 0.5 up
Input typecategory_applied_input_types: text, image or both, per categorytype: one type per request, text_moderation or image_moderation
CoverageEvery category on every call; text-only categories score 0 when you send an image alonechecked and unchecked: what was looked for and what could not be; a partial result is free
CostNot in the documented answer (the endpoint is free)usage.charged and usage.remaining, in credits
Your own dataNot in the documented answermetadata: your JSON, returned unchanged in the answer, in Logs and in webhooks
Request idid, a string such as modr-…id, an integer
Detectivision’s answer

At once, or later by webhook

Example response (format from the API reference; values illustrative)
{
  "id": 2210,
  "type": "text_moderation",
  "mode": "detect",
  "status": "completed",
  "flagged": true,
  "flags": [{ "flag": "insult", "confidence": 0.93 }],
  "checked": [
    "bad_habits",
    "hate",
    "insult",
    "profanity",
    "racism",
    "self_harm",
    "sexism",
    "sexual"
  ],
  "unchecked": [],
  "tookMs": 640,
  "usage": { "charged": 2, "remaining": 5126 }
}
The same check, async
curl https://api.detectivision.ai/api/v1/moderation \
  -H "Api-Key: $DETECTIVISION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "text_moderation",
    "input": "Sen tam bir salaksın, sus artık.",
    "mode": "detect",
    "async": true,
    "metadata": { "commentId": "c_981" }
  }'

In Detectivision’s flags, a rude word aimed at someone, such as salak (idiot), is an insult; profanity is for swear words. Sent async, the same check costs half: the API answers 202 with the request’s id, and the result comes by webhook with your metadata.

Rate limits

Why OpenAI answers 429, and what to do

OpenAI’s error-code guide lists the 429 errors its API can return, as read on 16 October 2026, without saying which of them the free moderation endpoint returns. Only the first two are fixed by slowing down and retrying: the guide says “Retrying billing, spend, or quota errors won’t restore API access.”

429What OpenAI says it meansWhat to do
Rate limit reached for requestsYou are sending requests too quickly.Pace your requests and follow the Retry-After header when it is present.
Slow down (slow_down)Your request rate increased too quickly. It can happen even within your per-minute limits.Follow Retry-After, reduce the rate, then increase it gradually.
Credit balance exhaustedYour organization has no prepaid credits remaining.Add credits. Retrying does not help.
Spend or usage limit reachedYour organization or project reached its spend limit, or the organization reached its OpenAI-assigned usage limit.Raise or remove the spend limit, or ask OpenAI for a higher usage limit.

On the Free tier the moderation endpoint allows 5,000 requests a day. OpenAI’s first paid tier, Build, starts at $5 in total credit purchases, and its Batch API takes moderation requests under a separate, higher pool of rate limits. Detectivision also answers a 429 with a Retry-After header; its documented limit is 1,200 calls a minute per API key.

Limits

What Detectivision does not do

  • Audio, video and live streams

    Coming soon. Today the API checks text and images.

  • Word positions and masking

    Current flags judge the whole text or image: no word positions, no masked text, no boxes.

  • English, Spanish, Portuguese, French, German, Italian, Turkish, Arabic, Russian and Hindi. Text in other languages is checked, but the results are not reliable.

  • A finding under a flag’s 0.5 threshold never comes back. Act above your own line on the confidence of the flags raised.

  • Some of OpenAI’s categories

    No flag for instructions for crimes, for threats or for sexual content involving minors, and no detection of child sexual abuse material.

  • Detectivision never bans or removes anything itself. Your system gets a moderation.action webhook and carries the action out.

  • It is paid in credits. Basic is $49 a month with 10,000 text and 10,000 image credits, and starts with a free trial. A text costs one credit per started 2,500 characters by webhook, twice that at once.

Related
Questions

Frequently asked

Does the moderation endpoint work on OpenAI’s Free tier?

Yes. OpenAI’s model page lists Free tier limits for it, as read on 16 October 2026: 250 requests a minute, 5,000 a day and 10,000 tokens a minute. OpenAI’s rate-limit guide says the Free tier is for users in an allowed geography.

Why does OpenAI’s moderation endpoint return 429?

OpenAI’s error-code guide lists the 429s its API can return, without saying which the free moderation endpoint returns: requests sent too quickly, a rate that rose too fast (slow_down), no prepaid credits left, and spend or usage limits. Waiting for Retry-After helps only with the first two. For work that can wait, the Batch API has its own, higher limits.

Which languages does OpenAI’s moderation endpoint support?

OpenAI’s moderation guide and model page list no supported languages, as read on 16 October 2026. Test it on your own messages before you rely on it. Detectivision documents its text checks for English, Spanish, Portuguese, French, German, Italian, Turkish, Arabic, Russian and Hindi.

Does OpenAI’s endpoint say which words were flagged?

Not in its documented answer, which gives categories, scores and the input types each score applies to, for the whole input. Detectivision’s current flags also judge the whole text, so neither gives word positions today.

Can I use OpenAI’s endpoint and Detectivision together?

Yes. They are separate HTTP calls, so you can send the same content to both: for example OpenAI for illicit content or threats, and Detectivision for profanity and scam images. Each Detectivision check uses credits; OpenAI’s endpoint is free.