All promotions

Live
GET/api/v1/promotions/active

The agent's ACTIVE promotions inside their schedule window, ordered by sort_order

Headers

FieldTypeRequiredDescription
Authorizationstring—Not used — this endpoint is public; no member token required
X-Api-KeystringYesAgent API key (ak_…) from the bo screen
X-TimestampstringYesSigning time in unix milliseconds (±300s skew allowed)
X-NoncestringYesUnique per-request value (UUIDv4) for replay protection
X-SignaturestringYeshex(HMAC-SHA256(secret, canonical)) — see the Authentication page
X-Player-IPstring—The player's real IP (IPv4/IPv6) — recommended (used in login history)
X-Player-UAstring—The player's User-Agent (optional — recorded in login history)
X-Request-Idstring—Your correlation id — echoed back as request_uuid (recommended)
x-langstring—th (default) or en — the language of message

Response

Fields in data

FieldTypeRequiredDescription
[]object[]—data is an array of promotions — each item has the fields below
└ idstring—Promotion id (uuid) — used with POST /promotions/:id/claim
└ typestring—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
└ namestring—Display name shown to the member
└ descriptionstring | null—Description
└ banner_urlstring | null—Displayable banner URL (time-limited link — do not cache permanently)
└ sort_ordernumber—Display order (lower = first)
└ configobject—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_windowobject | 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_modestring—How turnover is counted for this bonus — TURNOVER counts bet volume · TURN_CREDIT counts creditTURNOVER | TURN_CREDIT
└ wager_multiplierstring | null—Turnover multiplier (e.g. "5") — null = no wagering requirement
└ withdraw_cap_thbstring | null—Max withdrawal cap for this bonus (THB) — null = uncapped
└ allowed_provider_idsstring[]—Providers whose play counts toward turnover — empty = all
└ allowed_categoriesstring[]—Game categories that count toward turnover — empty = all
└ ends_atstring (ISO 8601) | null—Promotion end time — null = open-ended
└ eligibleboolean—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_thbstring | null—CASHBACK only: amount accrued from today's deposits — null on this endpoint (requires a member context)
└ cashback_claimed_todayboolean—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

codeNameHTTPMessage
4002BAD_REQUEST400Bad requestThe agent could not be resolved from the request context (site domain not configured)