Bonus Configure
curl --request POST \
--url https://s-apis.oppigames.com/game/bonus-configure \
--header 'Content-Type: <content-type>' \
--header 'x-api-key: <x-api-key>' \
--header 'x-signature: <x-signature>' \
--header 'x-timestamp: <x-timestamp>' \
--data '
{
"bonuses": [
{
"requestId": "<string>",
"playerId": "<string>",
"bonusType": "<string>",
"gameId": "<string>",
"currency": "<string>",
"expiredAt": "<string>",
"totalSpinCount": 123,
"spinBetAmount": 123,
"bonusAmount": 123
}
]
}
'import requests
url = "https://s-apis.oppigames.com/game/bonus-configure"
payload = { "bonuses": [
{
"requestId": "<string>",
"playerId": "<string>",
"bonusType": "<string>",
"gameId": "<string>",
"currency": "<string>",
"expiredAt": "<string>",
"totalSpinCount": 123,
"spinBetAmount": 123,
"bonusAmount": 123
}
] }
headers = {
"x-api-key": "<x-api-key>",
"x-signature": "<x-signature>",
"x-timestamp": "<x-timestamp>",
"Content-Type": "<content-type>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-api-key': '<x-api-key>',
'x-signature': '<x-signature>',
'x-timestamp': '<x-timestamp>',
'Content-Type': '<content-type>'
},
body: JSON.stringify({
bonuses: [
{
requestId: '<string>',
playerId: '<string>',
bonusType: '<string>',
gameId: '<string>',
currency: '<string>',
expiredAt: '<string>',
totalSpinCount: 123,
spinBetAmount: 123,
bonusAmount: 123
}
]
})
};
fetch('https://s-apis.oppigames.com/game/bonus-configure', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://s-apis.oppigames.com/game/bonus-configure",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'bonuses' => [
[
'requestId' => '<string>',
'playerId' => '<string>',
'bonusType' => '<string>',
'gameId' => '<string>',
'currency' => '<string>',
'expiredAt' => '<string>',
'totalSpinCount' => 123,
'spinBetAmount' => 123,
'bonusAmount' => 123
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: <content-type>",
"x-api-key: <x-api-key>",
"x-signature: <x-signature>",
"x-timestamp: <x-timestamp>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"status": "RS_OK",
"data": [
{
"status": "RS_OK",
"requestId": "bonus_request_2",
"bonusId": "4eda52cd-b8a6-43fa-b5d6-327f003032b7"
},
{
"status": "RS_OK",
"requestId": "bonus_request_2",
"bonusId": "8eda00cd-b8a6-43fa-b5d6-327f00303289"
}
]
}
{
"status": "RS_ERROR",
"message": "Oops! Something went wrong. Please refresh the page or try again in a moment"
}
{
"status": "RS_ERROR_BONUS_EXPIRED",
"message": "Bonus expired or not found"
}
Bonus
Bonus Configure
This API is used to create single or multiple bonuses. The bonus was created in USD currency, and the awarded amount was converted accordingly.
POST
/
game
/
bonus-configure
Bonus Configure
curl --request POST \
--url https://s-apis.oppigames.com/game/bonus-configure \
--header 'Content-Type: <content-type>' \
--header 'x-api-key: <x-api-key>' \
--header 'x-signature: <x-signature>' \
--header 'x-timestamp: <x-timestamp>' \
--data '
{
"bonuses": [
{
"requestId": "<string>",
"playerId": "<string>",
"bonusType": "<string>",
"gameId": "<string>",
"currency": "<string>",
"expiredAt": "<string>",
"totalSpinCount": 123,
"spinBetAmount": 123,
"bonusAmount": 123
}
]
}
'import requests
url = "https://s-apis.oppigames.com/game/bonus-configure"
payload = { "bonuses": [
{
"requestId": "<string>",
"playerId": "<string>",
"bonusType": "<string>",
"gameId": "<string>",
"currency": "<string>",
"expiredAt": "<string>",
"totalSpinCount": 123,
"spinBetAmount": 123,
"bonusAmount": 123
}
] }
headers = {
"x-api-key": "<x-api-key>",
"x-signature": "<x-signature>",
"x-timestamp": "<x-timestamp>",
"Content-Type": "<content-type>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-api-key': '<x-api-key>',
'x-signature': '<x-signature>',
'x-timestamp': '<x-timestamp>',
'Content-Type': '<content-type>'
},
body: JSON.stringify({
bonuses: [
{
requestId: '<string>',
playerId: '<string>',
bonusType: '<string>',
gameId: '<string>',
currency: '<string>',
expiredAt: '<string>',
totalSpinCount: 123,
spinBetAmount: 123,
bonusAmount: 123
}
]
})
};
fetch('https://s-apis.oppigames.com/game/bonus-configure', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://s-apis.oppigames.com/game/bonus-configure",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'bonuses' => [
[
'requestId' => '<string>',
'playerId' => '<string>',
'bonusType' => '<string>',
'gameId' => '<string>',
'currency' => '<string>',
'expiredAt' => '<string>',
'totalSpinCount' => 123,
'spinBetAmount' => 123,
'bonusAmount' => 123
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: <content-type>",
"x-api-key: <x-api-key>",
"x-signature: <x-signature>",
"x-timestamp: <x-timestamp>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"status": "RS_OK",
"data": [
{
"status": "RS_OK",
"requestId": "bonus_request_2",
"bonusId": "4eda52cd-b8a6-43fa-b5d6-327f003032b7"
},
{
"status": "RS_OK",
"requestId": "bonus_request_2",
"bonusId": "8eda00cd-b8a6-43fa-b5d6-327f00303289"
}
]
}
{
"status": "RS_ERROR",
"message": "Oops! Something went wrong. Please refresh the page or try again in a moment"
}
{
"status": "RS_ERROR_BONUS_EXPIRED",
"message": "Bonus expired or not found"
}
Bonus Types
| Bonus Type | Description |
|---|---|
| Free Bets | Free Bets are configured for a player on a specific game. Each spin is played at a predefined bet amount set by the operator and does not deduct any funds from the player’s account balance. Instead, the spins are fully funded by the operator or the bonus balance. Any winnings generated from these free spins are credited directly to the player’s wallet. Free bet’s transactions are also considered in RTP calculation. |
| Free Spins | A bonus to grants the player any number of free spins, having winning up to the configured reward amount. |
| Wheel Of Fortune | A bonus mini-game featuring a spinning wheel. |
| Cascading Reels | A bonus game where winning symbols disappear and new symbols fall into place, potentially triggering bonus multiplier for additional wins in a single spin. |
| Fortune Guess | A bonus mini-game game where the player is presented with multiple items and must guess the correct one. |
| Wagering | A bonus where player can claim/unlock bonus wallet/winnings |
| Card Scratch | A bonus mini-game where the player is presented with multiple cards and must guess & scratch the correct one. |
Headers
string
required
A unique identifier associated with operator calling API.
string
required
A SHA256 HMAC signature generated using the request body and timestamp.
Format: HMAC_SHA256(JSON.stringify(data) + ’|’ + timestamp), signed using the
provided secret key.
string
required
An Unix timestamp (milliseconds) Used to verify the request’s freshness.
Ensure the same value is used in signature generation.
The signature will remain valid for only 5 minutes from the provided
timestamp.
string
required
Must be set to
application/json.Request Body
object[]
required
Array containing bonus objects. Up to 50 bonuses data are allowed per API call.
Show Bonus Object Properties
Show Bonus Object Properties
string
required
A unique identifier used to track and identify your data when the response is received.
string
required
Unique identifier for the player receiving the bonus.
string
required
Type of bonus. E.g., “Free Spins”.
string
required
Unique identifier representing the game associated with the bonus.
string
required
Bonus are only allowed when the player plays using the same currency. (Example : USD, EUR etc.)
string
required
The bonus expiration date and time must be in this format (example : “2000-01-01T12:45:00.000+05:30”) and must include timezone offset too.
Value must be at least 10 minutes ahead of the current time at the moment of configuration.
integer
totalSpinCount field required in free spin/free bet bonus type.
integer
spinBetAmount field required in free spin/free bet bonus type.
To maintain precision and avoid floating-point errors, the spinBetAmount field is processed as an integer value by multiplying the actual amount by 100000.For example, a spinBetAmount of 12.34567 will be represented as 1234567 in the API.
integer
bonusAmount field required in free spin/free bet bonus type.
Bonus win amount. Amount passed here will be max limit for win amount. Player can win anything from 0 to bonusAmount.
To maintain precision and avoid floating-point errors, the bonusAmount field is processed as an integer value by multiplying the actual amount by 100000.For example, a bonusAmount of 12.34567 will be represented as 1234567 in the API.
Response
string
required
Code indicates status of the request weather it is succeed or failed. We have listed error codes here
array
required
List of bonuses configured in request.
Show Data properties
Show Data properties
string
required
Code indicates status of the request weather it is succeed or failed. We have listed error codes here
integer
required
Unique requestId sent with data in request. This ensures exact response of data even if sequence of request and response data mismatch.
string
required
Unique identifier representing the bonus.
{
"status": "RS_OK",
"data": [
{
"status": "RS_OK",
"requestId": "bonus_request_2",
"bonusId": "4eda52cd-b8a6-43fa-b5d6-327f003032b7"
},
{
"status": "RS_OK",
"requestId": "bonus_request_2",
"bonusId": "8eda00cd-b8a6-43fa-b5d6-327f00303289"
}
]
}
{
"status": "RS_ERROR",
"message": "Oops! Something went wrong. Please refresh the page or try again in a moment"
}
{
"status": "RS_ERROR_BONUS_EXPIRED",
"message": "Bonus expired or not found"
}
⌘I
