Portal
Sign In Console

AoF (All-in-or-Fold) Strategy Endpoint

AoF adds push/fold pre-flop strategy to the holdem pipeline using CFR-solved equilibrium tables for 2–4 player games at 8bb stacks. No ONNX models — responses are near-instant from a pre-computed table.

Important: Only 8BB stacks are currently supported. Requests with other stack sizes will return an error.

Endpoint

Endpoint: POST /lookup

The AoF mode uses the same endpoint as the standard holdem API. The request is routed to the AoF handler by setting game_mode_code: "aof" in the hand object.

For detailed information about request and response fields, please refer to No Limit Holdem API documentation page.

Example: 3-Player, BB facing BTN push + SB fold

curl --location '<your-base-url>/lookup' \
--header 'Content-Type: application/json' \
--header 'Authorization: <your-api-key>' \
--data '{
    "request_id": "1",
    "hand": {
      "gameuuid": "aof_demo_3p",
      "game_type": "nlhe",
      "game_mode_code": "aof",
      "players": [
        {
          "seat_no": 0,
          "stack": 800,
          "uid": "btn_player",
          "win_amount": 0,
          "rake_amount": 0
        },
        {
          "seat_no": 1,
          "stack": 800,
          "uid": "sb_player",
          "win_amount": 0,
          "rake_amount": 0
        },
        {
          "seat_no": 2,
          "stack": 800,
          "uid": "bb_player",
          "hole_cards": "AcKd",
          "win_amount": 0,
          "rake_amount": 0
        }
      ],
      "actions": {
        "entries": [
          {
            "action": "allin",
            "amount": 800
          },
          {
            "action": "fold"
          }
        ],
        "pot_sizings": false,
        "big_blind_sizings": false
      },
      "big_blind": 100,
      "ante": 0,
      "dealer_seat": 0,
      "sb_seat": 1,
      "bb_seat": 2,
      "roomid": "aof_demo_room",
      "straddle_seat": -1,
      "post_seats": [],
      "small_blind": 50
    },
    "hints": [],
    "services": [
      "RL"
    ],
    "mode": "bot"
  }'

Response

AoF returns the same rich StrategyResponse format as cash games (request, solution_information, strategy.actions[], etc.). The CFR table lookup is used instead of ONNX inference, but the response is formatted identically to holdem cash.

Only two actions will appear in the response: fold and allin.

Example response:

{
    "flags": [],
    "request": {
        "hand": {
            "actions": {
                "big_blind_sizings": false,
                "entries": [
                    {
                        "action": "allin",
                        "amount": 800
                    },
                    {
                        "action": "fold"
                    }
                ],
                "pot_sizings": false
            },
            "ante": 0,
            "bb_seat": 2,
            "big_blind": 100,
            "dealer_seat": 0,
            "game_mode_code": "aof",
            "game_type": "nlhe",
            "gameuuid": "aof_demo_3p",
            "players": [
                {
                    "rake_amount": 0,
                    "seat_no": 0,
                    "stack": 800,
                    "uid": "btn_player",
                    "win_amount": 0
                },
                {
                    "rake_amount": 0,
                    "seat_no": 1,
                    "stack": 800,
                    "uid": "sb_player",
                    "win_amount": 0
                },
                {
                    "hole_cards": "AcKd",
                    "rake_amount": 0,
                    "seat_no": 2,
                    "stack": 800,
                    "uid": "bb_player",
                    "win_amount": 0
                }
            ],
            "post_seats": [],
            "roomid": "aof_demo_room",
            "sb_seat": 1,
            "small_blind": 50,
            "straddle_seat": -1
        },
        "hints": [],
        "mode": "bot",
        "request_id": "1",
        "services": [
            "RL"
        ]
    },
    "solution_information": {
        "bet_profile_config": {
            "bet_profile": "no_profile_applied",
            "bet_profile_config_id": -1,
            "bet_size_mapping_result": "no_profile_applied",
            "betsize_threshold": 0.75,
            "called_pot": -1,
            "is_open_raise": false,
            "pot": -1
        },
        "build_date": "Feb 12 2026 04:57:49",
        "coach_config": {
            "status": "not_requested"
        },
        "obs_string": "[blinds=2|bb=100|ante=0|format=normal]r0p1 STATE:0:r800f:7c7d|AcKd|2d2h:800|800|800:50|100|800",
        "situation_key": {
            "action_pot_seq": {
                "big_blind_size": 100.0,
                "big_blind_sizings": false,
                "entries": [
                    {
                        "action": "allin",
                        "action_time": null,
                        "amount": 800,
                        "player_position": null,
                        "pot_ratio": 2.8,
                        "seat_no": 0
                    },
                    {
                        "action": "fold",
                        "action_time": null,
                        "amount": null,
                        "player_position": null,
                        "pot_ratio": null,
                        "seat_no": 1
                    }
                ],
                "pot_sizings": true
            },
            "action_pot_seq_search": "allin:f",
            "bb_depth": 50.0,
            "decision_action_pot_seq": {
                "big_blind_size": 100.0,
                "big_blind_sizings": false,
                "entries": [
                    {
                        "action": "allin",
                        "action_time": null,
                        "amount": 800,
                        "player_position": null,
                        "pot_ratio": 2.8,
                        "seat_no": 0
                    }
                ],
                "pot_sizings": true
            },
            "decision_action_pot_seq_search": "allin",
            "flop": "na",
            "game_type": "cash__nlhe__8max_ante",
            "players_bin": "3",
            "street": "preflop"
        },
        "source": "rlserv:aof_cfr_table",
        "strategy_profile_config": {
            "game_format": "no_profile_applied",
            "matched_profile_name": "no_profile_applied",
            "strategy_after_adjust": "no_profile_applied",
            "strategy_before_adjust": "no_profile_applied"
        },
        "version": "2.0.0"
    },
    "strategy": {
        "actions": [
            {
                "action": {
                    "action": "fold",
                    "action_time": null,
                    "amount": null,
                    "player_position": null,
                    "pot_size": null,
                    "seat_no": 2
                },
                "action_name": "f",
                "action_seq": {
                    "entries": [
                        {
                            "action": "allin",
                            "amount": 800
                        },
                        {
                            "action": "fold"
                        },
                        {
                            "action": "fold",
                            "amount": null,
                            "seat_no": 2
                        }
                    ]
                },
                "hand_ev": 0.0,
                "hand_strategy": 0.0
            },
            {
                "action": {
                    "action": "allin",
                    "action_time": null,
                    "amount": 800,
                    "player_position": null,
                    "pot_size": 0.0,
                    "seat_no": 2
                },
                "action_name": "allin",
                "action_seq": {
                    "entries": [
                        {
                            "action": "allin",
                            "amount": 800
                        },
                        {
                            "action": "fold"
                        },
                        {
                            "action": "allin",
                            "amount": 800,
                            "seat_no": 2
                        }
                    ]
                },
                "hand_ev": 0.0,
                "hand_strategy": 1.0
            }
        ],
        "decision_action_seq": {
            "big_blind_sizings": false,
            "entries": [
                {
                    "action": "allin",
                    "amount": 800
                },
                {
                    "action": "fold"
                }
            ],
            "pot_sizings": false
        },
        "suggested_action": {
            "action": "allin",
            "action_time": null,
            "amount": 800,
            "player_position": null,
            "pot_size": 0.0,
            "seat_no": 2
        }
    },
    "strategy_profile": null,
    "warnings": []
}

Key Fields

  • game_mode_code: "aof" — routes to the AoF handler (same holdem pipeline)
  • Players listed in acting order (BTN → SB → BB)
  • Hero = player with hole_cards
  • actions.entries = actions taken before the hero's turn ("allin" = push, "fold" = fold)