Use case
Game chat moderation with AI, for every language your players speak
Online games bring players from many countries into the same lobby, and trash talk can turn into abuse in seconds. VigiMod checks every chat message on your game server, reading the messages before it, in 26 languages, with rules written for your game.
What makes it hard
Trash talk or abuse?
“Get rekt” after a match is normal; the same player attacking someone for who they are is not. Context and separate categories keep the difference.
Global lobbies
One match can mix Spanish, Portuguese, German and Italian. The model was trained on 26 languages.
Game-specific rules
Cheat selling, account trading or spoilers about a new season are rules for your game, not generic categories.
How it works with VigiMod
- 1
Your game server receives the chat message and keeps the last messages of the room or match.
- 2
It sends them to VigiMod with the player's id, the room as scope and your rules.
- 3
If the message is flagged it is not broadcast; your server can warn, mute or report the player.
Rules you can copy
Send them in the rules field: each one comes back with its own score, like a built-in category.
{
"rules": {
"no-cheats": "No selling or sharing cheats, hacks or exploits",
"no-trading": "No trading accounts or items for real money",
"no-spoilers": "No spoilers about the new season's story",
"no-boosting": "No offering boosting or rank selling services"
}
}Example
A Node.js chat server with WebSockets: each message is checked before it is sent to the other players.
JavaScript (Node.js)
// npm install ws (Node 18+)
// A game chat server: each message is checked before it is sent to the room
import { WebSocketServer } from "ws";
const RULES = { "no-cheats": "No selling or sharing cheats, hacks or exploits" };
const recent = []; // the last messages of the room, sent as context
const wss = new WebSocketServer({ port: 8080 });
async function moderate(text, playerId) {
const res = await fetch("https://api.vigimod.com/moderate", {
method: "POST",
headers: { "X-API-Key": process.env.VIGIMOD_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ text, context: [...recent], rules: RULES, user_id: playerId, scope: "room-1" }),
signal: AbortSignal.timeout(2000),
}).catch(() => null);
return res?.ok ? res.json() : { flagged: false }; // slow or down: let the message through
}
wss.on("connection", (socket, req) => {
const playerId = req.headers["x-player-id"] ?? "guest"; // use your own authenticated player id
socket.on("message", async (data) => {
const text = data.toString().slice(0, 2000);
const result = await moderate(text, playerId);
if (result.flagged) {
socket.send(JSON.stringify({ type: "blocked", reason: "This message breaks the chat rules." }));
return;
}
recent.push(text);
if (recent.length > 10) recent.shift();
for (const client of wss.clients) client.send(JSON.stringify({ type: "chat", playerId, text }));
});
});Tips
- Check messages on your server, never from the game client: the API key must not ship with the game.
- Use higher thresholds for toxic in competitive modes and lower ones in family modes: thresholds can change per request.
- If the check fails or times out, let the message through and log it, so chat never stops.
Questions
- Can I call VigiMod from Unity or Unreal directly?
- Do not put the API key in the game build: call VigiMod from your game server or backend, which then decides what to broadcast.
- Does it moderate voice chat?
- No, only text. If you transcribe voice to text you can check the transcript like any message.
- How fast is it?
- One HTTP call per message. Give it a short timeout and let the message through if it is slow; the batch endpoint checks up to 20 messages in one call.
- Is it suitable for games with children?
- Add the opt-in child_safety category (beta), which flags attempts to groom a minor, and send those flags to a person on your team.
Keep learning
All guides- 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.
- Intermediate · 7 min readPrecision, recall and F1, explained with moderation examplesAccuracy hides the problem. What precision, recall and F1 measure, how to compute them in 30 seconds and which one matters for your community.
- Basics · 5 min readHuman in the loop: how AI and moderators work best togetherAutomatic moderation is fast, people understand nuance. How to split the work, which actions to automate and which to leave to a person.
Try it on your community
Create a free API key in two minutes. No card, no trial period.