Daily card overview
LiveGET
/api/v1/cardFetch all details of the member's daily card.
The card is deposit-gated for the day (evaluated at read time): ≥ 1 successful deposit and today's total ≥ unlock_deposit_thb make eligible = true.
prize_amount_thb applies in CREDIT mode and prize_diamond in DIAMOND mode — the other field is always "0" per the configured mode.
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| Authorization | string | Yes | Used — send Bearer <member access_token> |
| X-Api-Key | string | Yes | Agent API key (ak_…) from the bo screen |
| X-Timestamp | string | Yes | Signing time in unix milliseconds (±300s skew allowed) |
| X-Nonce | string | Yes | Unique per-request value (UUIDv4) for replay protection |
| X-Signature | string | Yes | hex(HMAC-SHA256(secret, canonical)) — see the Authentication page |
| X-Player-IP | string | — | The player's real IP (IPv4/IPv6) — recommended (used in login history) |
| X-Player-UA | string | — | The player's User-Agent (optional — recorded in login history) |
| X-Request-Id | string | — | Your correlation id — echoed back as request_uuid (recommended) |
| x-lang | string | — | th (default) or en — the language of message |
Response
Fields in data
| Field | Type | Required | Description |
|---|---|---|---|
| enabled | boolean | — | Whether the card is enabled at the agent level — hide the menu when false (a DIAMOND-mode card is only enabled when the agent's diamond program is also on). |
| reward_mode | string | — | The agent's reward mode: CREDIT = pays wallet credit · DIAMOND = pays diamonds (one mode per agent).CREDIT | DIAMOND |
| unlock_deposit_thb | string | — | The cumulative successful-deposit amount for today needed to unlock a flip (THB, string; "0" = any ≥ 1 successful deposit unlocks). |
| deposited_today_thb | string | — | The member's total successful deposits today (THB, string) — show progress against unlock_deposit_thb |
| deposit_count_today | number | — | Number of successful deposits today |
| eligible | boolean | — | Whether the flip is unlocked (enabled + ≥ 1 successful deposit + total ≥ unlock_deposit_thb) — the flip button should also check eligible && !already_played_today. |
| already_played_today | boolean | — | Whether the card was already flipped today (one flip per day) |
| card_back_image_url | string | null | — | The card-back art (displayable URL; null = default art) |
| background_image_url | string | null | — | The game background art (displayable URL; null = default) |
| slots | object[] | — | All cards (6) ordered by slot_index — per-card probabilities are never exposed. |
| └ slot_index | number | — | Card position (0-5) |
| └ label | string | — | Card label, e.g. "20 บาท" |
| └ prize_amount_thb | string | — | Credit prize of the card (THB, string) — used when reward_mode = CREDIT, "0" is a no-win card |
| └ prize_diamond | number | — | Diamond prize of the card (integer) — used when reward_mode = DIAMOND, 0 is a no-win card |
| today_result | object | null | — | Today's flip result — null when not yet flipped today (shows the played card when already_played_today = true) |
| └ slot_index | number | — | The flipped card |
| └ label | string | — | The flipped card's label at the time (snapshot) |
| └ prize_amount_thb | string | — | Credit prize won (THB, string) — "0" in diamond mode or on a no-win |
| └ prize_diamond | number | — | Diamond prize won — 0 in credit mode or on a no-win |
| └ played_at | string (ISO 8601) | — | When the flip happened |
Response example
{
"success": true,
"code": 0,
"message": "Card fetched successfully",
"data": {
"enabled": true,
"reward_mode": "CREDIT",
"unlock_deposit_thb": "300",
"deposited_today_thb": "500",
"deposit_count_today": 2,
"eligible": true,
"already_played_today": false,
"card_back_image_url": "https://cdn.bestsystem.example/card/luckybet888-back.png",
"background_image_url": "https://cdn.bestsystem.example/card/luckybet888-bg.png",
"slots": [
{ "slot_index": 0, "label": "5 บาท", "prize_amount_thb": "5", "prize_diamond": 0 },
{ "slot_index": 1, "label": "เสียใจด้วย", "prize_amount_thb": "0", "prize_diamond": 0 },
{ "slot_index": 2, "label": "20 บาท", "prize_amount_thb": "20", "prize_diamond": 0 },
{ "slot_index": 3, "label": "เสียใจด้วย", "prize_amount_thb": "0", "prize_diamond": 0 },
{ "slot_index": 4, "label": "50 บาท", "prize_amount_thb": "50", "prize_diamond": 0 },
{ "slot_index": 5, "label": "100 บาท", "prize_amount_thb": "100", "prize_diamond": 0 }
],
"today_result": null
},
"request_uuid": "3b7e0d9c-4f61-4a28-b5e3-8d2c6f1a9e07"
}Possible error codes
| code | Name | HTTP | Message |
|---|---|---|---|
| 6231 | DAILY_CARD_NOT_ENABLED | 400 | The daily card game is not enabledToday a disabled card answers success with enabled = false and empty lists instead — still handle this code, as flip uses it |
| 1001 | UNAUTHORIZED | 401 | Unauthorized |
| 1007 | TOKEN_INVALID | 401 | Token invalid |