Global Blacklist

A shared record of players caught fraud, cheating, or exploiting across participating communities — search below to check someone's history.

Base URL: https://api.blacklists.hu/api. Reading is open to everyone — no key needed. Submitting a record needs a community API key (issued individually, no self-serve signup — get in touch to request one), sent as an X-Api-Key header on every request that needs it. Every submission sits pending until manually reviewed; it's invisible to every read endpoint until then.

Identifier types

Used in type fields throughout the API — each record can carry any number of these.

TypeMeaning
ingame_usernameIn-game or platform username
discord_usernameDiscord account username (the @handle)
display_nameDiscord display name — server nickname if set, else global display name
discord_idNumeric Discord user ID (stable even if the username changes)
discord_tagLegacy "name#1234" discriminator — most accounts no longer have one
ingame_uuidThe game's own internal player UUID, if it has one
founder_numberCapital Rift founder number
steam_idSteam account ID
ipIP address
emailEmail address
otherAnything that doesn't fit the above
GET /health No key needed

Basic liveness check.

Example request

curl https://api.blacklists.hu/api/health

Example response

{"ok":true,"service":"global-blacklist-api"}
GET /stats No key needed

Total record count (every category) — the number shown at the top of this page.

Example request

curl https://api.blacklists.hu/api/stats

Example response

{"totalRecords":1042}
GET /records No key needed

List every approved record, newest first. A record staff have redacted still appears, but with "redacted": true and no reason/identifiers/evidenceUrl/avatarUrl — its existence isn't hidden, its content is.

Query parameters

NameDescription
pageoptionalPage number, default 1
limitoptionalResults per page, default 25, max 100

Example request

curl "https://api.blacklists.hu/api/records?page=1&limit=25"

Example response

{
  "page": 1,
  "limit": 25,
  "total": 1,
  "records": [
    {
      "id": "b4a3dfae-...",
      "category": "cheating",
      "reason": "Used a fly hack, confirmed via server logs.",
      "evidenceUrl": "https://example.com/proof.png",
      "identifiers": [
        { "type": "ingame_username", "value": "someName" },
        { "type": "discord_id", "value": "123456789012345678" }
      ],
      "createdAt": "2026-08-31T11:06:33.000Z"
    }
  ]
}
GET /records/:id No key needed

Get one approved record by its id. Returns 404 both when the id doesn't exist and when it's still pending or was rejected — an unapproved record's existence is never revealed to a public caller. Returns 403 if staff have redacted it — unlike the list/search endpoints, a direct fetch by id is refused outright rather than shown as a placeholder.

Example request

curl https://api.blacklists.hu/api/records/b4a3dfae-0dd2-47a0-8f77-7b1b6d1abf0d

Example response

{
  "id": "b4a3dfae-...",
  "category": "cheating",
  "reason": "Used a fly hack, confirmed via server logs.",
  "evidenceUrl": "https://example.com/proof.png",
  "identifiers": [ { "type": "ingame_username", "value": "someName" } ],
  "createdAt": "2026-08-31T11:06:33.000Z"
}

Example response — redacted (403)

{ "error": "redacted", "message": "This record has been redacted and is no longer accessible." }
GET /query No key needed

The main "does this person have a record" lookup — searches across every identifier on every approved record.

Query parameters

NameDescription
valuerequiredThe value to search for
typeoptionalRestrict to one identifier type (see table above)
modeoptionalcontains for a substring match instead of exact (case-insensitive either way)

Example request

curl "https://api.blacklists.hu/api/query?value=someName"

Example response

{
  "query": "someName",
  "matchCount": 1,
  "records": [ { "id": "b4a3dfae-...", "category": "cheating", "...": "..." } ]
}
POST /records Requires X-Api-Key

Submit a new record. Always lands as pending — it will not appear in any read endpoint until a staff member reviews and approves it.

Body parameters

NameDescription
categoryrequiredOne of fraud, cheating, exploiting, other
reasonrequiredFree text explaining what happened
evidenceUrloptionalLink to screenshots/logs/proof, hosted elsewhere
identifiersrequiredArray of {type, value} — at least one

Example request

curl -X POST https://api.blacklists.hu/api/records \
  -H "X-Api-Key: <your key>" \
  -H "Content-Type: application/json" \
  -d '{
    "category": "cheating",
    "reason": "Used a fly hack, confirmed via server logs.",
    "evidenceUrl": "https://example.com/proof.png",
    "identifiers": [
      { "type": "ingame_username", "value": "someName" },
      { "type": "discord_id", "value": "123456789012345678" }
    ]
  }'

Example response

{
  "id": "b4a3dfae-...",
  "status": "pending",
  "message": "Submitted — this will not appear in query results until it has been reviewed."
}
GET /submissions Requires X-Api-Key

Everything your community has ever submitted, any status — your only visibility into the review process, including the reason if something was rejected.

Example request

curl https://api.blacklists.hu/api/submissions -H "X-Api-Key: <your key>"

Example response

{
  "records": [
    {
      "id": "b4a3dfae-...",
      "category": "cheating",
      "reason": "...",
      "identifiers": [ "..." ],
      "status": "pending",
      "reviewNote": null,
      "createdAt": "2026-08-31T11:06:33.000Z",
      "reviewedAt": null
    }
  ]
}

Rate limits apply — public reads are capped per IP per minute, submissions per API key per hour. A 429 means you've hit one; wait and retry.