Classify content against the content policy
Check text or images against the content policy before you act on them.
OpenAI-compatible: input accepts a string, a batch of strings, or multimodal parts
with image URLs. Each result reports flagged plus per-category booleans and scores,
so you can set your own threshold rather than only trusting the flag.
Images must be PNG, JPEG, GIF or WebP; anything else is rejected up front rather than failing upstream.
Moderation is deliberately not gated by per-model allow-lists or usage caps — it is a safety primitive, and making it refusable would push callers toward skipping the check. Your key’s rate limits still apply.
Authorizations
Enter your MeshAPI key (rsk_...) or, for the admin-keys endpoints, a dashboard session token — sent as Authorization: Bearer <token>.
Headers
Dated version of the API contract to pin this request to. Omit it and the request is served under 2026-08 — the oldest supported version, so an existing integration is never moved by a release. A malformed or unsupported value is rejected with 400 invalid_api_version rather than falling back silently. The version actually served is echoed as X-Mesh-Version on every response, including errors.
2026-08, 2026-09 Body
Request body for POST /v1/moderations (OpenAI-compatible).
Text, list of texts, or list of multimodal (text/image_url) items.
Moderation model to use. Defaults to omni-moderation-latest.
Your own labels for this request, echoed back on the usage row and available as a filter and a group-by dimension in the usage API. String keys to string values. Never put personal or sensitive data here — tags are stored with the usage record and are not redacted.
A stable, anonymised identifier for the end user making this request, recorded on the usage row and available as a filter and a group-by dimension in the usage API. Supersedes the deprecated user field. Use an opaque id, not an email address or a name.
256Response
Moderation result(s).