Developers

Live game. One afternoon.

You bring a UI. Parlor brings the game, the referee, the clocks, and the players.

API referenceOpen the console
1

Mint a key

In the console. Server-side, scoped to your app.

curl -X POST /v1/console/apps \
 -d '{"slug":"my-app"}'
2

Mint a player token

By your own user id. Parlor never sees names.

curl -X POST /v1/players/tokens \
 -d '{"external_id":"user_42"}'
# { "token": "ppt_..." }
3

Open the socket

Join the pool, render the frames the server pushes.

WS /activities/chess/matches/{id}/live
The match socket

Server pushes. You render.

You send moves and resignations. The server owns the position, the clocks, and the result.

You sendServer 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" }
  }
}

Any stack

Plain REST and one socket. Generate a client in any language.

ParlorKit for Swift

Async client plus the board rules. Early access.

Verify gates server-side

Trust completed_received_at, the server clock.

Full reference at /docs →