Smart Search
Smart search endpoints
Returns personalized search results for sport events and casino games.
For sports
The endpoint supports searches based on both participant/country/league/player similarity and user preferences.The returned results are events that include at least one participant/country/league/player that has string similarities with the searched token. Using the mode option, the ranking of these events can be based on the user preferences or on event popularity in addition to the string similarity. We also support events filtering by providing a score threshold.
Only events starting between the requested time range will be considered.
Note that the endpoint supports searching for player related markets as well. For example, searching for "Salah" will return events that include markets related to the player. The player markets are included in the markets field of the response.
For example:
{
"begin": "2024-02-04T16:30:00Z",
"country": "England",
"country_id": "sr:category:1",
"event_id": "sr:match:41763283",
"event_type": null,
"league": "Premier League",
"league_id": "sr:tournament:17",
"markets": [
{
"event_id": "sr:match:41763283",
"id": "uof:1/sr:sport:1/38/sr:player:244391?goalnr=1",
"market": "goalnr=1",
"market_id": null,
"market_type": "First Goal Scorer",
"market_type_id": 38,
"outcome": "244391",
"player_id": "sr:player:244391",
"player_name": "Mahamed Salah",
"properties": {
"player": "Mahamed Salah",
"player_id": "sr:player:244391"
},
"quote": 4,
"score": 0.97957602445,
"status": null
}
],
"participant_ids": [
"sr:competitor:42",
"sr:competitor:44"
],
"participants": [
"Arsenal FC",
"Liverpool FC"
],
"score": 0.97957602445,
"sport": "Soccer",
"sport_id": "sr:sport:1",
"status": "closed"
}For casino
The endpoint supports searches based on game's name, category, studio and vaix tags.The returned results are casino games that include at least one field that has string similarities with the searched token.
Spelling mistakes, whitespace, typos and many more filters are supported by default for sport and casino product.
The search pattern.
The product to search for.
Number of events to return.
50Example: 5The brand of the operator.
The minimum event's starting datetime. If not explicitly set it defaults to now.
How many minutes/hours/days to shift from. Use a negative value for a
backwards shift, or a positive value for a forwards shift.
The value must be in range [-7d - 7d].
0Example: -3hPattern: ^[+-]?[0-9]+([.][0-9]+)?[smhd]?$Filters events based on their calculated score. If not set defaults to 0.5. The value must be in range [0.0-1.0].
Considers events starting till the from timestamp plus the given
minutes/hours/days. If not set defaults to one week (7 days).
The value must be in range [0d - 14].
7dExample: 7dPattern: ^[+-]?[0-9]+([.][0-9]+)?[smhd]?$Decides whether the smart search results will be returned as is, mixed by
popular events, or mixed by user recommendations (default). When mode is
recommended, user must also be provided, otherwise the results will
fall back to popular mode.
recommendedPossible values: List of event types to consider when generating recommendations. One or more types can be provided. Available options are:
match: Standard matches to be considered.seasonal: Seasonal events to be considered.forced_events: Handpicked events to be considered regardless of their start_time.
match,forced_eventsPossible values: A mix of sports and casino filters. This parameter is useful to specify specific filters on the data you want to return. The appropriate filters for the product in use should be applied. Sports and Casino filters cannot be mixed, otherwise an error response will be returned.
country:eq:Germany;sport:eq:SoccerPossible values: The user to get recommendations for.
0The language to perform searches for. Depends on the available translations and will be ignored if the provided language is invalid.
Controls what type of results to return. Only applicable when product=sport.
Available options:
all(default): Returns both event and player market results.player_markets: Returns only player market results (e.g., searching for "Salah" will only return player-related market results).events: Returns only event results without player markets, filtering out player market matches and returning only events that matched on event-level fields (participant, league, sport, country, etc.).
allExample: player_marketsPossible values: The operator to use for querying data. Notice that this is applied only if your account has access to multiple operators. In a different case the assigned operator to your account is used and the value of this field is ignored.
The bookmaker id to use for querying data. Notice that this is applied only
if your account has access to multiple operators. In a different case
the assigned operator to your account is used and the value of this
field is ignored. Note that this parameter is used together with the
sub_bookmaker_id parameter.
The sub-bookmaker id to use for querying data. Notice that this is applied only
if your account has access to multiple operators. In a different case
the assigned operator to your account is used and the value of this
field is ignored. Note that this parameter is used together with the
bookmaker_id parameter.
Optional selection of the object fields to retrieve. It expects a comma
separated list of strings, as described in the field selection section,
e.g. markets,event_id.
["markets","event_id","event_type","begin","country","country_id","league","league_id","sport","sport_id","participants","participant_ids","status","score","game_id","game_name","game_studio","category","vaix_tags","tags","channels","game_image_url","has_avalanche","has_bonus","has_buy","has_jackpot","is_live","has_megaways","has_sticky","has_fixed","has_free_spin","has_wilds","has_gamble","has_respin","has_scatter","has_symbols_collection","has_symbols_mega","has_symbols_expanding","has_symbols_mystery","has_multiplier","has_wilds_random","has_wilds_walking"]Possible values: The location of the page where the request takes place.
inplay_widgetCustom client header, the value should be the name of the group the user belongs to
Authentication method to be used, supported values [vaix, iam]. Defaults to vaix
OK
API response
The status of the request
Bad Request
Unauthorized
Forbidden
Not Acceptable
Request Entity Too Large
Unprocessable Content
Too Early
Internal Server Error
GET /api/search?token=text&product=sport HTTP/1.1
Host: api.vaix.ai
Authorization: Bearer YOUR_SECRET_TOKEN
x-vaix-client-id: text
Accept: */*
{
"data": {
"events": [
{
"begin": "2024-02-05T19:45:00Z",
"country": "Italy",
"country_id": "sr:category:31",
"event_id": "sr:match:42134563",
"event_type": null,
"league": "Serie A",
"league_id": "sr:tournament:23",
"markets": [],
"participant_ids": [
"sr:competitor:2702",
"sr:competitor:2719"
],
"participants": [
"AS Roma",
"Cagliari Calcio"
],
"score": 0.95474312305,
"sport": "Soccer",
"sport_id": "sr:sport:1",
"status": "closed"
},
{
"begin": "2024-02-04T17:30:00Z",
"country": "Spain",
"country_id": "sr:category:32",
"event_id": "sr:match:41893345",
"event_type": null,
"league": "LaLiga",
"league_id": "sr:tournament:8",
"markets": [],
"participant_ids": [
"sr:competitor:2816",
"sr:competitor:2859"
],
"participants": [
"Real Betis Seville",
"Getafe CF"
],
"score": 0.7233814,
"sport": "Soccer",
"sport_id": "sr:sport:1",
"status": "closed"
},
{
"begin": "2024-02-04T20:00:00Z",
"country": "Spain",
"country_id": "sr:category:32",
"event_id": "sr:match:41893357",
"event_type": null,
"league": "LaLiga",
"league_id": "sr:tournament:8",
"markets": [],
"participant_ids": [
"sr:competitor:2829",
"sr:competitor:2836"
],
"participants": [
"Real Madrid",
"Atletico Madrid"
],
"score": 0.70087258345,
"sport": "Soccer",
"sport_id": "sr:sport:1",
"status": "closed"
},
{
"begin": "2024-02-03T18:00:00Z",
"country": "France",
"country_id": "sr:category:7",
"event_id": "sr:match:42005647",
"event_type": null,
"league": "Ligue 2",
"league_id": "sr:tournament:182",
"markets": [],
"participant_ids": [
"sr:competitor:1684",
"sr:competitor:6925"
],
"participants": [
"Angers SCO",
"Rodez Aveyron Football"
],
"score": 0.6513504570666667,
"sport": "Soccer",
"sport_id": "sr:sport:1",
"status": "closed"
}
]
},
"status": "success"
}Returns the smart search requests made by a user.
This endpoint helps you retrieve the search queries a user has performed, optionally applying filters and sorting. Supports filtering by uniqueness and without uniqueness.
Example
$ curl --request GET \
--url "http://api.vaix.ai/api/search/searches?user=user123&order_by=-timestamp&count=5"The above will return the 5 most recent search requests for user user123 sorted by most recent first.
For user 0 the endpoint returns the most recent searches or suppresses them. Behavior depends on the fallback_mode parameter:
fallback_mode=ignore(default): Returns an empty list.fallback_mode=recent: Returns recent searches from all users across the system.
# Get recent searches from all users
$ curl --request GET \
--url "http://api.vaix.ai/api/search/searches?user=0&fallback_mode=recent&count=10"
# Ignore searches for all users (default behavior)
$ curl --request GET \
--url "http://api.vaix.ai/api/search/searches?user=0"The user to get searches for.
0If set (default), only unique search terms will be returned. Otherwise all matching searches will be returned.
trueOptional filtering of the searches to retrieve. It expects a string adhering to the filtering format, as described in the filtering section.
You can also use days_since_search (e.g. days_since_search:eq:30)
instead of explicit timestamp ranges.
location:eq:homepage;days_since_search:lt:20Possible values: The columns to sort the results by. It expects a string adhering to
the ordering format, as described in the ordering section, e.g.
+timestamp,-location.
-timestampPossible values: Maximum number of results.
20The handling of searches when user is set to 0 (typical for logged out cases) or no user is provided. Available options are:
- ignore: Return an empty list.
- recent: Return recent searches across the site.
ignorePossible values: The location of the page where the request takes place.
inplay_widgetCustom client header, the value should be the name of the group the user belongs to
Authentication method to be used, supported values [vaix, iam]. Defaults to vaix
OK
API response
The status of the request
Bad Request
Unauthorized
Forbidden
Not Acceptable
Request Entity Too Large
Unprocessable Content
Too Early
Internal Server Error
GET /api/search/searches HTTP/1.1
Host: api.vaix.ai
Authorization: Bearer YOUR_SECRET_TOKEN
x-vaix-client-id: text
Accept: */*
{
"data": [
{
"location": "GR",
"raw_search_token": "panathinaikos",
"timestamp": "2025-07-14T10:00:01Z",
"user_id": "user123"
},
{
"location": "UK",
"raw_search_token": "Manchester United",
"timestamp": "2025-07-14T10:00:00Z",
"user_id": "user123"
},
{
"location": "GR",
"raw_search_token": "Olympiacos",
"timestamp": "2025-07-13T15:00:00Z",
"user_id": "user123"
},
{
"location": "GR",
"raw_search_token": "Blackjack",
"timestamp": "2025-07-13T14:00:00Z",
"user_id": "user123"
}
],
"status": "success"
}Last updated
Was this helpful?