curl --request POST \
--url https://hedgeem-server.qeetoto.com/api/tables/{tableId}/advance \
--header 'Authorization: Bearer <token>'import requests
url = "https://hedgeem-server.qeetoto.com/api/tables/{tableId}/advance"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://hedgeem-server.qeetoto.com/api/tables/{tableId}/advance', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://hedgeem-server.qeetoto.com/api/tables/{tableId}/advance",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://hedgeem-server.qeetoto.com/api/tables/{tableId}/advance"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://hedgeem-server.qeetoto.com/api/tables/{tableId}/advance")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://hedgeem-server.qeetoto.com/api/tables/{tableId}/advance")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"tableId": 1,
"gameId": "game-001",
"gameState": "STATUS_HOLE",
"bettingStage": 0,
"numberOfHands": 4,
"numberOfSeats": 6,
"jackpotValue": 1250,
"hands": [
"AcKd",
"QsJs",
"8h7c",
"5d2c"
],
"flopCard1": "Ah",
"flopCard2": "3s",
"flopCard3": "9d",
"turnCard": null,
"riverCard": null,
"seats": [
{
"seatId": 1,
"playerId": "abc123",
"playerName": "Simon",
"seatBalance": 500,
"avatarImageUrl": "/avatars/user_square.jpg"
}
],
"bets": [
{
"playerId": "abc123",
"bettingStage": 0,
"seatIndex": 0,
"handIndex": 0,
"betAmount": 50,
"recordedOdds": 1.6
}
],
"handOdds": [
{
"handIndex": 0,
"bettingStage": 0,
"handStatus": "IN_PLAY_FAVOURITE",
"winPercentage": 62.4,
"drawPercentage": 2.1,
"odds": 1.6
}
]
}{
"error": "betAmount must be a positive number."
}{
"error": "Missing or invalid Authorization header."
}Advance game
Advances the game to the next stage:
- Setup → Hole — shuffles deck, deals two cards to each hand
- Hole → Flop — deals three community cards
- Flop → Turn — deals the turn card
- Turn → River — deals the river card, resolves winning hand, pays out bets
- River → Setup — clears the table for the next game
Odds are recalculated at each stage. Dead hands (cannot win) are marked.
Equivalent to get_next_game_state_object in the legacy C# server.
curl --request POST \
--url https://hedgeem-server.qeetoto.com/api/tables/{tableId}/advance \
--header 'Authorization: Bearer <token>'import requests
url = "https://hedgeem-server.qeetoto.com/api/tables/{tableId}/advance"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://hedgeem-server.qeetoto.com/api/tables/{tableId}/advance', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://hedgeem-server.qeetoto.com/api/tables/{tableId}/advance",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://hedgeem-server.qeetoto.com/api/tables/{tableId}/advance"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://hedgeem-server.qeetoto.com/api/tables/{tableId}/advance")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://hedgeem-server.qeetoto.com/api/tables/{tableId}/advance")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"tableId": 1,
"gameId": "game-001",
"gameState": "STATUS_HOLE",
"bettingStage": 0,
"numberOfHands": 4,
"numberOfSeats": 6,
"jackpotValue": 1250,
"hands": [
"AcKd",
"QsJs",
"8h7c",
"5d2c"
],
"flopCard1": "Ah",
"flopCard2": "3s",
"flopCard3": "9d",
"turnCard": null,
"riverCard": null,
"seats": [
{
"seatId": 1,
"playerId": "abc123",
"playerName": "Simon",
"seatBalance": 500,
"avatarImageUrl": "/avatars/user_square.jpg"
}
],
"bets": [
{
"playerId": "abc123",
"bettingStage": 0,
"seatIndex": 0,
"handIndex": 0,
"betAmount": 50,
"recordedOdds": 1.6
}
],
"handOdds": [
{
"handIndex": 0,
"bettingStage": 0,
"handStatus": "IN_PLAY_FAVOURITE",
"winPercentage": 62.4,
"drawPercentage": 2.1,
"odds": 1.6
}
]
}{
"error": "betAmount must be a positive number."
}{
"error": "Missing or invalid Authorization header."
}Authorizations
Supabase Auth JWT. Obtain via Supabase Auth sign-in.
Path Parameters
Unique numeric table identifier
x >= 11
Response
Updated game state after advancing
Full game state for a Texas Hedge'Em table at a point in time. This is the primary object consumed by the game client (gameClient/).
1
"game-001"
The lifecycle state of a Texas Hedge'Em game. States progress linearly: SETUP → START → HOLE → FLOP → TURN → RIVER.
UNCHANGED, INVALID_CARD, CARD_ALREADY_DEALT, STATUS_SETUP, STATUS_START, STATUS_MANUAL_DEALING_HOLE, STATUS_HOLE, STATUS_FLOP_CARD1, STATUS_FLOP_CARD2, STATUS_FLOP_CARD3, STATUS_FLOP, STATUS_TURN, STATUS_RIVER "STATUS_HOLE"
The current betting stage.
-1NON_BETTING — no bets accepted (river, setup)0HOLE — betting on hole cards1FLOP — betting on flop cards2TURN — betting on turn card
-1, 0, 1, 2 0
Number of simultaneous hands in play (typically 4)
4
Total seat capacity at this table
6
Current jackpot value in chips
1250
The four hole card pairs as card strings (e.g. "AcKd"). Null before STATUS_HOLE. See Card Notation.
["AcKd", "QsJs", "8h7c", "5d2c"]
First community card. Null before STATUS_FLOP.
"Ah"
"3s"
"9d"
Turn card. Null before STATUS_TURN.
null
River card. Null before STATUS_RIVER.
null
Show child attributes
Show child attributes
All bets placed in the current game
Show child attributes
Show child attributes
Odds panel data for each hand at each betting stage. The game client uses this to render betting panels.
Show child attributes
Show child attributes