Docs/Reference/Lextris

Lextris

All Lextris endpoints are under /v1/games/lextris.

Submit result

POST /v1/games/lextris/results

Submit a finished game's result. Persists the result and returns the caller's rank on the matching leaderboard.

  • Auth: Authenticated

Request

JSON
{
   "type": "daily",
   "score": 41200,
   "level": 12,
   "wordsFound": 84,
   "blocksDropped": 412,
   "timeTaken": "225.00",
   "date": "2026-04-18",
   "timeGiven": "240.00",
   "completed": true,
   "targetWords": [ "FORGE", "ANVIL", "QUEST" ],
   "targetWordsFound": [ "FORGE", "ANVIL" ]
}
FieldTypeConstraints
typestringrequired. daily or random.
scoreintegerrequired.
levelintegerrequired. Highest level reached.
wordsFoundintegerrequired.
blocksDroppedintegerrequired.
timeTakenstringrequired. seconds.hundredths (e.g. 225.00).
datestring|nullYYYY-MM-DD. Required for type=daily.
timeGivenstring|nulltime limit for daily challenges.
completedboolean|nullwhether the daily challenge was completed.
targetWordsarray<string>|nulldaily challenge word list.
targetWordsFoundarray<string>|nullsubset actually found.

Response200 OK

JSON
{
   "username": "anders",
   "rank": 14
}

Errors

CodeMeaning
422Validation failed.

Leaderboard

GET /v1/games/lextris/leaderboard

Get the leaderboard. Two modes: daily (shared puzzle) and random (endless).

  • Auth: Public
  • Cache: 60 seconds; varies by Accept header.

Query params

FieldNotes
moderequired. daily or random.
periodtoday | this_week | this_month | all. Default all.
timezoneIANA identifier used to resolve period.
limitdefault 50.
pagedefault 1.
usernameif supplied, the user's entry is appended to the page when not already present.

Response200 OK

JSON
{
   "data": [
      {
         "display_name": "anders",
         "score": 41200,
         "level": 12,
         "words_found": 84,
         "blocks_dropped": 412,
         "time_taken": "225.00",
         "completed": true,
         "created_at": "2026-04-18T12:00:00+00:00",
         "player_id": 42,
         "avatar_v": 1713456000,
         "date": "2026-04-18",
         "rank": 14
      }
   ],
   "pagination": {
      "current_page": 1,
      "per_page": 50,
      "total": 1204,
      "last_page": 25
   }
}

date is only present for mode=daily. rank is present when the row was resolved with a rank (e.g. via username append).

Errors

CodeMeaning
400mode is neither daily nor random.