Use case · Content moderation

Moderate against your policy, not a fixed list

Describe what your platform allows in plain language, add a few examples of each category, and get a probability for every post and every category. Clear a backlog in bulk, or moderate live.

On demand or real time

$0.09 per million input tokens · the scores are free

Why spinf

Calibrated answers for content moderation, at any scale

Your categories

Scams on a marketplace, off-topic posts in a community, medical claims in reviews: the policy is yours, written as questions and examples.

Thresholds per category

Remove what is clearly over the line, queue the borderline for review, and set each threshold on your own labelled history.

Cheap enough for every post

Score every post, comment and review, not a sample: only the input is billed, and a short post costs a small fraction of a cent.

Live example

One post, a flag and a category

A yes/no policy question and the category among seven. The bars show p; the tick shows the floor, the same question with no post.

Content
User post: Guaranteed 300% returns in 7 days!! DM me your wallet seed phrase and I'll set up the trading bot for you for free. Only 5 spots left.
Does this post break the platform's content policy (harassment, hate, sexual content, violent threats, self-harm, spam or scams)?

yes

0.82

no

0.18

Policy category (safe, harassment, hate, sexual, violence, self-harm, or scam):

safe

0.01

harassment

0.01

hate

0.00

sexual

0.00

violence

0.00

self-harm

0.00

scam

0.98

import os
import requests

resp = requests.post(
    "https://api.spinf.com/v1/score",
    headers={"Authorization": f"Bearer {os.environ['SPINF_API_KEY']}"},
    json={
      "model": "spinf-12b",
      "messages": [
        {
          "role": "user",
          "content": "User post:\nGuaranteed 300% returns in 7 days!! DM me your wallet seed phrase and I'll set up the trading bot for you for free. Only 5 spots left."
        }
      ],
      "scoring": {
        "queries": [
          {
            "id": "flag",
            "template": "\n\nDoes this post break the platform's content policy (harassment, hate, sexual content, violent threats, self-harm, spam or scams)?\nAnswer:{?}",
            "options": [
              " yes",
              " no"
            ]
          },
          {
            "id": "category",
            "template": "\n\nPolicy category (safe, harassment, hate, sexual, violence, self-harm, or scam):{?}",
            "options": [
              " safe",
              " harassment",
              " hate",
              " sexual",
              " violence",
              " self-harm",
              " scam"
            ]
          }
        ]
      }
    },
)
for query in resp.json()["results"][0]["queries"]:
    for combo in query["combinations"]:
        print(query["id"], combo["values"], [(o["text"], o["p"], o["floor_p"]) for o in combo["options"]])

A live zero-shot call to spinf-12b. Categories and examples are yours: add a few labelled posts to the content to teach your policy.

Benchmark · 130 test posts

Your policy, taught by a few labelled posts in the prompt

Measured on 130 synthetic posts across six policy categories and safe content, including edgy-but-safe and polite-but-harmful posts, labelled by two reviewers, zero-shot and with 4 or 8 labelled example posts placed in the prompt.

99%
correct · breaks policy?
4 examples in the prompt · 92% zero-shot
98%
correct category (7)
8 examples in the prompt · 79% zero-shot
1.00
AUC · breaks policy?
4 examples in the prompt · 1.00 = perfect

Real content is harder: on 300 real public online comments with noisy, borderline toxicity labels, the same policy question reached AUC 0.77 with 8 examples. Teach your policy with examples from your own platform, and measure on a labelled sample before relying on thresholds.

How it works

Calibrate in bulk, then decide live

The on-demand API is built for throughput: use it to measure spinf on your own history and set your thresholds. Real-time decisions then run on an endpoint reserved for you.

1

Write the policy as questions

One yes/no question for "breaks the policy?", one closed question for the category, and a few labelled posts per category in the content.

2

Clear the backlog, set thresholds

Score your existing posts on the on-demand API, compare with past decisions, and choose per category what is removed, queued or allowed.

3

Moderate new posts

Score new posts in batches every few minutes on demand, or as they are published on a reserved endpoint.

Cost at scale

10M posts for about $225

Only input is billed, at $0.09 per million tokens: the content once per call, each question's own tokens, and one empty floor per question. The scores are free.

posts10,000,000× tokens each (about)250= tokens2.5B× $0.09 / 1M$225.00

Assumes 100-token posts, 2 questions, batched calls. The first 50M tokens are free.

Pricing details
FAQ

Content moderation: questions, answered

More in the docs, or .

Free endpoints score a fixed list of categories. With spinf the policy is yours: your categories, your wording and your examples, with a probability for each, so you can moderate what matters on your platform.

Yes, on a reserved endpoint: the on-demand API is tuned for throughput rather than real time. Backlogs and periodic sweeps run on demand, self-serve.

Text is available to everyone today. Images and audio are in preview, on request.

No. Content sent for scoring is processed in memory and not stored by default, and it is never used to train models.
Try it on your data

The first 50M tokens are on us

Score a sample of your history today, and talk to us when you are ready to go live.