๐ Description
Command grantfs โ Grant Free Rounds / Feature Spins to a User (Eligible Slot Games Only). Also known as command 29, in API VERSION 1.0.
This command allows you to grant free rounds (freebet) or feature spins (feature_spins) to a specific user in an eligible game. Each granted spin will be played with the defined bet per line and number of lines, optionally applying a win multiplier, win limit, and expiration date.
freebet- FREE ROUNDS. You (the operator) fund N rounds at a fixed bet. The player plays N ordinary base-game rounds of the game at the bet in the grant; the bet is never charged to the player, and the player keeps the wins, credited in one amount when the rounds end. Works on any slot and on the G4T arcade games. Industry name: free rounds / free spins (Pragmatic Play: "Free Spins Bonus").What the player sees (freebet). A
freebetgrant is offered the next time the player opens that game: a popup says how many free games they have and what each is worth (EG "You have 2 free games worth EUR5 (EUR1.00 x 5 Lines)") with PLAY NOW and PLAY LATER. After PLAY NOW the game plays at the grant'sbetandlinesโ the bet must be one of the game'sbet_sizesvalues from command 24 (any other value is refused at grant time withBet value must be positive and within bet values list), so the game can step its bet selector straight to it. Only the spins played after PLAY NOW use the grant: they are not charged, andfsStatusmoves frompendingtoactiveas they are played and toplayedwhen the last one ends and the winnings are credited in one amount. A spin the player makes without accepting the offer is an ordinary bet, and the grant stayspendinguntil it is used or it expires. Afterexpiry_date(Y-m-d, GMT) the offer is no longer shown andfsStatusreadsexpired.
feature_spins- FEATURE SPINS. An entry into the game's own free-spins feature (its bonus round), granted as a promotion. No bet is charged; the spins play with the feature's own math, at the grant's stake and multiplier (fs_mult, empty = the game's own). The winnings are credited in one amount when the feature ends. Works only on slots that have a free-spins feature. These are NOT free rounds: the player is taken straight into the bonus feature, so give them rarely (for example to VIP players). Industry name: instant bonus / feature trigger (Pragmatic Play: "Instant Bonus").MAIN SPIN RTP (payout) is usually around 50% = 0.5 x TOTAL BET.
SPECIAL FEATURE RTP is usually around 3000% (three thousands percent) = 30x TOTAL BET.
In some games it increase to 100x TOTAL BET or even 200x TOTAL BET for the SPECIAL FEATURE.
{ "command": "grantfs", "login": "demoaccount", "gameid": "6857", "freespins": 10, "bet": 0.10, "lines": 25, "totalwinlimit": 100.00, "expiry_date": "2026-12-31", "fs_type": "freebet", "apiusername": "your_api_username", "apipass": "your_api_password", "uniqid":"oiahtog12793g5497agwe9751515as5y1" }Sample request: "fs_type": "freebet" (or "fs_type": "feature_spins").
Parameter | Mandatory | Description | Type |
| โ | Must be | string |
| โ | Username (min. 6 characters). Required unless | string |
| โ | RGS-CWS user ID. Cannot be used together with | string |
| โ | ID of the eligible game. | string |
| โ | Number of spins to grant. Must be between 1โ1000. | integer |
| โ | Bet per line. Must fall within the game's | float |
| โ | Number of paylines used. Must not exceed the game's max lines. For fixed-line games, it must match the predefined value. | integer |
| โ | The currency the player plays the granted rounds in. Accepted forms, all equivalent: the ISO code the player was launched with โ | string |
| โ | Win cap. If > 0, any excess winnings are forfeited after the granted spins. Set | float |
| โ | Override multiplier (e.g. 1 = no boost). Set | integer |
| โ | Expiration date for the grant. Use format: | string |
| โ | Wagering requirement multiplier (reserved for future use; currently not supported in remote RGS mode). | integer |
| โ | One of exactly two values: | string |
| โ | Your API username | string |
| โ | Your API password | string |
| โ | A unique grant identifier generated by you, one per grant (unique per operator). This makes the call idempotent. Repeating a | string |
You must provide either
loginoruseridโ not both.
Any other value for fs_type (including the older vipfs, bonus and freespins, or an empty value) returns:{"status":"ERROR","message":"Unknown fs_type: send freebet or feature_spins. freebet = FREE ROUNDS (the operator funds N rounds at a fixed bet; the player keeps the wins). feature_spins = an entry into the game's own free-spins feature (no bet is charged; the feature's own math)"} - no grant is made.
Refusals for currency (nothing is created, the uniqid stays free):ERROR Unknown currency <value>: send the ISO code the player plays in (e.g. EUR, USD, COINS)ERROR currency <value> is not the currency of player <login>; send the player's own currency or leave currency empty
Other refusals (status ERROR; nothing is created): A unique grant id (uniqid) is required to grant freespins/freebets ยท uniqid <id> was already used for a grant that no longer exists; send a new uniqid ยท User/Player does not exist ยท Game does not support Freebets ยท Game does not have Freespins Feature ยท You can only grant between 1 and 1000 freespins ยท Bet value must be positive and within bet values list: โฆ ยท Bet value must be within bet limits; Min Bet: โฆ; Max Bet: โฆ ยท Lines value must be positive and <= than maximum number of paylines ยท In this game, the selected paylines must be equal to the maximum number of paylines ยท Total Win Limit must be numeric and >=0. You can set it to 0 to deactivate the limit. ยท Invalid expiry date - date format incorrect ED1 ยท Invalid expiry date - date does not exist ED2 ยท Invalid rollover multiplier. Value must be numeric. EG: 50 if you want the rollover to be x50 ยท Invalid freespin multiplier. Value must be numeric. ยท Failed to create the freebet grant / Failed to create the freespins grant.
Replies: Free Rounds granted: N base-game spins at bet X on game G; ... / Feature Spins granted: N spins of the game's own free-spins feature at bet X (multiplier M) on game G; ....
โ Success:
{ "status": "OK", "message": "Free Rounds granted: 10 base-game spins at bet 0.10 on game 6857; winnings credited in one amount when the rounds end", "freespins_id": 315 }โ Failure:
{ "status": "ERROR", "message": "You can only grant between 1 and 1000 freespins" }Parameter | Required | Description | Type |
| โ |
| string |
| โ | Always returned: on success the grant description ( | string |
| on OK only | The integer id of the grant; send it back with the same | integer |
โ Operator Notes
Always send a unique
uniqidper grant. Retries with the sameuniqidare safe โ they return the original grant (response message"Grant already processed (idempotent)"with the originalfreespins_id) and never double-grant. A missinguniqidis rejected.A second request with a
uniqidthat is still being processed answers{"status":"ERROR","message":"A grant for this uniqid is already being processed"}- send the same request again a moment later.Confirm that the selected
betandlinesmatch the game's supported configuration.After the granted spins are consumed or expired, the user must reopen the game to refresh state.
You can apply a win cap (
totalwinlimit) or override the win multiplier (fs_mult) if needed.Always use the
freespins_idto track session history or troubleshoot.Winnings from a grant are sent via a
balance_adjrequest withtype=win, but only after all granted spins have been completed.