Skip to content

Tables and rounds ​

List tables, enable or disable tables through the API (subject to your plan quota), and read a round result.

Guide: read the integration guide for this area

TIP

Examples are signed with the example key and timestamp from "Authentication & signing", so you can re-check them in the Signature debugger.

Get a round result ​

GET /api/tenant/v1/rounds/{roundId}

A settled (or voided, or disputed) round: result code, cards, points and correction revision. Rounds that are not settled yet return ROUND_NOT_FOUND.

  • roundId is a 26-character upper-case ULID (the roundId of a bet). A malformed ID returns NOT_FOUND (unknown endpoint).

Parameter

ParameterInTypeRequiredDescription
roundIdpathstringyesRound ID (26-character upper-case ULID).
Format: ^[0-9A-Z]{26}$

Example request

http
GET /api/tenant/v1/rounds/01K5Y0B8Z6R2M4N7P9Q3S5T8VW HTTP/1.1
Host: elite.ewin888.com
X-Api-Key: ek_s_1a_XXXXXXXXXXXXXXXX
X-Timestamp: 1790218800
X-Nonce: ex0f611c801aa08d65821fe5
X-Signature: b2e8e4652361cb5569e2db5ce643a7a7f9068baa376bfe7fd41166795049d633

Response data

FieldTypeDescription
roundIdstringRound ID (26-character upper-case ULID).
Format: ^[0-9A-Z]{26}$
tableIdstringTable ID, for example S01 (see GET /tables).
Length: 1–…
shoestringShoe number; for Niu Niu the session.
roundintegerRound number within the shoe; for Niu Niu within the session.
statusstringsettled; void; disputed (a correction or void arrived outside the guardrails after settlement, so the original result and amounts stand).
Values: settled, void, disputed
codestring | nullResult code (one hexadecimal character for baccarat and dragon tiger; 5 characters for Niu Niu, for example 5893A).
cardInfostring | nullCard string (for Niu Niu first card|banker|player 1|player 2|player 3).
resultBaccaratResult | DragonTigerResult | NiuniuResult | nullStructured result (baccarat, dragon tiger or Niu Niu); null when there is none.
completeboolean | nulltrue when all cards are known; false when the data source only gave the outcome and points (for Niu Niu, each hand's outcome, possibly with its rank).
revintegerResult revision (1 for the first result, +1 per correction; a void also adds 1).
openedAtstring (date-time) | nullWhen betting opened.
settledAtstring (date-time) | nullWhen the round was first settled.

Example response

Baccarat: banker wins with 6

json
{
  "ok": true,
  "data": {
    "roundId": "01K5Y0B8Z6R2M4N7P9Q3S5T8VW",
    "tableId": "S01",
    "shoe": "260924-03",
    "round": 12,
    "status": "settled",
    "code": "1",
    "cardInfo": "122334424000",
    "result": {
      "cards": {
        "P1": "2C",
        "B1": "4H",
        "P2": "3D",
        "B2": "2S",
        "P3": "10S"
      },
      "player": 5,
      "banker": 6,
      "winner": "B",
      "playerPair": false,
      "bankerPair": false
    },
    "complete": true,
    "rev": 1,
    "openedAt": "2026-09-24T03:00:30.012Z",
    "settledAt": "2026-09-24T03:01:20.480Z"
  }
}

Niu Niu: banker Bull 8, players 1 and 3 win

json
{
  "ok": true,
  "data": {
    "roundId": "01K65N7Q2W4E6R8T0Y1V3J5K7P",
    "tableId": "N01",
    "shoe": "260928-01",
    "round": 7,
    "status": "settled",
    "code": "5893A",
    "cardInfo": "7H|KS QD 10C 3S 5H|4C 6D JS 9C KH|2D 8S QC AH 2C|7D 3H KD 5C 5D",
    "result": {
      "cards": {
        "F": "7H",
        "B-1": "KS",
        "B-2": "QD",
        "B-3": "10C",
        "B-4": "3S",
        "B-5": "5H",
        "P1-1": "4C",
        "P1-2": "6D",
        "P1-3": "JS",
        "P1-4": "9C",
        "P1-5": "KH",
        "P2-1": "2D",
        "P2-2": "8S",
        "P2-3": "QC",
        "P2-4": "AH",
        "P2-5": "2C",
        "P3-1": "7D",
        "P3-2": "3H",
        "P3-3": "KD",
        "P3-4": "5C",
        "P3-5": "5D"
      },
      "hands": {
        "B": 8,
        "P1": 9,
        "P2": 3,
        "P3": 10
      },
      "winners": {
        "P1": "P",
        "P2": "B",
        "P3": "P"
      }
    },
    "complete": true,
    "rev": 1,
    "openedAt": "2026-09-28T06:30:05.010Z",
    "settledAt": "2026-09-28T06:30:51.640Z"
  }
}

Error codes

CodeHTTPMeaning
ROUND_NOT_FOUND404The round does not exist or is not settled yet.
NOT_FOUND404unknown endpoint: no such method and path (for example GET on a POST endpoint, or a round ID that is not a 26-character upper-case ULID). table not found: the table to enable or disable does not exist.

Every endpoint can also return the common errors (UNAUTHORIZED, IP_NOT_ALLOWED, TENANT_SUSPENDED, RATE_LIMITED, INTERNAL_ERROR…).

List tables ​

GET /api/tenant/v1/tables

The tables you can choose: platform tables, tables you built yourself, and tables other merchants share with you (with provider; listed only while the platform allows cross-merchant sharing and the provider's share is approved and includes you), plus whether you have enabled each one (enabled). Players only see tables you have enabled.

Example request

http
GET /api/tenant/v1/tables HTTP/1.1
Host: elite.ewin888.com
X-Api-Key: ek_s_1a_XXXXXXXXXXXXXXXX
X-Timestamp: 1790218800
X-Nonce: exfe6fa2bddbdf8319ac6b88
X-Signature: 8f3157bbe143fb81ed69dd409de7b32bdb5a3cc30b42f18b58e1c880a39b09a3

Response data

FieldTypeDescription
tablesTable[]
tables[].tableIdstringTable ID, for example S01 (see GET /tables).
Length: 1–…
tables[].gamestringGame: baccarat, dragontiger, holdem (Texas Hold'em) or niuniu (Niu Niu).
Values: baccarat, dragontiger, holdem, niuniu
tables[].variantsstring[]Variants offered at this table.
tables[].namemap<string, string>Table name per language, keyed by language code (CHT, CHS, ENG…).
tables[].statusstringopen; maintenance (for example the data source is down).
Values: open, maintenance
tables[].betSecondsintegerDefault betting time in seconds.
tables[].enabledbooleanWhether you have enabled this table.
tables[].providerobjectOnly on tables another merchant shares with you (cross-merchant sharing): the provider. Your players use your bet limits and you settle with them as usual; the table counts towards your table count.
tables[].provider.namestringProvider name.

Example response

json
{
  "ok": true,
  "data": {
    "tables": [
      {
        "tableId": "S01",
        "game": "baccarat",
        "variants": [
          "classic",
          "nocomm"
        ],
        "name": {
          "CHT": "模擬百家樂 1",
          "CHS": "模拟百家乐 1",
          "ENG": "Sim Baccarat 1"
        },
        "status": "open",
        "betSeconds": 20,
        "enabled": true
      },
      {
        "tableId": "S03",
        "game": "dragontiger",
        "variants": [
          "classic"
        ],
        "name": {
          "CHT": "模擬龍虎",
          "CHS": "模拟龙虎",
          "ENG": "Sim Dragon Tiger"
        },
        "status": "open",
        "betSeconds": 20,
        "enabled": false
      },
      {
        "tableId": "N01",
        "game": "niuniu",
        "variants": [
          "standard"
        ],
        "name": {
          "CHT": "模擬牛牛 N01",
          "CHS": "模拟牛牛 N01",
          "ENG": "Sim Niu Niu N01"
        },
        "status": "open",
        "betSeconds": 15,
        "enabled": true
      },
      {
        "tableId": "STUDIO-B1",
        "game": "baccarat",
        "variants": [
          "classic",
          "nocomm"
        ],
        "name": {
          "CHT": "旗艦攝影棚 B1",
          "ENG": "Studio B1"
        },
        "status": "open",
        "betSeconds": 20,
        "enabled": true,
        "provider": {
          "name": "旗艦娛樂"
        }
      }
    ]
  }
}

Error codes

No endpoint-specific error codes.

Every endpoint can also return the common errors (UNAUTHORIZED, IP_NOT_ALLOWED, TENANT_SUSPENDED, RATE_LIMITED, INTERNAL_ERROR…).

Enable a table ​

POST /api/tenant/v1/tables/enable

Makes the table visible and playable for your players; the same rules as the Console "Table selection" page.

  • The free plan can enable up to its quota (2 by default); beyond that you get QUOTA_EXCEEDED.
  • The paid plan has no quota and billing starts on the day you enable (USD 100 per table per month, charged daily and pro rata from your prepaid credit).
  • A suspended account gets ACCOUNT_LOCKED. Enabling an already enabled table is not an error.

Request body (application/json)

FieldTypeRequiredDescription
tableIdstringyesTable ID, for example S01 (see GET /tables).
Length: 1–…

Example request

http
POST /api/tenant/v1/tables/enable HTTP/1.1
Host: elite.ewin888.com
X-Api-Key: ek_s_1a_XXXXXXXXXXXXXXXX
X-Timestamp: 1790218800
X-Nonce: exe402a4d70d5b26f9ff7ecb
X-Signature: 4fe5abf3732be5a21a02bc5e38589ee2fec4761489dfcefd4080cc5985be9d6d
Content-Type: application/json

{"tableId":"S01"}

Response data

FieldTypeDescription
tableIdstringTable ID, for example S01 (see GET /tables).
Length: 1–…
enabledbooleanEnabled after the call.
usedintegerTables enabled now.
quotainteger | nullTable quota of your plan; null on the paid plan (no limit).

Example response

json
{
  "ok": true,
  "data": {
    "tableId": "S01",
    "enabled": true,
    "used": 2,
    "quota": 2
  }
}

Error codes

CodeHTTPMeaning
INVALID_PARAMETER400A required field is missing, or a field has the wrong format or value; message names the field.
NOT_FOUND404unknown endpoint: no such method and path (for example GET on a POST endpoint, or a round ID that is not a 26-character upper-case ULID). table not found: the table to enable or disable does not exist.
QUOTA_EXCEEDED409You have reached the free plan's table quota (2 tables by default).
ACCOUNT_LOCKED409The account is suspended or closed, so tables cannot be enabled.

Every endpoint can also return the common errors (UNAUTHORIZED, IP_NOT_ALLOWED, TENANT_SUSPENDED, RATE_LIMITED, INTERNAL_ERROR…).

Disable a table ​

POST /api/tenant/v1/tables/disable

Players immediately lose access to the table. On the paid plan the table stops being billed from the next day (the day you disable it still counts).

Request body (application/json)

FieldTypeRequiredDescription
tableIdstringyesTable ID, for example S01 (see GET /tables).
Length: 1–…

Example request

http
POST /api/tenant/v1/tables/disable HTTP/1.1
Host: elite.ewin888.com
X-Api-Key: ek_s_1a_XXXXXXXXXXXXXXXX
X-Timestamp: 1790218800
X-Nonce: ex6856b510b474ee6e5809b2
X-Signature: 4cf44c20f65e287a06f5d8a0a73a4e4144fef2ff5358c344a9cd921899043ffc
Content-Type: application/json

{"tableId":"S01"}

Response data

FieldTypeDescription
tableIdstringTable ID, for example S01 (see GET /tables).
Length: 1–…
enabledbooleanEnabled after the call.
usedintegerTables enabled now.
quotainteger | nullTable quota of your plan; null on the paid plan (no limit).

Example response

json
{
  "ok": true,
  "data": {
    "tableId": "S01",
    "enabled": false,
    "used": 1,
    "quota": 2
  }
}

Error codes

CodeHTTPMeaning
INVALID_PARAMETER400A required field is missing, or a field has the wrong format or value; message names the field.
NOT_FOUND404unknown endpoint: no such method and path (for example GET on a POST endpoint, or a round ID that is not a 26-character upper-case ULID). table not found: the table to enable or disable does not exist.

Every endpoint can also return the common errors (UNAUTHORIZED, IP_NOT_ALLOWED, TENANT_SUSPENDED, RATE_LIMITED, INTERNAL_ERROR…).

elite Tenant Integration API v1