Seedance 2.5 Now Live | Try in Video Generator →
Home/Explore/WaveSpeed/Molmo2/Text Content Moderator

wavespeed-ai/

Molmo2-4B Text Content Moderator: Analyze text content for safety, appropriateness, and policy compliance. Detects hate speech, violence, sexual content, and other harmful categories. Open-source vision-language model. Ready-to-use REST API, no cold starts, affordable pricing.

content-moderation
Input

Idle

wavespeed-ai/molmo2/text-content-moderator preview unavailable

$0.003per run·~333 / $1

ExamplesView all

Related Models

README

Molmo2 Text Content Moderator

Automatically screen text for harmful content with Molmo2 Text Content Moderator. This AI-powered moderation tool analyzes text and returns safety classifications for harassment, hate speech, sexual content, and violence — essential for chat platforms, user-generated content, and compliance workflows.

Related Models

Why It Works Great

  • Comprehensive detection: Screens for harassment, hate, sexual content, and violence.
  • Child safety: Dedicated detection for content involving minors.
  • Instant results: Near-instant processing for real-time moderation.
  • JSON output: Clean, structured results for easy integration.
  • Ultra-affordable: Just $0.003 per request — 333 requests for $1.
  • Simple integration: Single text input for straightforward API calls.

Parameters

ParameterRequiredDescription
textYesText content to analyze for harmful content.

How to Use

  1. Enter your text — paste or type the content to analyze.
  2. Run — click the button to analyze.
  3. Review results — check the JSON output for safety classifications.

Pricing

Flat rate per text analyzed.

OutputCost
Per request$0.003
100 requests$0.30
1,000 requests$3.00

Output Format

The model returns a JSON object with boolean flags for each content category:

{
 "harassment": false,
 "hate": false,
 "sexual": false,
 "sexual/minors": false,
 "violence": false
}

Detection Categories

CategoryDescription
harassmentBullying, intimidation, or targeted abuse
hateHate speech, discrimination, or prejudice
sexualAdult sexual content or explicit language
sexual/minorsAny sexual content involving minors
violenceThreats, graphic violence descriptions, or harmful content

Best Use Cases

  • Chat Platforms — Moderate messages in real-time.
  • Comments & Reviews — Screen user comments before publishing.
  • Forums & Communities — Ensure posts meet community guidelines.
  • Social Media — Filter text content at scale.
  • Customer Support — Flag abusive messages automatically.
  • Content Pipelines — Pre-screen text before human review.

Pro Tips for Best Results

  • Use as a first-pass filter before human moderation for edge cases.
  • Integrate via API for real-time chat moderation.
  • At $0.003 per request, high-volume moderation is extremely cost-effective.
  • Combine with image and video moderation for comprehensive screening.
  • Process messages as they arrive for instant feedback.

Notes

  • Processing is near-instant for real-time applications.
  • Returns boolean values — true indicates detected content.
  • Designed for automated workflows with JSON output.
  • Consider human review for flagged content or edge cases.
  • Works with any language text input.
Note:This website uses AI models provided by third parties. Documentation prices are for reference and may be outdated. The Generate button shows an estimate; the final task charge prevails.

Molmo2 Text Content Moderator API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/wavespeed-ai/molmo2/text-content-moderator with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Molmo2 Text Content Moderator below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "text": "A clear example input"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/molmo2/text-content-moderator" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY" \
  -d "$REQUEST_BODY")

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL=$(printf '%s' "$TASK" | jq -r '.urls.get // empty')
if [ -z "$RESULT_URL" ]; then
  RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"
fi

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
    -H "Authorization: Bearer $WAVESPEED_API_KEY")
  RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  case "$STATUS" in
    completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
    failed|cancelled|timeout) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "$STATUS" >&2; exit 1 ;;
  esac
done
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/wavespeed-ai/molmo2/text-content-moderator";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "text": "A clear example input"
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = task.urls?.get ||
  `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout"].includes(result.status)) throw new Error(JSON.stringify(result));
  if (!["created", "processing"].includes(result.status)) throw new Error("Unexpected status: " + result.status);
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "text": "A clear example input"
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/wavespeed-ai/molmo2/text-content-moderator", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = task.get("urls", {}).get("get") or f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout"}:
        raise RuntimeError(result)
    if status not in {"created", "processing"}:
        raise RuntimeError(f"Unexpected status: {status}")
    time.sleep(2)

Molmo2 Text Content Moderator API — Frequently asked questions

What is the Molmo2 Text Content Moderator API?

Molmo2 Text Content Moderator is a WaveSpeedAI model for AI inference, exposed as a REST API on WaveSpeedAI. Molmo2-4B Text Content Moderator: Analyze text content for safety, appropriateness, and policy compliance. Detects hate speech, violence, sexual content, and other harmful categories. Open-source vision-language model. Ready-to-use REST API, no cold starts, affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Molmo2 Text Content Moderator API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/wavespeed-ai/molmo2-text-content-moderator.

How much does Molmo2 Text Content Moderator cost per run?

Molmo2 Text Content Moderator starts at $0.003 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does Molmo2 Text Content Moderator accept?

Key inputs: `enable_sync_mode`, `text`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/wavespeed-ai/molmo2-text-content-moderator.

How long does Molmo2 Text Content Moderator take to generate?

Median end-to-end generation time on WaveSpeedAI is around 10 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.

Can I use Molmo2 Text Content Moderator outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (WaveSpeedAI). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.

Molmo2 Text Content Moderator | AI Content Moderation API on WaveSpeedAI