Toxicity detection
A toxicity detection API that tells an insult from a joke
Send a message, get a toxicity score between 0 and 1. VigiMod reads the whole sentence, and the messages before it if you send them, so an attack on a person is flagged while swearing at a video game or teasing a friend is not. Trained on 26 languages, free during the beta.
Real answers, not a word list
These are the scores the API gave to each message. A list of bad words would flag “killing”, “hate” and “idiot” and miss most of the real attacks.
| Message | Toxic score | Result |
|---|---|---|
| enyou're honestly the dumbest person in this server, just leave | 1.00 | flagged |
| enthis boss fight is killing me, I hate this level so much | 0.00 | not flagged |
| itma stai zitto, nessuno ti ha chiesto niente, fai pena | 1.00 | flagged |
| itche partita di merda, abbiamo giocato malissimo | 0.00 | not flagged |
| escállate ya, das asco, nadie te quiere aquí | 1.00 | flagged |
| dedu bist so ein erbärmlicher Versager, verschwinde endlich | 1.00 | flagged |
| frt'es vraiment trop fort, bien joué mec ! | 0.00 | not flagged |
| enst*pid l0ser, g0 away | 1.00 | flagged |
| enlol you absolute idiot, I love yousent after: “happy birthday mate!!” · “you forgot it last year” | 0.01 | not flagged |
Answers of VigiMod 1.2.1 on 11 November 2026, default thresholds.
What the toxic score means
- Flagged: messages that are rude, disrespectful or aggressive towards someone. Insults, humiliation, telling a person they are worthless or should leave.
- Not flagged: strong language aimed at things (a match, a level, a bug), praise, and friendly teasing when the previous messages show it is a joke.
- Tricks are undone first: letters swapped for numbers or symbols, spaced-out letters and stretched words are read as the word they hide.
- Insults, hate and threats also have their own scores, so you can treat a threat differently from plain rudeness.
One request
A POST with the message. Everything else is optional: the previous messages, the categories you need, your own threshold.
import requests
r = requests.post(
"https://api.vigimod.com/moderate",
headers={"X-API-Key": VIGIMOD_KEY},
json={
"text": message,
"context": previous_messages, # optional: the last messages, oldest first
"categories": ["toxic", "insult"], # optional: only what you need (faster)
"thresholds": {"toxic": 0.8}, # optional: flag less
},
)
result = r.json()
result["scores"]["toxic"] # 0.0 to 1.0
result["flags"]["toxic"] # True when the score reaches the thresholdYou choose how strict it is
- Every category has a default threshold, tuned on validation data. A score at or above it sets the flag.
- Raise the threshold to flag less (fewer false alarms), lower it to catch more. You can change it per request, so each community has its own.
- VigiMod only flags. What happens next (delete, hide, warn, send to a moderator) is your decision.
What to expect
VigiMod works best in Italian, English, Spanish, French, German and Portuguese, and understands 26 languages. For short replies, sarcasm and jokes, send the previous messages as context: the model reads them together with the message. For the decisions that matter most, add a moderator review.
Questions
- What is a toxicity score?
- A number between 0 and 1 that says how likely a message is to be rude, disrespectful or aggressive towards someone. The API compares it with a threshold and returns a flag; you can read the score and decide yourself.
- Is swearing flagged as toxic?
- Not by itself. “What a shitty match” is not an attack on anyone and is not flagged; an insult aimed at a person is. If your community allows no swearing at all, add a rule such as “No swearing” or turn on block_slurs.
- Which languages does it work in?
- It was trained on 26 languages and works best in Italian, English, Spanish, French, German and Portuguese. You do not need to say which language a message is in.
- How much does it cost?
- It is free during the beta, with 120 messages per minute for each API key. Paid plans with higher limits will come later, announced well in advance.
- Do you keep the messages?
- No. Messages are checked and discarded: they are not stored and not used to train models. The only exception is a review queue you turn on for your moderators: its messages are kept for the days you choose, then deleted.
Keep learning
All guides- Basics · 5 min readFalse positives and false negatives in content moderationEvery moderation system makes two kinds of mistakes. What they are, what each one costs a community and how to keep both low.
- Intermediate · 6 min readHow to choose a moderation thresholdA score of 0.7 is not a decision. How thresholds work, why the default is only a starting point and a simple method to tune them on your own messages.
- Basics · 5 min readWhy context matters in chat moderationThe same sentence can be harmless or harmful depending on what came before. How conversation context changes moderation, with real examples.
Try it on your own messages
Create a free key and send your first request in a couple of minutes.