Simple Moderation
Docs · v1

Simple Moderation API

One endpoint, a clear response shape. Text and image moderation are live today; audio and video are on the roadmap.

Authentication

All requests use bearer token auth with an API key from your console. Keys can be rotated without downtime — old keys keep working until you revoke them.

Authorization: Bearer sk_live_...

POST /v1/moderate

Submit content for moderation against a named rule set. Returns a decision, an aggregate score, and a per-rule breakdown with evidence.

POST https://api.simplemoderation.com/v1/moderate
{
  "rule_set": "default",
  "content": {
    "type": "text",
    "text": "Selling iPhone 15 Pro. WhatsApp +49 176 8123 1188"
  }
}

Response shape

{
  "id": "dec_01HXKQ4M...",
  "decision": "allow" | "review" | "block",
  "score": 0.0 ... 1.0,
  "rule_set": "default",
  "results": [
    {
      "rule": "No phone numbers in listings",
      "matched": true,
      "confidence": 0.99,
      "evidence": ["+49 176 8123 1188"],
      "reason": "Detected German-format phone number."
    }
  ],
  "latency_ms": 1840,
  "cost_usd": 0.00012
}

Idempotency

Send an Idempotency-Key header to make retries safe. Replays return the original response with an Idempotency-Replayed: true header and are never billed twice.

Rule sets

A rule set is a named collection of plain-English rules plus the decision logic that aggregates them. Manage them in the console, reference them by slug in the API.

  • block rules — matching blocks the content.
  • review rules — matching routes to review.
  • allow rules — matching marks the content as explicitly fine. Allow rules do not override a block or review from another rule; scoped per-rule carve-outs are on the roadmap.

Rule changes are live within seconds — the next API call uses the updated set.

Status & errors

Standard HTTP status codes. 401 for bad keys, 402 with error.code = "quota_exceeded" when your monthly decision quota is reached, 404 for unknown rule sets. All errors return a stable error.code and a human-readable error.message.

Roadmap

  • Audio & video — transcription + frame sampling, same response shape (modality_not_yet_available until then).
  • Webhooks — async delivery for long-running and batch jobs.
  • Rule set versioning — shadow-mode A/B tests against live traffic.
  • SDKs — TypeScript and Python clients. Today the HTTP API is the interface; it is a single POST request.

Ready to try it?

Create a free account — 500 decisions a month on the trial, no credit card. You'll have an API key and a starter rule set in under a minute.