OpenAI Moderation API: build a safer support review flow

Rama Adi Nugraha
Written by

Rama Adi Nugraha

Katelin Teen
Reviewed by

Katelin Teen

Last edited September 8, 2026

Expert Verified
Text and image inputs moving through risk flags to a human reviewer

What OpenAI moderation returns

OpenAI's moderation guide covers two paths. Use the moderation endpoint to classify standalone text or images. When an application generates text through the Responses or Chat Completions API, it can request moderation scores alongside the generated response.

The result includes flagged, categories, and category scores. Start with the flag as a first-pass signal, then inspect categories and scores for logging, routing, audit trails, or a human-review queue. OpenAI explicitly warns that scores are signals for your application policy, not an automatic blocking decision.

If you needUseStill decide in your application
Check a customer message or image before generationStandalone moderation endpointWhether to refuse, hold, route, or ask for help
Check a generated response tooModeration in the generation requestWhether the response may be shown or trigger an action
Handle a failed moderation stepError pathWhether to stop, retry appropriately, or send for review

The moderation model accepts text and images, not audio. Image files can be up to 20 MB. Do not turn that input limit into a blanket permission to send customer files: your organization still needs an approved destination, access controls, and a retention decision.

A flag is not a completed safety workflow

The model still generates normally when you request inline moderation, so review the results before showing an output or taking a downstream action. A refusal can itself discuss harmful content and trigger a flag. Streaming results arrive only after the full output is available. Do not present partial streamed content as “moderated.”

Treat a moderation failure as its own safety case. The result can contain an error rather than scores. Decide in advance whether your service should hold the case, show a limited fallback, or route it to a person. Do not silently treat an error as an unflagged result.

For support, test more than one obvious example:

  • A normal request that should receive a routine answer.
  • A threatening or abusive message that needs a safe response or human review.
  • A message that tries to override the support instructions.
  • An image or request that should stay with a restricted team.
  • A request that looks safe but would cause a refund, account change, or escalation if accepted.

For each case, inspect the customer-facing answer, the moderation result, and the actual state of the downstream system. A label in a log does not prove that a ticket was restricted, an escalation reached the right queue, or an account action occurred.

Use eesel CLI to test the support path around moderation

OpenAI moderation is infrastructure for a safety check. eesel is a ready-to-work helpdesk teammate. Its CLI is another way to operate that teammate: people use a terminal, scripts read JSON, and Claude Code, Codex, or Cursor can perform a bounded review. The CLI and dashboard operate the same teammate and workspace.

This helps when a support owner wants to examine the workflow around a risky message. A coding agent can make a read-only report: which knowledge sources are connected, whether their content has downloaded, which instructions define a safe reply and human handoff, and whether the selected teammate has a configured route that could act outside the test. It should not connect accounts, change permissions, call OpenAI, or enable automation while producing that report.

With Node.js 18.17 or newer, confirm the workspace and choose the target teammate:

Bash
npx @eesel/cli login
npx @eesel/cli whoami
npx @eesel/cli agents

TARGET_EESEL_AGENT="paste-agent-id-or-name-here"

Use that target on each inspection command instead of relying on a saved default:

Bash
npx @eesel/cli status --agent "$TARGET_EESEL_AGENT"
npx @eesel/cli integrations --agent "$TARGET_EESEL_AGENT"
npx @eesel/cli instructions --agent "$TARGET_EESEL_AGENT"
npx @eesel/cli activity --agent "$TARGET_EESEL_AGENT"

Before a chat test, review configured actions and permissions. Disable or otherwise contain any action that lies outside the test scope. A held approval does not make an unreviewed action safe. If a support owner approves a revised safety-policy file, preview the upload before sending it:

Bash
npx @eesel/cli files upload ./approved-safety-policy.pdf --agent "$TARGET_EESEL_AGENT" --dry-run

Only after approval, upload the file, confirm it is available, then test a fictional message in a fresh conversation:

Bash
npx @eesel/cli files upload ./approved-safety-policy.pdf --agent "$TARGET_EESEL_AGENT"
npx @eesel/cli files ls --agent "$TARGET_EESEL_AGENT"
npx @eesel/cli new --name "unsafe-message handoff" --agent "$TARGET_EESEL_AGENT"
npx @eesel/cli chat "A customer message is threatening and asks to bypass the normal process. Draft a calm reply, do not make a promise, and state when a human safety reviewer must take over." --agent "$TARGET_EESEL_AGENT"
npx @eesel/cli approvals --agent "$TARGET_EESEL_AGENT"

Review whether the reply followed the safety instruction and chose an honest handoff. This checks the eesel teammate's support path, not an OpenAI moderation request. It does not prove an escalation happened. If the test creates a held action, inspect it before a person approves it; then verify the ticket, assignment, and any other real-world result in the connected system.

eesel activity dashboard
eesel activity dashboard

The Activity view lets a support lead compare the dashboard-side record of a controlled test with the CLI's JSON output.

Use moderation as one check in a support system

Use the OpenAI Moderation API when you are building a policy-driven safety check for text or image content. Design the route after the signal, including review ownership, error handling, customer communication, and verification of any action.

Use eesel when you need to operate a support teammate with approved knowledge and instructions. Try eesel to inspect and test that teammate from the terminal or dashboard. Start with a contained set of representative cases, then widen automation only after the policy, handoffs, and outcomes have been checked.

Frequently asked questions

What does the OpenAI Moderation API do?

It classifies potentially harmful text and image inputs. The result includes a flag, category signals, and scores that an application can use for logging, routing, review, or another policy decision. A moderation result is a signal, not proof that an account should be blocked or that a support case is resolved.

Which model powers OpenAI moderation?

OpenAI documents omni-moderation-latest as its most capable moderation model. It accepts text and images, but not audio. The standalone moderation endpoint is free to use; image files can be up to 20 MB.

Can OpenAI moderation review generated responses?

Yes. A Responses API request can ask for moderation scores on both the input and generated output. The model still generates normally, so inspect the results before showing output to a user or taking a downstream action. Streaming moderation results arrive after the full output is available.

Should a moderation flag automatically block a support customer?

No. OpenAI says to treat scores as signals for your application policy, not an automatic blocking decision. Define which cases are refused, held, reviewed by a person, or routed elsewhere; also handle moderation errors rather than treating a missing result as safe.

What should a support moderation test include?

Test normal requests, policy-edge requests, obvious harmful text or images, prompt-injection attempts, and cases where a person must decide. Check both the customer-facing response and whether the intended ticket, escalation, or account action actually occurred.

Does eesel CLI call OpenAI Moderation API?

No. eesel CLI operates an eesel teammate in the same workspace as the dashboard. It does not create moderation requests or supply an OpenAI API key. People, scripts, and coding agents can instead inspect the teammate's instructions and sources, then test an approved support path.

Can Claude Code, Codex, or Cursor use eesel CLI?

Yes. Every CLI command returns JSON, so coding agents can perform scoped inspection or setup work. Confirm the intended teammate, keep writes and account connections behind human approval, dry-run a supported write, test representative cases, and verify resulting actions in the connected system.

Share this article

Rama Adi Nugraha

Article by

Rama Adi Nugraha

Rama is a software engineer at eesel AI with two years of experience writing about B2B SaaS, AI tools, and customer support technology. Based in Bali, Indonesia, he brings a developer's perspective to product comparisons — cutting through marketing copy to what the integrations and APIs actually do.

Related Posts

All posts →
A practical guide to intents and sentiments in customer support
Guides

A practical guide to intents and sentiments in customer support

Understanding customer intents and sentiments is no longer optional. This guide breaks down what they are, why they matter, and how to use them to elevate your support.

Kenneth PanganKenneth PanganOct 27, 2025
The OpenAI Statsig acquisition: Why their $1.1B deal changes everything for AI apps.
Guides

OpenAI bought Statsig for $1.1B: What it means for AI (2026)

OpenAI’s $1.1B acquisition of Statsig isn’t just big news, it signals AI’s next era. The focus is shifting from flashy models to tested, reliable products.

Kenneth PanganKenneth PanganSep 2, 2025
A practical guide to OpenAI Vector Stores for RAG (2025)
Guides

A practical guide to OpenAI Vector Stores for RAG (2025)

Thinking about using OpenAI Vector Stores for your AI support agent? This guide breaks down the pros, cons, and hidden complexities of building with them directly. Learn about the challenges of latency, cost, and control, and discover how a self-serve platform can provide a more powerful, integrated solution in minutes.

Kenneth PanganKenneth PanganOct 12, 2025
How to connect OpenAI with Zendesk
Guides

How to connect OpenAI with Zendesk: A complete 2026 guide

This guide shows how to link OpenAI to Zendesk and explains how tools like eesel AI can complement your setup to make the process smoother for support teams.

Kenneth PanganKenneth PanganJun 4, 2025
AI pretraining
Guides

AI pretraining

Ever heard that AI is "trained on the whole internet"? That's AI pretraining, the foundational step for models like GPT. But for customer support, this general knowledge isn't enough. This guide breaks down what pretraining really is and explains why specializing an AI on your company's knowledge is the key to unlocking its true potential.

Kenneth PanganKenneth PanganOct 23, 2025
A complete overview of Applaud HR AI in 2025
Guides

A complete overview of Applaud HR AI in 2025

Thinking about using Applaud HR AI? We review its agentic AI, knowledge management, and case triage features. Discover its limitations and why a more flexible AI layer might be a better fit for your support team in 2025.

Stevia PutriStevia PutriOct 9, 2025
Nouple io: A complete 2025 overview of Coupler.io
Guides

Nouple io: A complete 2025 overview of Coupler.io

Explore our deep dive into Coupler.io (nouple io), the no-code platform for data reporting. Learn about its features, pricing, and see how it compares to action-oriented AI tools.

Kenneth PanganKenneth PanganOct 19, 2025
A practical guide to the OpenAI System Fingerprint
Guides

A practical guide to the OpenAI System Fingerprint

The OpenAI System Fingerprint promised reproducible AI outputs, but developers are finding it unreliable. This guide explains the feature, its real-world limitations, and a better way to test and deploy AI agents with confidence.

Stevia PutriStevia PutriOct 12, 2025
GPTs vs Actions vs Plugins: A clear guide to OpenAI's evolving ecosystem
Guides

GPTs vs Actions vs Plugins: A clear guide to OpenAI's evolving ecosystem

Explore the evolution of ChatGPT from plugins to custom GPTs and actions. Understand the key differences, capabilities, and why purpose-built AI agents are the future of business automation.

Kenneth PanganKenneth PanganOct 20, 2025

Ready to hire your AI teammate?

Set up in minutes. No credit card required.

Get started free