ProtectCord API

IP intelligence, threat detection, and security lookups for your applications.

Getting Started

Need an API Key?

Get your API key from the ProtectCord Dashboard. The Minecraft plugin can also generate keys automatically.

Authentication

Pass your API key as a query parameter:

GET https://api.protectcord.com/checkip/1.1.1.1?key=YOUR_API_KEY

Rate Limits

Default: 32 requests/minute. Check response headers X-RateLimit-Remaining and X-RateLimit-Reset.

Error Codes

Public Endpoints

No authentication required.

GET /health

System health status and diagnostics.

GET /stats

Public usage statistics and threat intelligence summary.

GET /myip

Get your public IP. Add ?detailed=true for full analysis.

GET /plugin-version

Get latest Minecraft plugin version.

Authenticated Endpoints

Require a valid API key.

IP Intelligence

GET /checkip/{ip}

Comprehensive IP analysis with security flags, geolocation, and company info.

Security flags: is_vpn, is_proxy, is_tor, is_datacenter, is_residential_vpn_or_proxy, is_abuser, is_whitelisted, is_blacklisted

GET /checkip/8.8.8.8?key=YOUR_KEY

Lookups

GET /lookup/discord/{user_id}

Look up Discord user by ID.

GET /lookup/discord/123456789012345678?key=YOUR_KEY

GET /lookup/minecraft/{username}

Look up Minecraft player. Returns UUID, skin, cape, name history.

GET /lookup/minecraft/Notch?key=YOUR_KEY

GET /lookup/minecraft-server/{address}

Query Minecraft server status, players, MOTD.

GET /lookup/minecraft-server/mc.hypixel.net?key=YOUR_KEY

GET /lookup/fivem/{identifier}

Look up FiveM player by identifier.

GET /lookup/fivem/steam:110000112345678?key=YOUR_KEY

Plugin Endpoints

Used by the Minecraft plugin to register servers and track players. Requires a valid API key (no admin needed). Accepts both GET (query params) and POST (JSON body).

GET POST /plugin/minecraft/server/register

Register or update a Minecraft server. Automatically links the server to your API key.

Parameters: name (required), ip_address (required), port (default 25565), server_type (paper/spigot/bungeecord/velocity/forge/folia/fabric)

GET /plugin/minecraft/server/register?key=YOUR_KEY&name=My+Server&ip_address=play.example.com&port=25565&server_type=paper
POST /plugin/minecraft/server/register?key=YOUR_KEY
Content-Type: application/json

{ "name": "My Server", "ip_address": "play.example.com", "port": 25565, "server_type": "paper" }

Response:

{ "server_id": 1, "name": "My Server", "created": true }

GET POST /plugin/minecraft/player/check

Check a player on join. Upserts the player record and links to the server. Returns flags and active status for blocking decisions.

Parameters: uuid (required, 32 hex chars), username (required), server_id (optional, from server/register)

GET /plugin/minecraft/player/check?key=YOUR_KEY&uuid=069a79f444e94726a5befca90e38aaf5&username=Notch&server_id=1
POST /plugin/minecraft/player/check?key=YOUR_KEY
Content-Type: application/json

{ "uuid": "069a79f444e94726a5befca90e38aaf5", "username": "Notch", "server_id": 1 }

Response:

{
  "player_id": 42,
  "uuid": "069a79f444e94726a5befca90e38aaf5",
  "username": "Notch",
  "is_active": true,
  "flags": null,
  "servers_seen_on": 3
}

GET POST /plugin/minecraft/player/flag

Set flags on a player (e.g. "banned", "suspicious,alt-account"). Set to empty string to clear flags.

Parameters: uuid (required), flags (required, comma-separated string)

GET /plugin/minecraft/player/flag?key=YOUR_KEY&uuid=069a79f444e94726a5befca90e38aaf5&flags=banned,suspicious
POST /plugin/minecraft/player/flag?key=YOUR_KEY
Content-Type: application/json

{ "uuid": "069a79f444e94726a5befca90e38aaf5", "flags": "banned,suspicious" }

Response:

{ "success": true, "player_id": 42 }
${adminSection}