Services / API Documentation
Predator Protection API.
Use the public Vuplore Trust & Safety registry lookup to check a permanent platform user ID before a community action such as a Discord guild join, Roblox server join, manual moderation review, or scheduled safety scan.
Overview
Predator Protection checks whether a user identifier appears in Vuplore's verified Trust & Safety registry. A match is not created by normal support intake. Trust & Safety must review the report, verify the case, and explicitly publish identifiers to the registry.
Base URL
https://vuplore.com/api/trust-safety/predator-protectionThe public lookup is read-only and rate limited. Do not send evidence, legal names, addresses, access tokens, cookies, or private community logs to this endpoint.
Lookup endpoint
GET /lookup?platform=discord&userId=1234567890| Query | Required | Description |
|---|---|---|
platform | Yes | Normalized platform key, for example discord, roblox, war_thunder, steam, vuplore, or other. |
userId | Yes | Permanent platform identifier. For Discord, send the Discord user ID. For Roblox, send the Roblox user ID. |
includeAliases | No | Defaults to true. Set to false when your integration only needs match status and case metadata. |
includeStaffNote | No | Defaults to false. Set to true only if your integration stores authority-facing public staff notes. |
Response
{
"ok": true,
"generatedAt": "2026-07-17T21:33:08Z",
"query": {
"platform": "discord",
"userId": "1234567890"
},
"predatorFound": true,
"matched": 1,
"evidenceIncluded": false,
"evidencePolicy": "Evidence, reporter details, private notes, and authority packets are never returned by this public integration endpoint.",
"matches": [
{
"publicId": "TAS-CS-20260717-ABCDEF12",
"status": "reported_to_authorities",
"authorityStatus": "pending_report_to_authorities",
"concern": "sexual_solicitation_or_grooming_of_minor",
"offenderAge": 24,
"details": "Public case details set by Trust & Safety.",
"staffNote": null,
"knownAliases": [
{
"platform": "discord",
"platformUserId": "1234567890",
"username": "example"
}
]
}
]
}details and staffNote are separate fields. Staff must set staffNote explicitly; it is not copied from report details or internal notes. The API returns staffNote only when includeStaffNote=true.
Statuses
| Field | Value | Meaning |
|---|---|---|
status | verified | Vuplore Trust & Safety verified the case for public registry publication. |
status | pending_report_to_authorities | The case is verified and being prepared for an authority report. |
status | reported_to_authorities | Vuplore has reported or submitted the case to the relevant authority path. |
status | handled_by_authorities | The authority path has handled or acknowledged the matter in a way Trust & Safety can record publicly. |
authorityStatus | rejected_by_authorities | An authority path rejected the report. Trust & Safety can still keep internal records where legally justified. |
Discord bot example
client.on("guildMemberAdd", async (member) => {
const url = new URL("https://vuplore.com/api/trust-safety/predator-protection/lookup");
url.searchParams.set("platform", "discord");
url.searchParams.set("userId", member.id);
url.searchParams.set("includeStaffNote", "false");
const response = await fetch(url, { headers: { accept: "application/json" } });
const data = await response.json();
if (data.predatorFound) {
await member.ban({ reason: "Vuplore Predator Protection verified registry match" });
}
});Run the lookup on a join event, a manual moderation command, or a scheduled scan. Cache negative results briefly and keep your own audit reason for any moderation action.
Roblox server example
local HttpService = game:GetService("HttpService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local url = "https://vuplore.com/api/trust-safety/predator-protection/lookup"
.. "?platform=roblox&userId=" .. player.UserId
local ok, body = pcall(function()
return HttpService:GetAsync(url)
end)
if ok then
local data = HttpService:JSONDecode(body)
if data.predatorFound then
player:Kick("Safety restriction")
end
end
end)Call from server-side code only. Do not expose private moderation logic or user reports to clients.
Evidence policy
The public endpoint is intentionally narrow. It returns only public registry metadata and known platform aliases. Evidence remains restricted to authorized Trust & Safety staff and, where appropriate, authorities.
Integrations should treat a match as a safety signal for their own policy workflow. Do not display private accusations to end users, and do not mirror Vuplore evidence into third-party systems.