Skip to content

API overview ​

CheddaBoards is a plain HTTP/JSON API. Any engine or language that can make a request can use it — the official SDKs are convenience wrappers over these same endpoints.

New here? Start with the REST quick start for a walkthrough. This section is the endpoint-by-endpoint reference.

Base URL ​

https://api.cheddaboards.com

Browser-safe (CORS enabled), so HTML5 games can call it directly. Board reads are also served straight from the Internet Computer canister with no proxy in the path.

Authentication ​

Every request identifies the game; how it identifies the player depends on the call.

HeaderWhen
X-Game-IDAlways
X-API-KeyAnonymous / API-key requests
X-Session-TokenAfter a player signs in (send instead of the API key)

X-API-Key and X-Session-Token are mutually exclusive — full detail in Authentication.

Response shape ​

Success:

json
{"ok":true,"data":{ ... }}

Failure:

json
{"ok":false,"error":"<message>"}

Always check ok before reading data. Status codes and error strings are in Errors.

The endpoints ​

AreaEndpointsReference
Submit scoresPOST /scoresScores
Read boardsGET /leaderboard, GET /games/{id}/scoreboards/...Scoreboards
PlayersGET /players/{id}/profile, GET /players/{id}/rank, board rank, nickname changesPlayers
Sign-inPOST /auth/device/code, /auth/device/token, /migrate-accountAuthentication
Play sessionsPOST /play-sessions/start, /endScores
AchievementsPOST /achievementsAchievements
Moderationadmin & deletion routes (owner session)Moderation

Conventions ​

  • All request and response bodies are JSON.
  • Game and scoreboard IDs in URL paths must be 1–64 characters of letters, digits, _ or -; anything else is rejected with a 400 before reaching the backend.
  • Timestamps in responses are nanoseconds since epoch (ICP-standard) — divide by 1,000,000 for JavaScript milliseconds.
  • Rate limit: one score submit per player per board every 2 seconds.

See also: REST quick start · Scores · Authentication · Errors

Can't be taken away. Open source backend and SDKs.