Deposit promotion options
LiveGET
/api/v1/promotions/deposit-optionsFetch the promotions the member can choose to receive
A member who never took the welcome bonus (tier NEW) → forced, NEW_REGISTER only | if already taken, mode is choose between FIRST_DEPOSIT (no successful deposit yet today) and GOLDEN_MINUTE (inside its window) | if no promotion is available, mode is none
This is display/selection only — the bonus is actually granted when the deposit is credited, and conditions are re-checked at that moment.
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 |
|---|---|---|---|
| mode | string | — | forced = only the welcome bonus (NEW_REGISTER) is offered — the member cannot change it, render it as a single locked option · choose = the member picks one of options (or opts out) · none = no eligible deposit bonus right now — hide the bonus picker entirelyforced | choose | none |
| options | object[] | — | Selectable promotions — same shape as items in "All promotions", and every entry is already eligible (eligible = true). |
| └ id | string | — | Promotion id — pass to PUT /promotions/selected |
| └ type | string | — | Deposit bonuses are limited to these 3 typesNEW_REGISTER | FIRST_DEPOSIT | GOLDEN_MINUTE |
| └ name | string | — | Promotion name |
| └ banner_url | string | null | — | Displayable banner URL |
| └ config | object | — | Bonus config { percentage, max_bonus_thb, min_deposit_thb } |
| └ time_window | object | null | — | GOLDEN_MINUTE time window (Bangkok time) |
| └ wager_multiplier | string | null | — | Turnover multiplier when this bonus is taken |
| └ withdraw_cap_thb | string | null | — | Withdrawal cap for this bonus |
| └ eligible | boolean | — | Always true in this list |
| selected_id | string | null | — | The member's current saved choice — null = no bonus; use it to highlight the selected option. |
Response example
{
"success": true,
"code": 0,
"message": "สำเร็จ",
"data": {
"mode": "choose",
"options": [
{
"id": "550e8400-e29b-41d4-a716-446655440111",
"type": "FIRST_DEPOSIT",
"name": "ฝากแรกของวันรับเพิ่ม 10%",
"description": "โบนัส 10% สำหรับยอดฝากแรกที่สำเร็จของวัน",
"banner_url": "https://cdn.bestsystem.example/promotions/first-deposit-10.jpg",
"sort_order": 3,
"config": { "percentage": 10, "max_bonus_thb": 300, "min_deposit_thb": 100 },
"time_window": null,
"wager_mode": "TURNOVER",
"wager_multiplier": "3",
"withdraw_cap_thb": null,
"allowed_provider_ids": [],
"allowed_categories": [],
"ends_at": null,
"eligible": true,
"cashback_available_thb": null,
"cashback_claimed_today": false
},
{
"id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"type": "GOLDEN_MINUTE",
"name": "นาทีทอง 20.00-22.00 รับเพิ่ม 15%",
"description": "ฝากช่วงนาทีทองรับโบนัสเพิ่ม 15%",
"banner_url": "https://cdn.bestsystem.example/promotions/golden-minute.jpg",
"sort_order": 4,
"config": { "percentage": 15, "max_bonus_thb": 500, "min_deposit_thb": 200 },
"time_window": { "recurrence": "DAILY", "start_hour": 20, "end_hour": 22 },
"wager_mode": "TURNOVER",
"wager_multiplier": "5",
"withdraw_cap_thb": "10000.00",
"allowed_provider_ids": [],
"allowed_categories": [],
"ends_at": null,
"eligible": true,
"cashback_available_thb": null,
"cashback_claimed_today": false
}
],
"selected_id": "550e8400-e29b-41d4-a716-446655440111"
},
"request_uuid": "5c8d2f4a-1e37-49b0-a6d4-8e2f5c1b7d90"
}Possible error codes
| code | Name | HTTP | Message |
|---|---|---|---|
| 1001 | UNAUTHORIZED | 401 | Unauthorized |
| 1007 | TOKEN_INVALID | 401 | Token invalid |