Unfortunately the project has been discontinued due to the lack of interest from players. The site works in read-only mode and registration is closed. Feel free to contact the team if you have any questions or thoughts.

Bot API reference

Try to decide how good your hand is at a given moment.
Nothing else matters. Nothing!

Doyle Bunson, professional poker player with 50 years experience

Before we dive into the implementation details we have to focus on the core concept of the stateless communication — the statelessness itself. Your bot will not be a poker player in the usual sense of the word. Instead he will be a poker guru who knows a way out of any situation.

Each time the game is waiting for your action the whole game condition transmits to your input. You get all necessary information about the game state and its history in each action request. You just have to analyze this information and make the appropriate decision.

Request format

Currently we send all requests by the HTTP POST.

name=bot01&pocket=AH+8C&actions=fold%0Acall%0Araise&state=%3C%3Fxml+version%3D%221.0%22+%3F......

As you see the request data consists of four fields:

name
The name of your player at this hand. So you can create several bots with the same URL.
pocket
The pocket cards separated by the whitespace character. Each card consists of two chars — the rank [2-9TJQKA] and the suit [CDSH].
actions
All possible actions separated by the newline character. Supported actions are: fold, check, call, bet, raise, allin.
state
The current game situation in the XML format. Explained below.

Response format

The correct response is the identifier of the action as one word.

call

Remember to check your decision is possible in the current game situation (presents in the actions request field).

If your bot makes invalid response — his action will be treated as fold and you will get the error message by email so you can fix it.

Additionally if your bot becomes unavailable or buggy for a long time he will be blocked until you fix and manually enable him.

State representation format

Unfortunately we couldn't find an existent format that satisfy our needs. So we tried to make our own — the most readable and self-descriptive XML-based format you ever seen ;) Check out the following example. It represents the state of the very common hand in the midst of play.

Warning! Please parse XML by hand only in the last resort!
Google for parse xml your-language to find suitable library. Internally we generate xml with python xml.etree module.

<?xml version="1.0"?>
<game>
  <table button="2">
    <player sit="0" name="vbo"    stack="80" in_stack="100"/>
    <player sit="2" name="lenny"  stack="80" in_stack="100"/>
    <player sit="5" name="psycho" stack="90" in_stack="100"/>
  </table>
  <posts>
    <post amount="10" player="psycho" type="small_blind"/>
    <post amount="20" player="vbo"    type="big_blind"/>
  </posts>
  <betting>
    <round name="preflop">
      <action amount="20" player="lenny"  type="call"/>
      <action amount="10" player="psycho" type="fold"/>
      <action amount="20" player="vbo"    type="check"/>
    </round>
    <round name="flop">
      <action amount="0" player="vbo"   type="check"/>
      <action amount="0" player="lenny" type="check"/>
    </round>
    <round name="turn"/>
    <round name="river"/>
  </betting>
  <community>
    <card rank="Q" suit="H"/>
    <card rank="A" suit="H"/>
    <card rank="7" suit="S"/>
    <card rank="T" suit="S"/>
  </community>
</game>

Document structure notes

table

Describes the table structure. button attribute points to the seat of the Button player. E. g. this hand Button is lenny. table consists of player elements.

For each player you know the name of the bot, his in_stack (stack amount before the dealt) and sit that determines the turn and Button rotation order (from 0 to 8). Note that empty seats are not presented at all. As a help to the newbie players we also calculate and show the current stack amount for each player.

posts

Holds information about antes and blind posts. Type of the post appears in the type attribute. Unsurprisingly amount attribute indicates the post amount.

betting

Holds the betting history round by round. Player's actions appear in the chronological order. Action type may be one of the valid action identifiers (fold, check, call, bet, raise, allin). Each action has the amount that indicates the player's bet after the action applied.

Note that the flop round of the example hand is over — all active players are check. Next action opens up the turn round.

community

The currently known community cards. Cards appear in the chronological order. Each card consists of the suit and the rank.

Tip: count community cards to determine current betting round.
0 — preflop, 3 — flop, 4 — turn, 5 — river.

RELAX NG schema

In fact foregoing format is a subset of the internal format of our engine. Unfortunately we don't have any document describing it right now but you come across this while using our SDK or hacking the sources. Any case you can expect this format will not undergo major changes. We'll try to keep it backward compatible.