Skip to content

Leaderboards API

Submit a score to a leaderboard. Uses UPSERT logic — if the player already has an entry, it’s updated only if the new score is higher.

Auth: x-game-api-key header

Terminal window
curl -X POST https://api.questdata.io/v1/leaderboards \
-H "Content-Type: application/json" \
-H "x-game-api-key: YOUR_API_KEY" \
-d '{
"board_name": "weekly_highscore",
"player_id": "player-123",
"score": 15000,
"player_name": "DragonSlayer",
"metadata": {"level": 42, "character": "warrior"}
}'
FieldTypeRequiredDescription
board_namestringYesLeaderboard identifier (max 255 chars)
player_idstringYesPlayer identifier
scorenumberYesScore value
player_namestringNoDisplay name on the leaderboard
metadataobjectNoAdditional data stored with the entry

The created or updated leaderboard entry.


Fetch ranked entries for a leaderboard.

Auth: x-game-api-key header

Terminal window
curl "https://api.questdata.io/v1/leaderboards/weekly_highscore?limit=10" \
-H "x-game-api-key: YOUR_API_KEY"
ParameterTypeDefaultDescription
limitnumber50Entries to return (max 100)
offsetnumber0Pagination offset
{
"board_name": "weekly_highscore",
"entries": [
{
"rank": 1,
"player_id": "player-123",
"player_name": "DragonSlayer",
"score": 15000,
"metadata": {"level": 42, "character": "warrior"},
"updated_at": "2026-04-08T10:30:00Z"
}
]
}
StatusCause
400Invalid limit or offset value
401Missing or invalid API key