On this site
node id
Hyphen-separated string that walks the betting tree from the start of the flop to the current decision.
Grammar
node := "root" ( "-" token )*
token := "f" | "c" | "x" | "b<size>" | "r<size>" | "turn_<card>" | "river_<card>"Tokens
root— start of the flop.f,c,x— fold, call, check (literal solver action keys).b<size>— bet of <size> BIG BLINDS, not a pot percentage (e.g. b1.82). Also how the tree spells an all-in, with <size> = the total.r<size>— raise TO <size> big blinds, absolute, not a multiplier (e.g. r5.46 = raising to 5.46 BB).turn_<card>/river_<card>— board transition to the new street.
Never build a token by hand
Every action in every response carries node_token, its key in the tree. The child node id is a concatenation and nothing else:
next_node_id = node_id + "-" + action.node_tokentype is not the prefix
An all-in facing a bet is reported as type: raise, but the tree keys it b<total>. Deriving r<amount> from the type builds a node that does not exist and answers 404. node_token is immune to that.
Examples
A real line from the current tree (single-raised pot, BTN vs BB, flop 2c2d2h):
| Situation | node | To act |
|---|---|---|
Start of the flop | root | BB |
BB checks | root-x | BTN |
BTN bets 1.82 BB | root-x-b1.82 | BB |
BB raises to 5.46 BB | root-x-b1.82-r5.46 | BTN |
BTN calls, turn 9c falls | root-x-b1.82-r5.46-c-turn_9c | BB |
BB checks, BTN bets 8.21 BB | root-x-b1.82-r5.46-c-turn_9c-x-b8.21 | BB |