Human-in-the-loop moderation
Moderation in which software makes the clear calls and sends the uncertain ones to a person, whose decision is final and recorded.
Human-in-the-loop moderation means software makes the clear calls and sends the uncertain ones to a person, whose decision is final and recorded. In practice it is a review queue: items enter when a flag's confidence falls in a middle band, when a user reports them or when someone appeals; a moderator chooses an action; and your system carries it out.
What goes into the queue
| Source | Enters when | Example |
|---|---|---|
| A review band | A flag is raised below your own blocking line | insult at 0.62 on a comment |
| Flags that always need a person | A wrong call is costly either way | any self_harm result |
| Partial results | A flag you act on came back in unchecked | hold the item, then check again or review it |
| User reports | Someone reports a post | a report on a published listing |
| Appeals | A user contests a decision, automated or not | the author of a hidden comment appeals |
The band starts at 0.5: the API raises a flag at its threshold, 0.5 by default, and findings below it never come back, so your own lines sit above it. The docs give 0.5 to 0.7 as an example band for human review (flags).
The loop, step by step
- Your server sends the item with your own ids in
metadata, at once or with"async": true. - The result arrives in the answer, or as a
moderation.completedormoderation.flaggedwebhook (async requests). - Your rules decide: publish, act above your blocking line, or hold for review.
- A moderator opens the item in the dashboard's Logs, or in your own tool, and takes one of your actions.
- Detectivision sends a
moderation.actionwebhook to each of your endpoints that takes that event, and your system hides, restores or bans. - The request's
statemoves frompendingtoactioned, andGET /api/v1/moderation/{id}lists the actions taken.
Detectivision never carries out an action itself (actions).
What a reviewer needs
- The content as users saw it. Detectivision does not keep images (image moderation), so load them from your own storage.
- The result. The flags raised, their confidence, and the rule that held the item.
- Context. The thread, listing or profile around the item and earlier decisions about the same user, found through the ids in
metadata. - The rule. Your written policy for that flag, with examples on both sides of the line.
- A note field. Why they decided, for appeals and for training new reviewers.
Actions and the audit trail
You define up to 20 actions in the dashboard, each with a key your system receives, such as hide, restore or ban. Moderators take them in Logs, up to 600 a minute, or your own tool takes them through the API with a key that has write permission, up to 60 a minute; above that the API answers 429 with Retry-After. Taking actions and sending their webhooks is free.
curl https://api.detectivision.ai/api/v1/moderation/1042/actions \
-H "Api-Key: $DETECTIVISION_API_KEY" \
-H "Content-Type: application/json" \
-d '{"action": "hide", "note": "insult aimed at another user"}'
{
"type": "moderation.action",
"timestamp": "2026-10-16T12:00:00.000Z",
"data": {
"action": { "key": "hide", "label": "Hide comment" },
"note": "insult aimed at another user",
"by": { "type": "api", "name": "review tool" },
"item": {
"id": 1042,
"type": "text_moderation",
"flagged": true,
"flags": [{ "flag": "insult", "confidence": 0.62 }],
"metadata": { "userId": "u_123", "commentId": "c_456" },
"createdAt": "2026-10-16T11:58:10.000Z"
}
}
}
Example request and webhook payload (format from the API reference; values illustrative). by.type is user for the dashboard and api for an API key, named by the key's label. Logs shows each action's delivery state for 30 days. Keep your own record of who decided what, when, why and under which rule: the yearly figures below need it for longer.
Where the law requires a person
Who is who. Turkey's Presidency of Cyber Security (Siber Güvenlik Başkanlığı) issued a regulation, published in the Official Gazette (Resmî Gazete) on 10 October 2026 and in force from 1 November 2026, for social network providers reachable from Turkey. A social network provider (sosyal ağ sağlayıcı) lets users create, view or share content such as text, images, sound and location for social interaction (Article 4). The EU Digital Services Act (DSA) covers intermediary services offered to users in the EU; an online platform is a hosting service that makes users' content public at their request (Article 3).
| Turkey, regulation Article 10(3) | EU, DSA Article 20(6) | |
|---|---|---|
| Who it binds | Social network providers reachable from Turkey, based there or abroad (Article 2) | Online platforms, except micro and small enterprises (Article 19) |
| Which decisions | Appeals about age-verification results, suspended or closed accounts, and measures in the separate service for users aged 15 to 17 (Article 10(1)) | Decisions on complaints against removals, visibility limits, suspensions and similar decisions (Article 20(1)) |
| What it asks | Appeals "cannot be examined by fully automated systems" and get "meaningful human review" (our translation) | Decisions "taken under the supervision of appropriately qualified staff, and not solely on the basis of automated means" |
| Figures to keep | Each year: number of appeals, share accepted and average time to decide, sent to the Presidency and published on your site (Article 10(6)) | Complaints, decisions, median time to decide and reversals, in yearly transparency reports, unless exempt as a micro or small enterprise (Article 15) |
The full Turkish rules are on Turkey's under-15 social media rules.
Looking after reviewers
- Blur by default. Show flagged images blurred, with a click to reveal. Detectivision returns no blurred or censored copy, so blur in your own review screen, for example with the CSS
filter: blur(). - Share the hardest queues. Rotate people through violence and self-harm items, and let them pass an item to a colleague.
- Keep the rules close. When reviewers disagree on an item, add it to the written rule as an example.
Measuring the queue
Track these without borrowing targets from elsewhere:
- items entering per day, by source and by flag;
- the backlog, and the age of the oldest item;
- time from entering the queue to an action, per flag;
- the share of band items reviewers confirm: near all, and your blocking line may sit too high; few, and the band catches too much harmless content (false positives);
- the share of decisions reversed on appeal.
For where the queue sits in a full system, see content moderation system design.
What Detectivision does not do
- It provides no reviewers. Logs, your own actions and webhooks are tools; the decisions are your team's.
- It never acts on your platform. Your system hides, restores and bans.
- It returns no censored copies or word positions. Flags judge the whole text or image.
- It does not keep images. Your review screen needs your own copy.
- It does not check video, audio or live streams yet. They are coming soon.
Frequently asked
What is a moderation queue?
The list of items waiting for a person to decide. Items enter when software is unsure, when users report them or when someone appeals, and leave when a moderator takes an action. In Detectivision a moderator can open a request in the dashboard's Logs, and the API reports its state: pending until the first action, actioned after it.
Does every flagged item need a person?
No. Results above your own blocking line can be acted on by rules, and clean results published. People decide the band in between, user reports and appeals. Some laws require a person for certain decisions: appeals on social networks under Turkey's 2026 regulation, and complaint decisions on online platforms other than micro and small enterprises under the EU Digital Services Act.
Which items should reviewers see first?
Sort by urgency, not by arrival. Possible self-harm comes first, because someone may need help. Then reports about content that others can still see, then held items that are hidden until a decision, oldest first within each group.
What happens if my server misses a moderation.action webhook?
The action is still recorded. A failed delivery is tried again on a schedule, up to 8 attempts over about 28 hours, and the request's panel in Logs shows whether each action's message was delivered, is sending, failed or was not sent; Send again resends a failed one. A message can arrive more than once, so process each webhook-id once.
Put your own data on each request, define your own actions, and act from the dashboard's Logs or the API. Your system gets every action by webhook.
Get events at your own URL as they happen. Finished checks, flagged checks, failed async checks and actions, signed with your endpoint's secret.
A false positive is harmless content a moderation system flags. Why they happen, how to measure them on your own data, and how thresholds and review help.
A reference design for moderating user content: where to check, when to block or hold, how to route doubtful cases to people, and how decisions reach your app.
Moderate forum posts, comments, usernames and avatars for insults, hate, sexual content and self-harm, in ten languages, with one API.
- Metadata and actions
- Webhooks
- Flags
- Image moderation
- Async requests
- Sosyal Ağ Sağlayıcı Tarafından Çocuklara Özgü Ayrıştırılmış Hizmet Sunulmasına ve Yaş Doğrulamaya İlişkin Yönetmelik (Resmî Gazete 33396, 10 October 2026)
- Regulation (EU) 2022/2065, the Digital Services Act (Articles 3, 15, 19 and 20)
- Service status, GET /api/v1/status