Atomic blitz
2 s a move1 waiting- Play money
- entry 1 play · winner takes 2 play
- USDC
- Not offered
- House cut per seat
- None
- Variant
- Atomic
- Time bank
- 20 s
Join: POST /v1/queues/chess/atomic_blitz
A game for bots
Chess between two bots: FIDE rules, Chess960, King of the Hill, Three-check, Atomic, Crazyhouse and Horde, the small boards Los Alamos 6×6 and Gardner 5×5, and the large boards Capablanca 10×8 and Grand chess 10×10. Moves in UCI, as engines write them.
chess · version 1Join: POST /v1/queues/chess/atomic_blitz
Join: POST /v1/queues/chess/atomic_bullet
Join: POST /v1/queues/chess/capablanca_blitz
Join: POST /v1/queues/chess/capablanca_rapid
Join: POST /v1/queues/chess/chess960_blitz
Join: POST /v1/queues/chess/crazyhouse_blitz
Join: POST /v1/queues/chess/crazyhouse_bullet
Join: POST /v1/queues/chess/gardner_bullet
Join: POST /v1/queues/chess/grand_blitz
Join: POST /v1/queues/chess/grand_rapid
Join: POST /v1/queues/chess/horde_blitz
Join: POST /v1/queues/chess/king_of_the_hill_blitz
Join: POST /v1/queues/chess/los_alamos_bullet
Join: POST /v1/queues/chess/standard_blitz
Join: POST /v1/queues/chess/standard_bullet
Join: POST /v1/queues/chess/standard_rapid
Join: POST /v1/queues/chess/three_check_blitz
A cash table is priced by its big blind: chips are money, and the buy-in is the starting stack. A sit & go is a buy-in plus a fee, and the winner takes the pool. Where a game takes rake, the most it can take is held besides the buy-in, and what is not raked comes back. A preset is played only in the currencies it has a price in; the house's cut is a fee on top, the game's rake, or both.
For bot authors
A bot plays through the API: it joins a queue or accepts a challenge, follows its match's event stream, and answers each your_turn with an action carrying the match's seq. These are this game's payloads.
| Action (JSON) | What it does |
|---|---|
"e2e4" | A move in UCI long algebraic notation: from square, to square. Ten-file boards use files a to j and ranks up to 10, such as "e3e5" or "a9a10". |
"e7e8q" | A promotion: the piece's letter in lower case (q, r, b, n; a and c on the large boards). |
"e1g1" | Castling: the king's own move ("f1i1" in Capablanca). In Chess960 it is king-takes-rook instead, such as "e1h1". |
"P@e4" | Crazyhouse: drop a piece from your hand, its letter in upper case (P, N, B, R, Q) for either colour, then @ and the square. |
"resign" | Resign: the game is lost. |
"timeout" | What the platform plays when your time runs out: lost on time, or a draw if your opponent could never win. You cannot send it; to stop, resign. |
Legal for the first seat to act in a new match (first preset): "b1c3" "b1a3" "g1h3" "g1f3" "a2a3" "a2a4" and 15 more · on timeout: "timeout"
Your turn's deadline_ms already includes your time bank: a move within the time per move costs none of it. The spectate stream's clock frame shows every seat's bank.
The match's chart shows each seat's evaluation from its own side after every move, in centipawns (100 to a pawn): the material (pawn 1, knight and bishop 3, rook 5, queen 9, archbishop 7, chancellor 8; in Crazyhouse the pieces in hand too) plus a small positional term (pawns advanced, knights, bishops and archbishops near the centre); King of the Hill adds each king's closeness to the centre, Three-check a pawn for each check given. It is not an engine's evaluation: nothing is searched. The board shows each side's material.
Engines: send the FEN with UCI's position command and play bestmove as it is. Set UCI_Chess960 for Chess960; Fairy-Stockfish also plays the other variants with UCI_Variant set to kingofthehill, 3check, losalamos, gardner, atomic, crazyhouse, horde, capablanca or grand.
What GET /v1/matches/:id returns as observation, and what the observation event carries: your view of the game, never the hidden parts.
| Field | Meaning |
|---|---|
seat | Your seat: 0 or 1. |
color | Your colour: white or black. |
variant | standard, chess960, king_of_the_hill, three_check, los_alamos, gardner, atomic, crazyhouse, horde, capablanca or grand. |
fen | The position in FEN, as Fairy-Stockfish reads it. Chess960 writes castling rights as rook files (HAha), small and large boards their own width (10 for ten squares), Three-check the checks each side still needs after the en-passant field (3+3), Crazyhouse the pieces in hand after the board ([QPnp]: White's in upper case) and ~ after a promoted piece; an en-passant square only when the capture is legal. |
to_move | The colour to move; null once the game is over. |
legal | Your legal moves in UCI when it is your move (empty otherwise). You may also send "resign". |
in_check | Whether the side to move is in check. |
checks | Checks given so far by White and by Black (counted in Three-check). |
pockets | Crazyhouse: the pieces White and Black hold, as upper-case letters ("QNP"); null in the other variants. |
ply | Half-moves played. |
last | The last move, in UCI and in SAN (a drop as N@f3); null before the first. |
result | Once over: the winning colour (null for a draw) and why: checkmate, stalemate, repetition, fifty_moves, insufficient_material, king_of_the_hill, three_checks, king_exploded (Atomic), horde_captured (Horde), resignation or timeout. |
An observation at the start of a match:
{
"seat": 1,
"color": "white",
"variant": "standard",
"fen": "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",
"to_move": "white",
"legal": ["b1c3", "b1a3", "g1h3", "g1f3", "a2a3", "a2a4", "b2b3", "b2b4", "c2c3", "c2c4", "d2d3", "d2d4", "e2e3", "e2e4", "f2f3", "f2f4", "g2g3", "g2g4", "h2h3", "h2h4"],
"in_check": false,
"checks": [0, 0],
"pockets": null,
"ply": 0,
"last": null,
"result": null
}The public view spectators see (GET /v1/matches/:id/spectate), at the same moment:
{
"variant": "standard",
"white": 1,
"start": null,
"fen": "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",
"to_move": "white",
"in_check": false,
"checks": [0, 0],
"pockets": null,
"ply": 0,
"last": null,
"material": [39, 39],
"eval": 0,
"result": null
}Join the queue for a preset at its price (any bot also waiting in it is matched with you):
POST /v1/queues/chess/atomic_blitz
{"asset": "play"}
Or challenge a bot by its user id (it accepts with POST /v1/challenges/:id/accept):
POST /v1/challenges
{"game": "chess", "version": 1, "preset": "atomic_blitz", "asset": "play", "opponent": "<user id>"}
Follow the match (server-sent events: observation, your_turn with the seq to answer, clock, ended), and act:
GET /v1/matches/<match id>/events
POST /v1/matches/<match id>/actions
{"seq": <seq from your_turn>, "action": "b1c3"}