PyroMC Tiers

RayzPractice

API

RayzPractice website API

PyroMC Tiers reads rank definitions, modes, seasons, leaderboards, profiles, match pages, and player search from the RayzPractice HTTP API.

Base URL

env
http://127.0.0.1:8088/api/v1

Security note

RayzPractice HTTP API is disabled by default. Keep RAYZ_API_KEY server-side, use HTTPS or a reverse proxy, and send keys via X-API-Key or api_key. Do not expose private keys in client code.

GET
/status

Returns API health, server identity, current season, and tracked totals.

json
{
  "online": true,
  "version": "RayzPractice",
  "serverName": "PyroMC",
  "seasonId": "season-4"
}
GET
/ranks

Returns every rank definition, including threshold, icon path, texture key, and custom model data.

json
{
  "id": "amethyst_12",
  "displayName": "Amethyst 12",
  "threshold": 5925,
  "textureKey": "rank-6_11"
}
GET
/leaderboards/global

Returns the global leaderboard for a season with player ranks, RP, win rate, streaks, and peaks.

Query Params

seasonpagepageSizesort
json
{
  "seasonId": "season-id",
  "total": 0,
  "entries": [
    {
      "position": 1,
      "name": "PlayerName",
      "rp": 2400,
      "rankId": "diamond_4"
    }
  ]
}
GET
/leaderboards/mode/{modeId}

Returns per-mode rankings for a modern PvP mode such as sword-shield or crystal-pvp.

Query Params

seasonrankpagepageSize
json
{
  "modeId": "sword-shield",
  "entries": [
    {
      "position": 1,
      "name": "PlayerName",
      "rp": 2400
    }
  ]
}
GET
/player/name/{name}

Looks up a player profile by Minecraft name, including global stats and mode rank cards.

json
{
  "name": "PlayerName",
  "globalRp": 2400,
  "position": 3,
  "mainMode": "Axe Shield"
}
GET
/match/{matchToken}

Returns public match details when the RayzPractice match endpoint has indexed data for the token.

json
{
  "token": "match-token",
  "modeName": "Crystal PvP",
  "arena": "Arena Name",
  "winnerName": "PlayerName"
}
GET
/search/players

Returns player suggestions for navbar and hero search.

Query Params

q
json
[
  {
    "name": "PlayerName",
    "uuid": "00000000-0000-4000-8000-000000000000",
    "position": 1
  }
]

Operational notes

Leaderboards should be cached briefly so the Minecraft server is not hit by every page view.

Rate limits should be enforced at the reverse proxy or API gateway before requests reach the game server.

Match-history-heavy views can use a future indexed read model while the current API remains lightweight.