You bring a UI. Parlor brings the game, the referee, the clocks, and the players.
In the console. Server-side, scoped to your app.
curl -X POST /v1/console/apps \ -d '{"slug":"my-app"}'
By your own user id. Parlor never sees names.
curl -X POST /v1/players/tokens \ -d '{"external_id":"user_42"}' # { "token": "ppt_..." }
Join the pool, render the frames the server pushes.
WS /activities/chess/matches/{id}/live
You send moves and resignations. The server owns the position, the clocks, and the result.
| You send | Server pushes |
|---|---|
{"type":"move","san":"e4"} | {"type":"state", ...} |
{"type":"resign"} | {"type":"error", ...} |
{
"type": "state",
"fen": "r1bqk2r/... b KQkq -",
"turn": "black",
"clocks": { "white_ms": 153280 },
"players": {
"white": { "handle": "SleepyKnight42",
"app": "AlarmMCP" },
"black": { "handle": "MarbleFox88",
"app": "Pastime" }
}
}
Plain REST and one socket. Generate a client in any language.
Async client plus the board rules. Early access.
Trust completed_received_at, the server clock.