Bet Recommendations - Integration
Accessing and integrating with Future Anthem's Bet Recommendations
Overview
Future Anthem’s Bet Recommendations API provides sportsbook operators with a flexible, scalable solution for delivering personalised bet recommendations and player preference insights in real time. The product analyses historical player activity, betting markets, and upcoming events to generate relevant, context-aware outputs that can be used across the sportsbook experience.
API Integration
API integration is the preferred and most common method for delivering personalised bet recommendations efficiently.
The Bet Recommendations API enables direct, real-time access to AI-driven bet recommendations for each player. Recommendations are generated dynamically based on the players recent activity and available upcoming sports events.
Endpoint Overview
|
Endpoint |
Description |
|
recommended_for_you_singles |
Returns personalised single bet recommendations. |
|
recommended_for_you_accas |
Returns personalised accumulators bets. |
|
recommended_for_you_bet_builder |
Returns personalised bet builders. |
|
preferences_sports |
Returns a ranked list of sports-level preferences. |
|
preferences_tournaments |
Returns a ranked list of tournament-level preferences. |
|
preferences_markets |
Returns a ranked list of market-level preferences. |
| preferences_inplay | Returns a ranked list of in-play preferences. |
Personalised Single Bet Recommendations
Request Structure
- Method: GET
- Authentication: x-api-key header
Request Parameters
| Parameter | Type | Location | Required | Description | Example |
| user_id | String | Query | ✅ | Unique identifier for the player | player123 |
| sport | String | Query | ❌ | Filter by sport | football |
| event_id | String | Query | ❌ | Filter by specific event ID | 123456789 |
| x-api-key | String | Header | ✅ | API key used for authentication | AbCdEfGhIJkL mNoPqRsTuVw XyZ123456== |
Response Structure
Each API response contains a player object (metadata about the player) and at present singles array (the recommended single bets).
Player Object
| Field | Type | Description | Example |
| player_id | String | Unique identifier for the player | player123 |
| country | String | Players country | UK |
| site | String | Operator site or brand | sportssite.com |
| control_group | String | Indicates if the player is in the control or target group | False |
Recommendation for Single Bets Object
| Field | Type | Description | Example |
| id | String | Unique identifier for the recommendation | single_foot_001 |
| sport | String | Sport type | football |
| recommendation_type | String | Type of recommendation | single |
| leg | Array | List of legs making up the recommendation | [...] |
Leg Fields
| Field | Type | Description | Example |
| sport_key_id | String | Sport ID | 1 |
| league_key_id | String | League or competition ID | 101 |
| event_id | String | Event ID | 123456789 |
| market_key_id | String | Market ID | 998877665 |
| outcome_key_id | String | Selection ID | 009008007 |
| event_time | Integer | Event start time in UNIX epoch seconds | 1762632000 |
Example Response
Note: For demo purposes, the below response ID's have been replaced with readable values and the recommendations have been limited to 3.
{
"player": {
"player_id": "player123",
"country": "UK",
"site": "sportssite.com",
"control_group": "False"
},
"singles": [
{
"id": "single_foot_001",
"sport": "football",
"recommendation_type": "single",
"leg": [
{
"sport_key_id": "Football",
"league_key_id": "English Premier League ",
"event_id": "Arsenal vs Everton",
"market_key_id": "First Goalscorer",
"outcome_key_id": "Eberechi Eze",
"event_time": 1762632000
}
]
},
{
"id": "single_foot_002",
"sport": "football",
"recommendation_type": "single",
"leg": [
{
"sport_key_id": "Football",
"league_key_id": "English Premier League",
"event_id": "Tottenham vs Newcastle",
"market_key_id": "Both Teams To Score",
"outcome_key_id": "Yes",
"event_time": 1762635600
}
]
},
{
"id": "single_foot_003",
"sport": "football",
"recommendation_type": "single",
"leg": [
{
"sport_key_id": "Football",
"league_key_id": "Spanish La Liga",
"event_id": "Villareal vs Barcelona",
"market_key_id": "Correct Score",
"outcome_key_id": "2-0 Barcelona",
"event_time": 1762639200
}
]
}
]
}
Personalised Accumulator Bet Recommendations
Request Structure
- Method: GET
- Authentication: x-api-key header
Request Parameters
| Parameter | Type | Location | Required | Description | Example |
| user_id | String | Query | ✅ | Unique identifier for the player | player123 |
| sport | String | Query | ❌ | Filter by sport | football |
| x-api-key | String | Header | ✅ | API key used for authentication |
AbCdEfGhIJkL |
Each API response contains a player object (metadata about the player) and at present singles array (the recommended single bets).
Player Object
| Field | Type | Description | Example |
| player_id | String | Unique identifier for the player | player123 |
| country | String | Players country | UK |
| site | String | Operator site or brand | sportssite.com |
| control_group | String | Indicates if the player is in the control or target group | False |
Recommendation for Single Bets Object
| Field | Type | Description | Example |
| id | String | Unique identifier for the recommendation | single_foot_001 |
| sport | String | Sport type | football |
| recommendation_type | String | Type of recommendation | single |
| leg | Array | List of legs making up the recommendation | [...] |
Leg Fields
| Field | Type | Description | Example |
| sport_key_id | String | Sport ID | 1 |
| league_key_id | String | League or competition ID | 101 |
| event_id | String | Event ID | 123456789 |
| market_key_id | String | Market ID | 998877665 |
| outcome_key_id | String | Selection ID | 009008007 |
| event_time | Integer | Event start time in UNIX epoch seconds | 1762632000 |
{
"player": {
"player_id": "player123",
"country": "UK",
"site": "sportssite.com",
"control_group": "False"
},
"accas": [
{
"id": "acca_foot_001",
"sport": "football",
"recommendation_type": "acca",
"combined_odds": 12.45,
"legs_count": 4,
"legs": [
{
"sport_key_id": "Football",
"league_key_id": "English Premier League",
"event_id": "Arsenal vs Everton",
"market_key_id": "Match Winner",
"outcome_key_id": "Arsenal",
"event_time": 1762632000
},
{
"sport_key_id": "Football",
"league_key_id": "English Premier League",
"event_id": "Man City vs Chelsea",
"market_key_id": "Both Teams To Score",
"outcome_key_id": "Yes",
"event_time": 1762635600
},
{
"sport_key_id": "Football",
"league_key_id": "Spanish La Liga",
"event_id": "Real Madrid vs Atletico",
"market_key_id": "Over/Under 2.5 Goals",
"outcome_key_id": "Over 2.5",
"event_time": 1762642800
},
{
"sport_key_id": "Football",
"league_key_id": "Italian Serie A",
"event_id": "Juventus vs Inter",
"market_key_id": "Match Winner",
"outcome_key_id": "Juventus",
"event_time": 1762646400
}
]
},
{
"id": "acca_foot_002",
"sport": "football",
"recommendation_type": "acca",
"combined_odds": 8.92,
"legs_count": 3,
"legs": [
{
"sport_key_id": "Football",
"league_key_id": "English Premier League",
"event_id": "Liverpool vs Tottenham",
"market_key_id": "First Goalscorer",
"outcome_key_id": "Mohamed Salah",
"event_time": 1762722000
},
{
"sport_key_id": "Football",
"league_key_id": "German Bundesliga",
"event_id": "Bayern vs Dortmund",
"market_key_id": "Both Teams To Score",
"outcome_key_id": "Yes",
"event_time": 1762725600
},
{
"sport_key_id": "Football",
"league_key_id": "French Ligue 1",
"event_id": "PSG vs Monaco",
"market_key_id": "Match Winner",
"outcome_key_id": "PSG",
"event_time": 1762729200
}
]
}
]
}
Personalised Accumulator Bet Recommendations
Request Structure
- Method: GET
- Authentication: x-api-key header
Request Parameters
| Parameter | Type | Location | Required | Description | Example |
| user_id | String | Query | ✅ | Unique identifier for the player | player123 |
| sport | String | Query | ❌ | Filter by sport | football |
| x-api-key | String | Header | ✅ | API key used for authentication |
AbCdEfGhIJkL |
Each API response contains a player object and a bet builder array containing personalised bet builder bet recommendations.
Player Object
| Field | Type | Description | Example |
| player_id | String | Unique identifier for the player | player123 |
| country | String | Players country | UK |
| site | String | Operator site or brand | sportssite.com |
| control_group | String | Indicates if the player is in the control or target group | False |
Recommendation for Bet Builder Bets Object
| Field | Type | Description | Example |
| id | String | Unique identifier for the recommendation | bb_foot_001 |
| sport | String | Sport type | football |
| recommendation_type | String | Type of recommendation | betbuilder |
| combined_odds | Number | Approximate decimal odds if all legs win | 12.45 |
| legs_count | Integer | Number of legs in this accumulator | 4 |
| legs | Array | List of legs making up the recommendation | [...] |
Leg Fields
| Field | Type | Description | Example |
| sport_key_id | String | Sport ID | Football |
| league_key_id | String | League or competition ID | English Premier League |
| event_id | String | Event ID | Arsenal vs Everton |
| market_key_id | String | Market ID | Match Winner |
| outcome_key_id | String | Selection ID | Arsenal |
| event_time | Integer | Event start time in UNIX epoch seconds | 1762632000 |
{
"player": {
"player_id": "player123",
"country": "UK",
"site": "sportssite.com",
"control_group": "False"
},
"betbuilders": [
{
"id": "bb_foot_001",
"sport": "football",
"recommendation_type": "betbuilder",
"event_id": "Arsenal vs Everton",
"event_time": 1762632000,
"combined_odds": 15.80,
"legs_count": 5,
"legs": [
{
"sport_key_id": "Football",
"league_key_id": "English Premier League",
"event_id": "Arsenal vs Everton",
"market_key_id": "Match Winner",
"outcome_key_id": "Arsenal",
"event_time": 1762632000
},
{
"sport_key_id": "Football",
"league_key_id": "English Premier League",
"event_id": "Arsenal vs Everton",
"market_key_id": "Both Teams To Score",
"outcome_key_id": "Yes",
"event_time": 1762632000
},
{
"sport_key_id": "Football",
"league_key_id": "English Premier League",
"event_id": "Arsenal vs Everton",
"market_key_id": "Total Corners Over/Under",
"outcome_key_id": "Over 9.5",
"event_time": 1762632000
},
{
"sport_key_id": "Football",
"league_key_id": "English Premier League",
"event_id": "Arsenal vs Everton",
"market_key_id": "Player Shots On Target",
"outcome_key_id": "Bukayo Saka 2+",
"event_time": 1762632000
},
{
"sport_key_id": "Football",
"league_key_id": "English Premier League",
"event_id": "Arsenal vs Everton",
"market_key_id": "Player To Be Carded",
"outcome_key_id": "Declan Rice",
"event_time": 1762632000
}
]
}
]
}
Sports Preferences
Request Structure
- Method: GET
- Authentication: x-api-key header
Request Parameters
| Parameter | Type | Location | Required | Description | Example |
| user_id | String | Query | ✅ | Unique identifier for the player | player123 |
| x-api-key | String | Header | ✅ | API key used for authentication |
AbCdEfGhIJkL |
Each API response contains a player object and a preferences array containing sports-level preference objects.
Player Object
| Field | Type | Description | Example |
| player_id | String | Unique identifier for the player | player123 |
| country | String | Players country | UK |
| site | String | Operator site or brand | sportssite.com |
| control_group | String | Indicates if the player is in the control or target group | False |
Recommendation for Sports Preferences Object
| Field | Type | Description | Example |
| sport_id | String | Sport identifier | football |
{
"player": {
"player_id": "player123",
"country": "UK",
"site": "sportssite.com",
"control_group": "False"
},
"preferences": [
{ "sport_id": "Football" },
{ "sport_id": "Horse Racing" },
{ "sport_id": "Tennis" }
]
}
Tournament Preferences
Request Structure
- Method: GET
- Authentication: x-api-key header
Request Parameters
| Parameter | Type | Location | Required | Description | Example |
| user_id | String | Query | ✅ | Unique identifier for the player | player123 |
| sport | String | Query | ❌ | Filter by sport | football |
| x-api-key | String | Header | ✅ | API key used for authentication |
AbCdEfGhIJkL |
Each API response contains a player object and a preferences array containing tournament-level preference objects.
Player Object
| Field | Type | Description | Example |
| player_id | String | Unique identifier for the player | player123 |
| country | String | Players country | UK |
| site | String | Operator site or brand | sportssite.com |
| control_group | String | Indicates if the player is in the control or target group | False |
Recommendation for Tournament Preferences Object
| Field | Type | Description | Example |
| sport_id | String | Sport identifier | football |
| tournament_id | String | Tournament identifier | Premier League |
{
"player": {
"player_id": "player123",
"country": "UK",
"site": "sportssite.com",
"control_group": "False"
},
"preferences": [
{ "sport_id": "Football", "tournament_id": "Premier League" },
{ "sport_id": " Football ", "tournament_id": "Serie A" }
]
}
Market Preferences
Request Structure
- Method: GET
- Authentication: x-api-key header
Request Parameters
| Parameter | Type | Location | Required | Description | Example |
| user_id | String | Query | ✅ | Unique identifier for the player | player123 |
| sport | String | Query | ❌ | Filter by sport | football |
| x-api-key | String | Header | ✅ | API key used for authentication |
AbCdEfGhIJkL |
Each API response contains a player object and a preferences array containing market-level preference objects.
Player Object
| Field | Type | Description | Example |
| player_id | String | Unique identifier for the player | player123 |
| country | String | Players country | UK |
| site | String | Operator site or brand | sportssite.com |
| control_group | String | Indicates if the player is in the control or target group | False |
Recommendation for Market Preferences Object
| Field | Type | Description | Example |
| sport_id | String | Sport identifier | football |
| market_id | String | Market identifier | Match Result |
{
"player": {
"player_id": "player123",
"country": "UK",
"site": "sportssite.com",
"control_group": "False"
},
"preferences": [
{ "sport_id": "1", "market_id": "Match Result" },
{ "sport_id": "1", "market_id": "Both Teams To Score" }
]
}
In-Play Preferences
Request Structure
- Method: GET
- Authentication: x-api-key header
Request Parameters
| Parameter | Type | Location | Required | Description | Example |
| user_id | String | Query | ✅ | Unique identifier for the player | player123 |
| sport | String | Query | ❌ | Filter by sport | football |
| x-api-key | String | Header | ✅ | API key used for authentication |
AbCdEfGhIJkL |
Each API response contains a player object and a preferences array containing inplay preference objects.
Player Object
| Field | Type | Description | Example |
| player_id | String | Unique identifier for the player | player123 |
| country | String | Players country | UK |
| site | String | Operator site or brand | sportssite.com |
| control_group | String | Indicates if the player is in the control or target group | False |
Recommendation for Sports-Level In-Play Preference Object
| Field | Type | Description | Example |
| sport_id | String | Sport identifier | football |
{
"player": {
"player_id": "player123",
"country": "UK",
"site": "sportssite.com",
"control_group": "False"
},
"preferences": [
{ "sport_id": "1" },
{ "sport_id": "2" }
]
}
Recommendation for Tournament-Level In-Play Preference Object
| Field | Type | Description | Example |
| sport_id | String | Sport identifier | football |
| tournament_id | String | Tournament identifier | Match Result |
{
"player": {
"player_id": "player123",
"country": "UK",
"site": "sportssite.com",
"control_group": "False"
},
"preferences": [
{ "sport_id": "1", "tournament_id": "101" },
{ "sport_id": "1", "tournament_id": "102" }
]
}
Other Integration Methods
In addition to direct API integration, bet recommendations can also be delivered using alternative methods to fit operational or technical constraints:
- File Export: Personalised bet recommendations can be exported as CSV files, containing player IDs and recommended event, market and outcome IDs
- SFTP Delivery: Exports can be securely transferred to operator servers via SFTP for ingestion into downstream systems
- CRM or CMS Integration: Recommendations can be pushed directly into CRM or front-end content systems to support personalised messaging, promotions and in-app recommendations
Data Requirements
To ensure optimal recommendation accuracy and freshness, the model relies on recent player betting activity. Operators should provide regular updates of player bet transactions and outcomes.
For detailed instructions on how to integrate your data with Amplifier AI, refer to our data integration guide.