Klyx API
Hello! and welcome to the Klyx API. Last updated 14th October 2026.
This is a public, read-only JSON for Klyx events and players. Every URL below is relative to https://klyx.org.
Everything comes from the same data as the site. This means that the API never disagrees with what you see on an event or player page. If you do notice something that doesn't match, please let us know!
Things to know
- Hidden events. While an event's results are hidden (e.g. game 8), every endpoint hides them too: coins come back as
0, ranks asnull, and the in-progress game's scores are empty. - Coins before multipliers. Some games are worth more than others. Coin totals and ranks are before those multipliers, the same as the standings on an event page. Fields ending in
WithMultipliersare the totals after. - Names or UUIDs. Anywhere that takes a player, you can give a Minecraft username (any capitalisation) or their UUID. A name goes to whoever used it most recently in a Klyx event. UUIDs never change, so use those if you're storing links.
- Errors come back as JSON with a
reason, e.g.{ "reason": "not_found" }, and a matching status:400for a bad request,404for something that doesn't exist,500if something broke on our end.
Player profile
GET /api/player/:nameOrUUID
A player's career across every Klyx event they've played.
curl https://klyx.org/api/player/Asleepp
{
"profile": {
"uuid": "5c0b4deb-a01a-48bb-b9b1-0a99762b2bc1",
"username": "Asleepp",
"aliases": ["Asleepp"],
"eventsAttended": 3,
"careerCoins": 6716,
"averageCoins": 2239,
"careerCoinsWithMultipliers": 10869,
"averageCoinsWithMultipliers": 3623,
"bestFinish": 6,
"history": [
{
"eventId": "kgbirthdaybrawl2",
"eventName": "Klyx Games: Birthday Brawl 2",
"startDate": "2026-09-06T19:00:00.000Z",
"username": "Asleepp",
"teamName": "Elite Four",
"teamColor": "rgb(85, 255, 85)",
"coinsEarned": 2246,
"coinsEarnedWithMultipliers": 3467,
"rank": 21,
"eventHidden": false
}
]
}
}
- Trimmed above to one
historyentry, and withouttopTeammates. usernameis their latest name.aliasesis every name they've played under, newest first.topTeammatesis up to 3 players they've shared a team with most, and how many events.historyis newest first.rankis their place among every player in that event.
Errors: 404 { "profile": null, "reason": "not_found" } if nobody by that name or UUID has played.
Head-to-head
GET /api/player/:a/vs/:b
How two players did in every event they both played.
curl https://klyx.org/api/player/Asleepp/vs/BitSquidd
{
"message": "Asleepp and BitSquidd have played 1 klyx together",
"a": { "uuid": "5c0b4deb-a01a-48bb-b9b1-0a99762b2bc1", "username": "Asleepp" },
"b": { "uuid": "7f548cc3-70b3-458e-91ad-66c11867f5e9", "username": "BitSquidd" },
"shared": 1,
"aWins": 1,
"bWins": 0,
"ties": 0,
"events": [
{
"eventId": "kgonyx",
"eventName": "Klyx Games: Onyx 2",
"startDate": "2026-03-29T18:00:00.000Z",
"aRank": 11,
"bRank": 13,
"winner": "a"
}
]
}
messageis ready to show as is. With nothing in common it reads<a> and <b> have never shared a klyx!, using their proper names.winneris whoever finished higher:"a","b", ornullfor a tie.- Hidden events, should they ever exist, aren't counted since there are no ranks to compare yet.
Errors: 404 with missing set to "a" or "b" and a message, e.g. { "reason": "not_found", "missing": "b", "message": "diaduckk hasn't played a klyx yet!" }.
Leaderboard
GET /api/players
The top 50 players of all time.
curl https://klyx.org/api/players
curl "https://klyx.org/api/players?sort=average"
?sort=average, trimmed to the top player:
{
"sort": "average",
"players": [
{
"uuid": "9221a795-070c-482c-8de2-834eff881268",
"username": "CreepyBrawler",
"eventsAttended": 4,
"careerCoins": 13457,
"careerCoinsWithMultipliers": 21265,
"averageCoins": 3364,
"averageCoinsWithMultipliers": 5316,
"bestFinish": 1
}
]
}
sort=career(the default) ranks by total coins.sort=averageranks by average coins per event, among players with at least 3 events, so playing lots doesn't automatically make you top.
Errors: 400 { "players": null, "reason": "bad_sort" } for any other sort.
Events
GET /api/events
Every event, newest first. Use an id from here with the event endpoint below.
curl https://klyx.org/api/events
{
"events": [
{
"id": "kgpoh",
"name": "Klyx Games: Pixels Of Hope",
"startDate": "2026-10-10T19:00:00.000Z",
"hidden": false
},
{
"id": "kgyappertron",
"name": "Klyx Games: Yappertron",
"startDate": "2026-09-12T19:00:00.000Z",
"hidden": false
}
]
}
- Trimmed above to the two newest.
- An
idis also the last part of an event page's address:kgonyxfromklyx.org/event/kgonyx. hiddenistruewhile an event's results are hidden. It's still listed, but the event endpoint hides its scores.- An event with no date yet has
startDate: nulland comes last.
Errors: only 500 if something broke on our end.
Event
GET /api/event/:eventId
One event's teams, players and per-game scores. This is what the live standings on an event page poll.
curl https://klyx.org/api/event/kg8
{
"event": {
"_id": "kg8",
"eventName": "Klyx Games #8",
"startDate": "2026-06-28T14:00:00.000Z",
"hidden": false,
"teams": [
{
"id": "pink",
"teamName": "Pink Penguins",
"color": 16733695,
"coins": 16387,
"players": [
{ "id": "d4e38500-2701-4d1b-b820-4eb69fac44da", "username": "Trolliant", "indivCoins": 4163 }
]
}
],
"games": [
{
"id": "souls",
"gameName": "Souls",
"multiplier": 1,
"hidden": false,
"gameScore": { "d4e38500-2701-4d1b-b820-4eb69fac44da": 166 },
"totalCoins": { "pink": 751 }
}
]
}
}
- Trimmed above to one team, one player and one game.
- This is the raw event, so its numbers are after multipliers:
indivCoins,coins,gameScoreandtotalCoins. Divide agameScoreby its game'smultiplierto get the before number. gameScoreis keyed by player UUID,totalCoinsby teamid.coloris an RGB integer:16733695is#ff55ff.- Responses carry an
ETag. Send it back asIf-None-Matchand you'll get an empty304when nothing has changed.
Errors: 404 { "event": null, "reason": "not_found" }.