Authorization: Bearer {token}GAME_JOIN_ROUND)LOTTO99915.status is waiting when no round is open for this room + currency (none opened yet, or a replacement round is about to open after a cancelled one). roundID and seedHash are then "" and endTime is absent. Retry later — Lotto sends no round_started.settled or cancelled. Right after a round closes, the closing round (rolling) and the next one (betting) exist together and this call may answer either. On rolling, call again after a short delay.endTime is RFC3339 UTC with whole seconds (e.g. 2026-09-30T11:45:30Z). No response carries server time, so the countdown runs on the client clock.roundID (capital ID). Send it back as roundID in the bet body, but as query roundId (lower-case d) on …/result.clientSeedSlots; keep them in sync with SSE seed_slot_updated by replacing the slot at its index.pendingBets / pendingTotalBet restore the bet slip, but only ONE of the caller's accepted bet calls in this round is returned. A player who bet several times sees one call's items; settlement still counts every bet.pendingBets and pendingTotalBet are decimal strings.roomId simply answers waiting.currency query, else the session currency.betting or rolling) for game + room + currency in the caller's demo or real set; none gives waiting.player_joined on the room's event stream.endTime in UTC.curl --location 'https://dev-api.ambfairgame.com/gapi/v1/gapi/v1/g/lotto/rooms/1/round?currency=THB&token=tok_synthetic_7f3a9c' \
--header 'Authorization: Bearer 3f9a1c7e5b2d4f6081a3c5e7f9b1d3f5a7c9e1b3d5f7a9c1e3b5d7f9a1c3e5b7' \
--header 'Accept-Language: th'{
"code": "0",
"description": "Success.",
"traceID": "0f8e2c1a-6b3d-4e5f-9a7b-1c2d3e4f5a6b",
"data": {
"roundID": "tbq1y2c9d04ab7e",
"status": "betting",
"endTime": "2026-09-30T12:00:00Z",
"seedHash": "3c8e1f0a9d7b5c2e4f6a8b0d1c3e5f7a9b2d4c6e8f0a1b3c5d7e9f2a4b6c8d0e"
}
}