Replay packs
Solved heads-up postflop strategy trees — flop, turn, and river — as JSON bundles.
The postflop API serves replay packs: curated heads-up postflop scenarios solved by our own CFR engine, each pack covering one preflop line (e.g. "BTN opens, BB calls, 50bb") across a texture-spanning set of flops. A bundle contains the full strategy tree per board — every betting node, every hand's mixed strategy, with EV.
Packs are browsable in the viewer at pokerstudy.ai/replays. On pokerdata.io the same solves are walked through /api/v1/postflop.
Authentication for the Poker Study AI replay viewer is a signed-in session plus an active Studio subscription — not a pdk_ key. On pokerdata.io the raw archive is a $50 purchase per pack (/api/postflop/download/<pack>); signing in does not include it. The pokerdata.io catalog and node endpoints use the same pdk_ Bearer key as the preflop API (catalog is free).
Available packs
| Pack id | Scenario | Stacks | Boards |
|---|---|---|---|
nlhe-srp-btn-vs-bb-50bb | Single-raised pot — BTN opens, BB calls | 50bb | 5 flops |
nlhe-3bet-btn-vs-ep-100bb | 3-bet pot — EP opens, BTN 3-bets, EP calls | 100bb | 18 flops |
The catalog grows over time; an unknown id returns 404 {"error": "unknown pack \"<id>\""}.
pokerdata.io (Bearer key)
/api/v1/postflop/catalogfree · no keyEvery browsable pack with preflop line, seats, pot, and solved boards. Free, no key. Each pack lists its bet-size trees in sizingTrees: "75" (75% pot on every street, plus all-in) is the pack id itself; "33" (33% pot on the flop, then 75% on the turn and river, plus all-in) is the `<pack>-flop33` pack id, which /api/v1/postflop/node accepts as `pack`. Each board's trees array says which trees it is solved under.
curl "https://pokerdata.io/api/v1/postflop/catalog"/api/v1/postflop/nodePostflop solver node
packstringrequiredboardstringrequired- Spaced board. URL-encode spaces.
pathstringoptional- JSON array of segments from the root.
combostringoptional- Optional exact combo. On packs whose catalog advertises reconstructed flop action EV and boards where actionEv.available is true, the matching hand includes action_ev and ev_loss arrays parallel to the node actions.
curl "https://pokerdata.io/api/v1/postflop/node" \
-H "Authorization: Bearer pdk_YOUR_KEY"Walk a board street by street by appending segments like "Bet 5.5" or "deal:7c" to path.
Every pack is solved under two bet-size trees, listed in the catalog's sizingTrees:
| Tree | Pack id | Sizing |
|---|---|---|
75 | <pack> | 75% pot on every street, plus all-in |
33 | <pack>-flop33 | 33% pot on the flop, then 75% pot on the turn and river, plus all-in |
Query the 33% tree by passing its pack id to the node endpoint. Each board's trees array lists the trees it is solved under; a flop missing from a tree is listed under that tree's missing.
Replay bundles (Studio session)
/api/replays/{id}/dataReplay-pack bundle
idstringrequired
curl "https://pokerdata.io/api/replays/{id}/data" \
-H "Authorization: Bearer pdk_YOUR_KEY"/api/replays/{id}Verifies Studio, then 302s to the gzipped JSON on the CDN.
idstringrequired
curl "https://pokerdata.io/api/replays/{id}" \
-H "Authorization: Bearer pdk_YOUR_KEY"Reading a strategy tree
To answer "what does the solver do with A♠A♥ after check–check on the flop":
- Find the board in
boards[]. - Find the node whose
pathequals["Check", "Check"]— turn nodes follow the flop action in the walk. - Look up the combo in
hands[];freqsis parallel to that node'sactions.
The pot and add fields are in bb, so bet sizes render directly (Bet 13.1 into a 17.5 pot = 75%).
Per-action EV
Pass an exact combo to the keyed node endpoint to request per-action EV for that hand:
GET /api/v1/postflop/node?pack=nlhe-srp-co-vs-bb-100bb&board=3h%203d%202s&path=%5B%22Check%22%5D&combo=AsAd
When the pack advertises actionEvCoverage and the selected board has actionEv.available: true in the catalog, flop hands include:
action_ev— absolute EV in bb for each action, parallel toactionsev_loss— EV given up versus the highest-EV actionev_source— eitherreconstructed_complete_turn_treefor scalar-EV exports orreconstructed_action_loss_anchorfor older loss-only exports
Reconstruction follows the published opponent strategy with exact card removal across all 49 physical turns, then anchors the action vector to the published equilibrium ev. Three older loss-only boards instead use their exact terminal Fold or All-in value to anchor the published relative losses. Current exact coverage is 400 of 441 boards across the nine supported pack families; the remaining 41 sampled-turn boards report reason: "partial_turn_fanout" and retain their original fields rather than estimating hidden continuations.