๐ Description
Commands createPrizeDrop, listPrizeDrops, setPrizeDropStatus and prizeDropWinners โ run Prize Drop promotions on eligible games directly through the API, without an admin panel.
A prize drop is a timed promotion on a game: while the promotion runs, every qualifying real-money round (bet at or above the promotion's minbet, player at or above min_viplvl, playing in the promotion's currency) can also win a cash prize from a limited pool. Prizes are defined in up to 3 tiers, each with a fixed amount, a count of prizes available, and odds (an integer N = a 1-in-N chance per qualifying round, while prizes remain in the tier).
A won prize is credited through your wallet with the transaction reference TPD{promo_id}.
Every promotion belongs to the operator whose credential signs the request: all reads and changes are scoped to your API account, and a promo_id that belongs to another operator answers ERROR Prize drop not found.
Eligible games: check command 24 (Get List Of Available Games) โ a game that can carry a prize drop has "has_prize_drops": 1.
Wheel promotions: there is no wheel command and none is needed โ on this engine a wheel promotion is a prize-drops campaign whose drop is revealed on a wheel; the wheel is the game's own presentation of the win. createPrizeDrop is the only call.
How the win is shown. The prize drop is shown by the game client when the win is credited to the player. Every game shows it as an in-game message; a wheel reveal is a presentation of the game client and will be announced per game when it ships. The API carries the same data for every game (the win amount, the tier, the promo id) through prizeDropWinners.
โ createPrizeDrop
Creates one prize-drop promotion per game id you pass (all with the same name, window, tiers and conditions). The call is idempotent through uniqid: resending the same uniqid returns the original promo_ids (message "Prize drop already created (idempotent)") and never creates duplicates.
{ "command": "createPrizeDrop", "name": "Weekend Rain", "currency": "EUR", "fdate": "2026-11-01", "tdate": "2026-11-30", "minbet": 1.00, "min_viplvl": 0, "max_prizes_per_player": 3, "tiers": [ { "amount": 500.00, "count": 2, "odds": 2000000 }, { "amount": 50.00, "count": 20, "odds": 200000 }, { "amount": 5.00, "count": 200, "odds": 20000 } ], "gameids": "6857,6858", "apiusername": "your_api_username", "apipass": "your_api_password", "uniqid": "pd_weekend_rain_2026_11" }๐ฅ Input Parameters (from your server to the RGS-CWS server)Parameter | Mandatory | Description | Type |
| โ | Must be | string |
| โ | Promotion name (1โ128 chars). | string |
| โ | The ISO / platform currency code of the drop (for example | string |
| โ | Promotion start. Format | string |
| โ | Promotion end. Must be in the future and after | string |
| โ | Minimum total bet a round needs to qualify ( | float |
| โ | Minimum VIP level of the player. Default | integer |
| โ | How many prizes one player may win in this promotion. Default | integer |
| โ | List of 1โ3 Tiers are numbered from the bottom: the last tier you send is always | array |
| โ | CSV of 1โ50 game ids. Each game must be active and support prize drops ( | string |
| โ | Your API username | string |
| โ | Your API password | string |
| โ | A unique identifier generated by you, one per create (1โ190 chars). Makes the call idempotent: resending the same | string |
{ "status": "OK", "message": "Prize drop created", "promo_ids": [311, 312], "pool": "3000.000", "pool_cap": "unlimited" }promo_ids lists one promo_id per game, in the order of gameids. pool is the total prize money of one game's tier set (amount ร count, summed); pool_cap names the configured maximum pool, or unlimited.
Resending the same uniqid returns { "status": "OK", "message": "Prize drop already created (idempotent)", "promo_ids": [...] } (no pool fields). Other errors: Unknown currency XXX (the code is not a currency we support) ยท A prize drop for this uniqid is already being processed (a concurrent call with the same uniqid; retry it) ยท Game N does not support Prize Drops (has_prize_drops=0) ยท currency is required (2-12 letters/digits).
Behaviour note: A second ACTIVE promotion with the same gameid, currency, minbet and min_viplvl is refused and the response names the existing promo_id (... already exists (promo_id N) - close it first or change the shape). Closed promotions never block a new one. Two prize drops of the same shape may be active on the same game at the same time when their currencies differ.
๐ listPrizeDrops
Lists the caller's prize-drop promotions. Every row belongs to the operator whose credential signs the request.
status(optional):active|paused|closed.scope(optional):active(default) = the live promotions table ยทclosed= the promotions already moved to the archive ยทall= both. Astatus=closedfilter with noscopereadsall. Every row carriesarchived(falselive,truearchived) andarchived_at(null while live).
NOTE: this read also performs the housekeeping move: the caller's promotions that are closed, past their tdate, or have every tier exhausted are moved to the archive before the list is built (at most 50 per call; a promotion that still holds an unpaid prize is kept live until it is paid). Nothing a player can trigger depends on this move โ a dead promotion never rolls either way.
Paging: limit (optional, 1-500, default 500) and before_id (optional, a promo_id) return the next page of older promotions; the reply carries limit and next_before_id (null on the last page). Errors: limit must be a whole number from 1 to 500 / before_id must be a promo_id (a whole number above 0) / Unknown currency <code>. A wrong filter answers ERROR status must be active, paused or closed / ERROR scope must be active, closed or all.
{ "command": "listPrizeDrops", "status": "active", "scope": "active", "apiusername": "your_api_username", "apipass": "your_api_password" }๐ฅ Input Parameters (from your server to the RGS-CWS server)Parameter | Mandatory | Description | Type |
| โ | Must be | string |
| โ | (optional) | string |
| โ | (optional) | string |
| โ | (optional) A currency code; only drops in that currency are listed. Omit it to list every currency. | string |
| โ | (optional) Page size, 1โ500. Default | integer |
| โ | (optional) A | integer |
| โ | Your API username | string |
| โ | Your API password | string |
{ "status": "OK", "message": "OK", "scope": "active", "limit": 500, "next_before_id": null, "prizedrops": [ { "promo_id": 311, "name": "Weekend Rain", "gameid": 6857, "currency": "EUR", "minbet": "1.000", "min_viplvl": 0, "max_prizes_per_player": 3, "fdate": "2026-11-01 00:00:00", "tdate": "2026-11-30 00:00:00", "status": "active", "archived": false, "archived_at": null, "tiers": [ { "tier": 1, "amount": "500.000", "count": 2, "given": 0, "odds": 2000000 }, { "tier": 2, "amount": "50.000", "count": 20, "given": 3, "odds": 200000 }, { "tier": 3, "amount": "5.000", "count": 200, "given": 41, "odds": 20000 } ] } ] }Up to 500 promotions are returned, newest first. In each tier, given counts the prizes already won. fdate is the promotion start, tdate the end, both echoed in GMT. In each row, currency is the code, or null for a drop created before currency codes were required.
๐ setPrizeDropStatus
Pauses, re-activates or closes a promotion. promo_id and status (pause | active | closed) are required.
{ "command": "setPrizeDropStatus", "promo_id": 311, "status": "closed", "apiusername": "your_api_username", "apipass": "your_api_password" }๐ฅ Input Parameters (from your server to the RGS-CWS server)Parameter | Mandatory | Description | Type |
| โ | Must be | string |
| โ | The promotion id (from | integer |
| โ |
| string |
| โ | Your API username | string |
| โ | Your API password | string |
{ "status": "OK", "message": "Status set", "promo_id": 311, "new_status": "closed", "archived": true }status=closedMOVES the promotion to the archive in the same request; the response carriesarchived: trueand the promotion is then readable throughlistPrizeDropsscope=closed|allandprizeDropWinners. A promotion that still holds an unpaid prize stays in the live list (archived: false, the message says so) and is archived on your nextlistPrizeDropscall once the prize is paid.Closing an already-archived promotion answers
OKwithmessage: Already closed(idempotent). Reopening one answersERROR A closed prize drop cannot be reopened. Apromo_idthat belongs to another operator answersERROR Prize drop not found.A promotion whose
tdatehas passed cannot be set back toactive(ERROR The prize drop has ended (tdate passed)).A promotion being changed by two requests at the same time answers
ERROR The prize drop is being changed by another request - retry.
๐ prizeDropWinners
Lists the prizes won in one promotion. Works for an archived (closed) promo_id exactly as for a live one; the optional from / to date filters apply the same way. A promo_id of another operator answers ERROR Prize drop not found.
{ "command": "prizeDropWinners", "promo_id": 311, "from": "2026-11-01", "to": "2026-11-30", "apiusername": "your_api_username", "apipass": "your_api_password" }๐ฅ Input Parameters (from your server to the RGS-CWS server)Parameter | Mandatory | Description | Type |
| โ | Must be | string |
| โ | The promotion id whose winners to list | integer |
| โ | (optional) | string |
| โ | (optional) | string |
| โ | (optional) Return only wins with | integer |
| โ | (optional) Page size, 1โ1000 (default 1000) | integer |
| โ | Your API username | string |
| โ | Your API password | string |
{ "status": "OK", "message": "OK", "promo_id": 311, "winners": [ { "win_id": 88, "wallet_ref": "TPD311", "date": "2026-11-07 19:24:11", "username": "player01", "login": "u44_player01", "gameid": 6857, "amount": "50.000", "currency": "EUR", "wallet_state": "paid", "granted": true } ], "truncated": false }Up to limit winners (default 1000) are returned, oldest first. truncated is true when more winners exist than fit the page; the reply then also carries next_since_id โ send it as since_id to read the next page. truncated: false means the list is complete.
wallet_ref is the transaction reference your wallet received for the prize credit (TPD{promo_id}); wallet_state shows the state of that credit (a prize still owed shows pending). username is the player's name as your platform knows it; from / to take Y-m-d or Y-m-d H:i:s.