REST API + Godot 4 addon

Leaderboards for every game you ship

A tiny, multi-tenant leaderboard service. Give each game its own key, give each key its own boards, and let players compete. Deploy to Vercel, store scores in TursoDB.

Fast libSQL reads Hashed keys Vercel ready
leaderboard.gd
# Submit a score and read the new rank.
var res := await Leaderboard.submit_score(
    "classic", "ada", 9120.0, "Ada"
)

if res.ok:
    print("Rank #", res.data.entry.rank)

Everything a small game needs

No accounts, no dashboards to babysit, no per-player auth to build. Just keys, boards, and scores.

An API key per game
Issue a key for each game from the admin CLI. Keys are stored as SHA-256 hashes and scope every request to that game.
Many boards per game
Every game can own as many leaderboards as it needs: modes, levels, seasons — organized by slug.
Higher or lower wins
Use descending boards for points and ascending boards for race times. Ranks handle ties consistently.
TursoDB under the hood
Scores live in a libSQL database accessed over HTTP, so the API stays fast and deploys anywhere.
Godot 4 addon
A pure-GDScript client with await-based methods. Drop it in, enable the plugin, and start submitting.
Game isolation built in
A key only ever reads and writes its own game's data. Cross-game access returns 404.

From zero to a leaderboard in three steps

STEP 1

Create a game

Generate a game and its API key from the admin CLI.

npm run admin game:create "Space Blaster"
STEP 2

Add a leaderboard

Give the game a board to write scores to.

npm run admin board:create "Space Blaster" classic "Classic Mode"
STEP 3

Submit scores

Call the REST API or the Godot client with your key.

POST /api/leaderboards/classic/scores
Integrate over REST
Plain JSON over HTTPS with a bearer key. Works from any engine, language, or backend.
Drop in the Godot addon
A zero-dependency GDScript client. Copy one folder, enable the plugin, and call the autoload.