Public API

All endpoints are read-only, CORS-enabled, and free to use. Build Discord bots, overlays, spreadsheets, or any tool on top of shared builds.

Base URL: https://gms-upgrade-tracker.vercel.app

All responses are JSON. No authentication required. Rate limits are generous (Vercel serverless defaults). Players must save their build on the website before it can be accessed via API.

Builds

GET/api/share?id={IGN}

Fetch a shared build by character name. Returns full gear, stats, class, and server type.

Response:

{ id, selectedClass, serverType, characterStats, gear }
GET/api/build/{IGN}/summary

Get a summary of a build including power score, gear overview, and set effects.

Response:

{ id, selectedClass, serverType, powerScore, gear, sets }
GET/api/build/{IGN}/recommend

Get upgrade recommendations ranked by meso efficiency. Supports query params for limit, mesoRate, sfDiscount, feverTime, cubeSale.

Parameters:

limit(int, default: 5)Number of recommendations (1-20)
mesoRate(int, default: 300000)Meso market rate (meso per NX)
sfDiscount(bool, default: false)Star Force 30% discount event
feverTime(bool, default: false)Spell Trace Fever Time event
cubeSale(bool, default: false)Cube 25% off event

Response:

{ recommendations: [{ description, upgradeType, expectedMesoCost, expectedDamageGainPercent, ... }], powerScore }
GET/api/build/{IGN}/rank

Get a player's leaderboard rank (overall and class-specific).

Response:

{ overallRank, classRank, totalPlayers, className }

Calculators

GET/api/calc/starforce

Calculate Star Force expected cost and booms.

Parameters:

itemLevel(int)Item level (required)
from(int, default: 0)Current star
to(int, default: 17)Target star
replacementCost(int, default: 0)Cost per boom replacement (meso)

Response:

{ expectedCost, expectedBooms, statGain }
GET/api/calc/cube

Calculate expected cubes for tier-up or specific potential targets.

Response:

{ expectedCubes, expectedMesoCost, description }
GET/api/calc/flame

Calculate expected flames to reach a target score.

Response:

{ expectedFlames, expectedCost, description }

Leaderboard

GET/api/leaderboard

Get the top players ranked by converted stat. Filter by server type and class.

Parameters:

type(string, default: interactive)Server type: interactive or heroic
class(string)Filter by class (e.g. Hero, Demon Slayer)
limit(int, default: 50)Number of entries (1-100)

Response:

{ entries: [{ rank, name, displayName, selectedClass, score }], serverType }