Content moderation API

A content moderation API that follows your rules, not only generic categories.

Category moderation tells you whether text is hateful or explicit. Your platform also has rules nobody else has. Enforly evaluates content against rules you write in plain language and returns a decision your code can act on.

Category moderation vs. business rules

Most moderation APIs return scores for a fixed set of categories: hate, harassment, sexual content, violence, self-harm. That covers harmful content in general. It doesn’t cover “don’t move the conversation off the app”, “no ticket resales disguised as giveaways”, or “reviews are about the product, not the seller”.

Those rules are what your moderators spend their day on. With Enforly you write them as a policy, and every check evaluates the content against that policy and the context you send.

Where the check fits

One call between the step that prepares something and the step that sends, publishes, or runs it. Your code applies the decision.

See it decide

The same policy evaluated on three cases. Pick one and run the check to see which evidence it relies on.

Policy

Profiles must not share contact details or invite people to continue the conversation outside the app, however it’s worded. Requests for money, gifts, or financial help are not allowed, even when hinted. People advertising paid services go to review.

data

{
"type": "profile",
"bio": "Architect, weekend climber, terrible at cooking. Looking for someone to explore Patagonia with.",
"fields": {
"city": "Bariloche",
"age": 31
}
}

Result

violationProbability—
reviewProbability—

Why: No contact details, no money requests, no paid services.

Your code: Publish the profile.

Response JSON
{
  "decision": "allow",
  "allowed": true,
  "violationProbability": 0.03,
  "reviewProbability": 0.05,
  "policyId": null,
  "policyVersion": null,
  "requestId": "req_7f3a…"
}

Illustrative example. Real probabilities depend on your policy wording and the evidence you send.

allow · Clean profile

No contact details, no money requests, no paid services.

deny · Contact details

No handle or number to match, but it clearly sends people to Instagram to keep talking.

review · Paid services

Advertises a paid service, which the policy sends to a moderator.

Moderate structured content, not just a string

data accepts any JSON. Send a whole profile, a listing with its category and price, a review with the order it refers to, or a message with the channel it was posted in. Rules can refer to any of those fields, which is what makes contextual decisions possible.

Built for production use

A few properties that matter once moderation is in the request path:

  • Three decisions. allow publishes, deny rejects, review fills your moderator queue.
  • Saved, versioned policies. Edit rules in the dashboard; pin policyVersion when you need a fixed version.
  • Several policies, one check. Evaluate up to 10, 25, or 50 saved policies per request depending on your plan, billed as one check.
  • No data retention. Enforly keeps the decision and request ID, not the content.
  • Fail closed. Errors never return an implicit allow.

Set it up

  1. 1

    Write the rule

    Start inline in your request. Move it to a saved policy when you want versions and reuse.

  2. 2

    Send the content as JSON

    Include the fields the rule refers to, plus useful context such as author or channel.

  3. 3

    Map decisions to states

    allow → published, review → pending, deny → rejected.

HTTP
curl https://api.enforly.com/v1/check \
  -H "Authorization: Bearer $ENFORLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "policy": "Profiles must not invite people to continue the conversation outside the app.",
    "data": { "type": "profile", "bio": "Find me on the gram, same name as here" }
  }'
Response
{
  "decision": "deny",
  "allowed": false,
  "violationProbability": 0.94,
  "reviewProbability": 0.05,
  "policyId": null,
  "policyVersion": null,
  "requestId": "req_..."
}

Full request and response fields are in the API reference. Using a coding agent? Point it to Build with AI.

What Enforly doesn’t do

Enforly evaluates the information you send and returns a decision. It doesn’t run operations, and it doesn’t guarantee safety or compliance on its own.

  • Enforly evaluates text and JSON. For images or audio, send the output of a vision or transcription model as evidence.
  • It complements category classifiers; it doesn’t replace a dedicated CSAM or legal-compliance pipeline.
  • Each request is limited to 32,768 characters of input.

Questions

Is there a free tier?

Yes: 200 checks per month, no credit card. Paid plans start at USD 5 per month for 7,500 checks.

How fast is it?

Each check is a single model call, built for the request path. Measure it from your region with your own policies before you put it in front of users.

Can I use it alongside OpenAI Moderation?

Yes. Many teams run a category classifier and Enforly in parallel and block if either says no. See the comparison.

Related

Try this policy on your own data.

Copy the policy above, add your real examples, and see the decision. 200 free checks per month, no credit card.