Jackpot Freebets > Configuring Freebets > ThrillGate
ThrillGate provides all the necessary functionality to configure Freebet templates, instances and finally, award freebets to players. This is useful for operators that do not have their own rewards management system or would prefer not to use their current bonusing system for Jackpot Freebets.
This section will discuss the process of configuring Jackpot Freebets at a more technical level. It is worth noting that the ThrillOffice system provides all this configuration in the user interface.
Process of configuring Jackpot Freebets

1. Create a FreeBets Iemplate
The first step of creating a template allows you to create re-usable rulesets for freebets in the system. Below is an example of creating both a Fixed Freebet template as well as a Variable Freebet template.
Fixed Freebets Template
- Endpoint: POST thrillgate/bonus/templates
- Payload: JSON
{
"name": "10 Freebets @ €0.10",
"operator_id": "thrilltech",
"brand_id": "brand1",
"freespin_type": {
"type": "FixedFreeSpins",
"count": 10,
"currency": "EUR",
"value": 0.1
},
"expires_after_ms": 0
}
Variable Freebets Template
{
"name": "€1.00 Freebets bonus",
"operator_id": "thrilltech",
"brand_id": "brand1",
"freespin_type": {
"type": "VariableFreeSpins",
"currency": "EUR",
"amount": 1.0
},
"expires_after_ms": 86400000 // awarded bonuses will expire after a day
}
The response from these calls will look something like this:
{
"id": "2ee990d6-84fd-43d4-909e-859312291135",
"name": "10 Freebets @ €0.10",
"operator_id": "thrilltech",
"brand_id": "brand1",
"freespin_type": {
"type": "FixedFreeSpins",
"count": 10,
"currency": "EUR",
"value": 0.1
},
"expires_after_ms": 0,
"created_by": null,
"timestamp_created": 1753795763112
}
Once the template is created, you can create one or more Freebet instances. Take note of the id value as we will use it in the next step.
2. Create a Freebets Instance
Now that we have a valid template available, we can create one or more instances, adding constraints (if needed) on which jackpots or games the freebet can be used for. You can also specify the validity of this instance by setting the timestamp_start and timestamp_end fields. If a Jackpot instance expires, it can no longer be used to award freebets to players.
- Endpoint: POST thrillgate/bonus/templates
- Payload: JSON
{
"template_id": "2ee990d6-84fd-43d4-909e-859312291135",
"instance_name": "Fixed Freebets: 10 bets @ €0.10 per bet for instance",
"available_for": [
{
// limit the bonus to a specific provider
"provider_id": "thrilltech",
"game_ids": []
// limit the bonus to specific game codes/source ids
// "provider_id": "thrilltech",
// "game_ids": [
// "903b26eb-3393-4784-a524-baacbba3a8ed"
// ]
}
],
"timestamp_start": 0,
"timestamp_end": 0
}
If successful, the response will look something like this:
{
"id": "9a1a696c-4011-473f-b950-49f7a39f3b0c",
"name": "Fixed Freebets: 10 bets @ €0.10 per bet for instance",
"operator_id": "thrilltech",
"brand_id": null,
"freespin_type": {
"type": "FixedFreeSpins",
"count": 10,
"currency": "EUR",
"value": 0.1
},
"template_id": "2ee990d6-84fd-43d4-909e-859312291135",
"available_for": [
{
"provider_id": "thrilltech",
"game_ids": []
}
],
"expires_after_ms": 0,
"timestamp_start": 0,
"timestamp_end": 0
}
Once again, remember to take note of the id value as we will use it in the 3rd and final step to award freebets to players.
3 Awarding Freebets to Players
In this step, we can now award Freebets to one or more players based on a specific Freebets Instance.
It is worth noting that the request_id field is the value that will be used for idempotency purposes. Ensure that each unique request uses a different value for the request_id.
- Endpoint: POST thrillgate/bonus/playerbonus/assign-instance
- Payload: JSON
{
"request_id": "1",
"instance_id": "9a1a696c-4011-473f-b950-49f7a39f3b0c",
"operator_id": "thrilltech",
"brand_id": "brand1",
"players": [
"player_id_token_00001",
"player_id_token_00002",
"player_id_token_00003",
"player_id_token_00004",
"player_id_token_00005",
"player_id_token_00006",
"player_id_token_00007",
"player_id_token_00008"
],
"promo_id": "jp_freebets_promo1"
}
Here we are awarding freebets to 8 players in the system. The players array contains the IDs of the players as they are in the operator's platform.
If successful, the response will look similar to this:
[
{
"id": "331f781e-e0a3-4d15-92e5-078d9d38c894",
"player_id": "player_id_token_00001",
"operator_id": "thrilltech",
"brand_id": "brand1",
"promo_id": "jp_freebets_promo1",
"bonus_instance_id": "9a1a696c-4011-473f-b950-49f7a39f3b0c",
"available_for": [
{
"provider_id": "thrilltech",
"game_ids": []
}
],
"bonus_data": {
"Freespins": {
"id": "9a1a696c-4011-473f-b950-49f7a39f3b0c",
"name": "Fixed Freebets: 10 bets @ €0.10 per bet for instance",
"freespin_type": {
"type": "PlayerFixedFreeSpins",
"count": 10,
"used": 0,
"currency": "EUR",
"value": 0.1
}
}
},
"state": "Available",
"timestamp_bonus_awarded": 1753796209614,
"timestamp_bonus_expires": 0,
"timestamp_bonus_consumed": null
}
// ..additional entries for each of the players
// ..
]
At this point, you have successfully awarded jackpot freebets to 8 players and they will take effect on the next contributions that the players make.