Player module
This module manages player stats and online player count & list.
It is located at https://api.wynncraft.com/v3/player
Player stats
Collection of endpoints to gather various data on a defined player:
- GET Player main stats
- GET Player full stats
- GET Player character list
- GET Player character data
- GET Player character ability map
WARNING
When requesting a player by its name rather than their UUID there are possible edge-case where multiple names will match the said name, in that case a multi-selector will be returned with player UUIDs as the identifier and their storedName
aside their rank as descriptive keys.
Player main stats
GET .../ 2 minutes TTL
{
"username": str,
"online": bool,
"server": str,
"activeCharacter": str or None,
"uuid": str,
"rank": str,
"rankBadge": str, # URL to the badge SVG in the Wynncraft CDN (only path)
"legacyRankColour": {
"main": str,
"sub": str
},
"shortenedRank": str,
"supportRank": str,
"veteran": bool,
"firstJoin": str,
"lastJoin": str,
"playtime": float,
"guild": {
"name": str,
"prefix": str,
"rank": str,
"rankStars": str
},
"globalData": {
"wars": int,
"totalLevels": int,
"killedMobs": int,
"chestsFound": int,
"dungeons": {
"total": int,
"list": {
"Dungeon Name": int # Number of total completions on all characters
[...]
}
},
"raids": {
"total": int,
"list": {
"Raid Name": int # Number of total completions on all characters
[...]
}
},
"completedQuests": int,
"pvp": {
"kills": int,
"deaths": int
}
},
"forumLink": int or None,
"ranking": {
"Ranking Type": int
[...]
},
"previousRanking": {
"Ranking Type": int
[...]
},
"publicProfile": bool
}
Request Playground
TIP
previousRanking
is stored daily (depending on activity, if the player is not active the stored ranks stay the same), simply doing current rank - previous rank gives player's progression in a leaderboard (it can be negative)
Player full stats
GET .../ 2 minutes TTL
{
"username": str,
"online": bool,
"server": str,
"activeCharacter": str or None,
"uuid": str,
"rank": str,
"rankBadge": str, # URL to the badge SVG in the Wynncraft CDN (only path)
"legacyRankColour": {
"main": str,
"sub": str
},
"shortenedRank": str,
"supportRank": str,
"veteran": bool,
"firstJoin": str,
"lastJoin": str,
"playtime": float,
"guild": {
"name": str,
"prefix": str,
"rank": str,
"rankStars": str
},
"globalData": {
"wars": int,
"totalLevels": int,
"killedMobs": int,
"chestsFound": int,
"dungeons": {
"total": int,
"list": {
"Dungeon Name": int # Number of total completions on all characters
[...]
}
},
"raids": {
"total": int,
"list": {
"Raid Name": int # Number of total completions on all characters
[...]
}
},
"completedQuests": int,
"pvp": {
"kills": int,
"deaths": int
}
},
"forumLink": int or None,
"ranking": {
"Ranking Type": int
[...]
},
"previousRanking": {
"Ranking Type": int
[...]
},
"publicProfile": bool,
"characters": {
"characterUuid": {
"type": str,
"nickname": str,
"level": int,
"xp": int,
"xpPercent": int,
"totalLevel": int,
"wars": int,
"playtime": float,
"mobsKilled": int,
"chestsFound": int,
"blocksWalked": int,
"itemsIdentified": int,
"logins": int,
"deaths": int,
"discoveries": int,
"pvp": {
"kills": int,
"deaths": int,
},
"gamemode": [
"hunted",
"hardcore",
[...]
],
"skillPoints": {
"strength": int,
"dexterity": int,
"intelligence": int,
"defence": int,
"agility": int
},
"professions": {
"fishing": {
"level": int,
"xpPercent": int
},
"mining": {
"level": int,
"xpPercent": int
},
# [...]
},
"dungeons": {
"total": int,
"list": {
"Dungeon Name": int
# [...]
}
},
"raids": {
"total": int,
"list": {
"Raid Name": int
# [...]
}
},
"quests": [
"Quest Name",
[...]
],
},
# [...]
},
}
Request Playground
?fullResult
Structure of characters
is shared with player character data
Player character list
GET .../ 2 minutes TTL
{
"characterUuid": {
"type": str,
"nickname": str,
"level": int,
"xp": int,
"xpPercent": int,
"totalLevel": int,
"gamemode": [
"hunter",
"hardcore",
# [...]
],
"meta": {
"died": bool,
},
},
# [...]
}
Request Playground
Player character data
GET .../ 2 minutes TTL
{
"type": str,
"nickname": str,
"level": int,
"xp": int,
"xpPercent": int,
"totalLevel": int,
"wars": int,
"playtime": float,
"mobsKilled": int,
"chestsFound": int,
"blocksWalked": int,
"itemsIdentified": int,
"logins": int,
"deaths": int,
"discoveries": int,
"pvp": {
"kills": int,
"deaths": int,
},
"gamemode": [
"hunted",
"hardcore",
# [...]
],
"skillPoints": { # Can be empty if !playerProfile
"strength": int,
"dexterity": int,
"intelligence": int,
"defence": int,
"agility": int
},
"professions": {
"fishing": {
"level": int,
"xpPercent": int
},
"mining": {
"level": int,
"xpPercent": int
},
# [...]
},
"dungeons": {
"total": int,
"list": {
"Dungeon Name": int
# [...]
}
} or None,
"raids": {
"total": int,
"list": {
"Raid Name": int
# [...]
}
} or None,
"quests": [
"Quest Name",
# [...]
],
}
Request Playground
WARNING
Players have the ability to hide their skill points which will return an empty object for skillPoints
. To hide your skill points you need to do /toggle publicProfile
in-game which can take up to 10mins to propagate.
Player character ability map
GET .../ 10 mins TTL
[
{
"type": "ability",
"coordinates": {
"x": int,
"y": int
},
"meta": {
"icon": {
"value": dict({
"id": str,
"name": str,
"customModelData": str
}) or str,
"format": str
},
"page": int,
"id": str # Internal id of the ability, abilities in AT response are refered by the same id
},
"familiy": [ # Ability ids listed here are abilities connected to the current one
"ability1"
# [...]
]
},
{
"type": "connector",
"coordinates": {
"x": int,
"y": int
},
"meta": {
"icon": "connector_up_down",
# Connector icon syntax is both direction clockwise like right_left or right_down_left
"page": int
},
"family": [ # Ability ids listed here are abilities assiciated to this connector
"ability1",
# [...]
]
},
# [...]
]
Request Playground
TIP
The ability map above only list abilities the player has enabled and does the pathfinding on the go, it is recommended to associate this map + the ability tree of the class + the ability map of the class
WARNING
Players have the ability to hide their ability tree. Requesting an hidden one will return a 403
error. To hide your AT you need to do /toggle publicProfile
in-game which can take up to 10mins to propagate.
Online players
Online player list
GET .../ 30 seconds TTL
{
"onlinePlayers": int,
"players": {
"playerName": "WC1",
"playerName": "WC43",
# [...]
}
}