All promotions
LiveGET
/api/v1/promotions/activeThe agent's ACTIVE promotions inside their schedule window, ordered by sort_order
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| Authorization | string | — | Not used — this endpoint is public; no member token required |
| 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 |
|---|---|---|---|
| [] | object[] | — | data is an array of promotions — each item has the fields below |
| └ id | string | — | Promotion id (uuid) — used with POST /promotions/:id/claim |
| └ type | string | — | Promotion type — NEW_REGISTER/FIRST_DEPOSIT/GOLDEN_MINUTE are granted automatically on deposit; CASHBACK/FREE_CREDIT/DAILY_LOGIN are self-claimed via the claim endpointNEW_REGISTER | FIRST_DEPOSIT | CASHBACK | FREE_CREDIT | DAILY_LOGIN | GOLDEN_MINUTE | REFER_A_FRIEND | COUPON_CODE |
| └ name | string | — | Display name shown to the member |
| └ description | string | null | — | Description |
| └ banner_url | string | null | — | Displayable banner URL (time-limited link — do not cache permanently) |
| └ sort_order | number | — | Display order (lower = first) |
| └ config | object | — | Type-specific config, e.g. CASHBACK { percentage, max_cashback_thb } · deposit bonuses { percentage, max_bonus_thb, min_deposit_thb } · FREE_CREDIT { amount_thb, min_deposit_thb, min_turnover_thb } · DAILY_LOGIN { day_1_thb … day_7_thb } |
| └ time_window | object | null | — | GOLDEN_MINUTE only — { recurrence: "DAILY"|"WEEKLY", start_hour, end_hour, days_of_week? } evaluated on Bangkok time (UTC+7); null for other types |
| └ wager_mode | string | — | How turnover is counted for this bonus — TURNOVER counts bet volume · TURN_CREDIT counts creditTURNOVER | TURN_CREDIT |
| └ wager_multiplier | string | null | — | Turnover multiplier (e.g. "5") — null = no wagering requirement |
| └ withdraw_cap_thb | string | null | — | Max withdrawal cap for this bonus (THB) — null = uncapped |
| └ allowed_provider_ids | string[] | — | Providers whose play counts toward turnover — empty = all |
| └ allowed_categories | string[] | — | Game categories that count toward turnover — empty = all |
| └ ends_at | string (ISO 8601) | null | — | Promotion end time — null = open-ended |
| └ eligible | boolean | — | Preliminary member eligibility — this endpoint is not member-bound, so it is always false here; real eligibility is re-checked at claim / deposit-options |
| └ cashback_available_thb | string | null | — | CASHBACK only: amount accrued from today's deposits — null on this endpoint (requires a member context) |
| └ cashback_claimed_today | boolean | — | CASHBACK only: whether already claimed today — false on this endpoint |
Response example
{
"success": true,
"code": 0,
"message": "สำเร็จ",
"data": [
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"type": "NEW_REGISTER",
"name": "โบนัสต้อนรับสมาชิกใหม่ 100%",
"description": "ฝากครั้งแรกรับโบนัสเพิ่ม 100% สูงสุด 500 บาท",
"banner_url": "https://cdn.bestsystem.example/promotions/welcome-100.jpg",
"sort_order": 1,
"config": { "percentage": 100, "max_bonus_thb": 500, "min_deposit_thb": 100 },
"time_window": null,
"wager_mode": "TURNOVER",
"wager_multiplier": "5",
"withdraw_cap_thb": "5000.00",
"allowed_provider_ids": [],
"allowed_categories": ["SLOT"],
"ends_at": null,
"eligible": false,
"cashback_available_thb": null,
"cashback_claimed_today": false
},
{
"id": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
"type": "CASHBACK",
"name": "แคชแบ็ก 5% จากยอดฝากวันนี้",
"description": "รับเงินคืน 5% ของยอดฝากรวมวันนี้ สูงสุด 500 บาท กดรับได้วันละครั้ง",
"banner_url": "https://cdn.bestsystem.example/promotions/cashback-5.jpg",
"sort_order": 2,
"config": { "percentage": 5, "max_cashback_thb": 500 },
"time_window": null,
"wager_mode": "TURNOVER",
"wager_multiplier": null,
"withdraw_cap_thb": null,
"allowed_provider_ids": [],
"allowed_categories": [],
"ends_at": "2026-12-31T16:59:59.000Z",
"eligible": false,
"cashback_available_thb": null,
"cashback_claimed_today": false
}
],
"request_uuid": "1a7f4c2e-9b3d-4e6a-8c15-2f0d7b9e4a63"
}Possible error codes
| code | Name | HTTP | Message |
|---|---|---|---|
| 4002 | BAD_REQUEST | 400 | Bad requestThe agent could not be resolved from the request context (site domain not configured) |