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" ]
}
| Field | Type | Constraints |
|---|---|---|
type | string | required. daily or random. |
score | integer | required. |
level | integer | required. Highest level reached. |
wordsFound | integer | required. |
blocksDropped | integer | required. |
timeTaken | string | required. seconds.hundredths (e.g. 225.00). |
date | string|null | YYYY-MM-DD. Required for type=daily. |
timeGiven | string|null | time limit for daily challenges. |
completed | boolean|null | whether the daily challenge was completed. |
targetWords | array<string>|null | daily challenge word list. |
targetWordsFound | array<string>|null | subset actually found. |
Response — 200 OK
JSON
{
"username": "anders",
"rank": 14
}
Errors
| Code | Meaning |
|---|---|
422 | Validation 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
Acceptheader.
Query params
| Field | Notes |
|---|---|
mode | required. daily or random. |
period | today | this_week | this_month | all. Default all. |
timezone | IANA identifier used to resolve period. |
limit | default 50. |
page | default 1. |
username | if supplied, the user's entry is appended to the page when not already present. |
Response — 200 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
| Code | Meaning |
|---|---|
400 | mode is neither daily nor random. |