# Tickets

Sport tickets related endpoints

## Get recommended handpicked tickets

> Returns recommended handpicked tickets.\
> \
> !!!info Ticket generation\
> Each ticket consists of a set of selections.\
> \
> The tickets are chosen from handpicked coupons stored in our database.\
> Currently, those are Kambi prepacked coupons.\
> \
> The recommendations are generated using a machine learning model.\
> The recommendations are personalized for each user based on their\
> betting history and preferences.<br>

```json
{"openapi":"3.0.1","info":{"title":"","version":"0.1.0"},"tags":[{"description":"Sport tickets related endpoints","name":"Tickets"}],"servers":[{"description":"Production API","url":"https://api.vaix.ai"},{"description":"Staging (integration) API","url":"https://staging-api.vaix.ai"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"scheme":"bearer","type":"http"}},"schemas":{"RecommendedTickets":{"additionalProperties":false,"description":"A ticket object","properties":{"id":{"description":"The ticket unique identifier","type":"string"},"odds":{"description":"The ticket odds","format":"float","type":"number"},"selections":{"description":"The ticket selections","items":{"properties":{"event_id":{"description":"The event unique identifier","type":"string"},"market":{"description":"The market name","type":"string"},"market_id":{"description":"The market unique identifier","type":"string"},"market_type":{"description":"The market type name","type":"string"},"market_type_id":{"description":"The market type unique identifier","type":"string"},"outcome":{"description":"The outcome name","type":"string"},"outcome_id":{"description":"The outcome unique identifier","type":"string"},"period":{"description":"The period name","type":"string"},"period_id":{"description":"The period unique identifier","type":"string"},"quote":{"description":"The outcome quote","format":"float","type":"number"},"quote_group":{"description":"The outcome quote group","type":"integer"},"selection_id":{"description":"The selection unique identifier","type":"string"},"status":{"description":"The outcome status","type":"string"}},"type":"object"},"type":"array"},"source":{"description":"The ticket source","type":"string"},"status":{"description":"The ticket status","type":"string"},"tags":{"description":"The ticket tags","items":{"type":"string"},"type":"array"},"type":{"description":"The ticket type","type":"string"}},"type":"object"},"Error":{"additionalProperties":false,"description":"The generic API's error response","properties":{"error":{"description":"Description of the error","type":"string"},"status":{"description":"response status","type":"string"}},"type":"object"},"Errors":{"additionalProperties":false,"description":"The generic API's errors response","properties":{"errors":{"description":"An object with the request errors","type":"object"}},"type":"object"},"UnprocessableEntityError":{"oneOf":[{"additionalProperties":false,"description":"The generic API's error response","properties":{"error":{"description":"Description of the error","type":"string"},"status":{"description":"response status","type":"string"}},"type":"object"},{"additionalProperties":false,"description":"The generic API's errors response","properties":{"errors":{"description":"An object with the request errors","type":"object"}},"type":"object"}]}}},"paths":{"/api/handpicked/recommended":{"get":{"description":"Returns recommended handpicked tickets.\n\n!!!info Ticket generation\nEach ticket consists of a set of selections.\n\nThe tickets are chosen from handpicked coupons stored in our database.\nCurrently, those are Kambi prepacked coupons.\n\nThe recommendations are generated using a machine learning model.\nThe recommendations are personalized for each user based on their\nbetting history and preferences.\n","operationId":"get_recommended_handpicked","parameters":[{"description":"Custom client header, the value should be the name of the group the user belongs to","in":"header","name":"x-vaix-client-id","required":true,"schema":{"type":"string"}},{"description":"Authentication method to be used, supported values [`vaix`, `iam`]. Defaults to `vaix`","in":"header","name":"x-vaix-authentication-method","required":false,"schema":{"type":"string"}},{"description":"The minimum event's starting datetime.","in":"query","name":"from","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Considers events starting after the from timestamp plus the given minutes/hours/days.\nIf not set defaults to `0 minutes`.\nThe value must be in range [-7d - 7d].\n","in":"query","name":"from_offset","required":false,"schema":{"default":"0","pattern":"^[+-]?[0-9]+([.][0-9]+)?[smhd]?$","type":"string"}},{"description":"Considers events starting till the `from` timestamp plus the given\nminutes/hours/days. If not set defaults to one day (24 hours).\nThe value must be in range [`-7d` - `7d`].\n","in":"query","name":"to_offset","required":false,"schema":{"default":"2d","pattern":"^[+-]?[0-9]+([.][0-9]+)?[smhd]?$","type":"string"}},{"description":"The user ID for whom to generate recommendations.","in":"query","name":"user","required":true,"schema":{"type":"string"}},{"description":"How many tickets to return.","in":"query","name":"count","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"integer"}},{"description":"The operator to use for querying data. Notice that this is applied only\nif your account has access to multiple operators. In a different case\nthe assigned operator to your account is used and the value of this\nfield is ignored.\n","in":"query","name":"operator","required":false,"schema":{"type":"string"}},{"description":"The bookmaker id to use for querying data. Notice that this is applied only\nif your account has access to multiple operators. In a different case\nthe assigned operator to your account is used and the value of this\nfield is ignored. Note that this parameter is used together with the\n`sub_bookmaker_id` parameter.\n","in":"query","name":"bookmaker_id","required":false,"schema":{"type":"integer"}},{"description":"The sub-bookmaker id to use for querying data. Notice that this is applied only\nif your account has access to multiple operators. In a different case\nthe assigned operator to your account is used and the value of this\nfield is ignored. Note that this parameter is used together with the\n`bookmaker_id` parameter.\n","in":"query","name":"sub_bookmaker_id","required":false,"schema":{"type":"integer"}},{"description":"A list of filters to filter the coupons or the events that will be considered\nwhen selecting the coupons. If not provided no filtering is applied.\n","in":"query","name":"filters","required":false,"schema":{"enum":["event_id","sport","sport_id","country","country_id","league","league_id","status","booking_status","event_type","participants","participant_ids","coupon_type","coupon_odds","coupon_status","coupon_source","coupon_tags"],"type":"string"}},{"description":"Applies a limit to a group of items. For more information, head to\n`Limiting -> Group Limiting` section of the docs.\n`country:5,country_id:2`.\n","in":"query","name":"group_limit","required":false,"schema":{"enum":["country","country_id","league","league_id","sport","sport_id","event_id","event_type"],"type":"string"}},{"description":"If true, use precomputed embeddings for similarity search instead of the full model pipeline.","in":"query","name":"use_precomputed_embeddings","required":false,"schema":{"default":false,"type":"boolean"}},{"description":"The location of the page where the request takes place.\n","in":"query","name":"location","required":false,"schema":{"type":"string"}},{"description":"Optional selection of the object fields to retrieve. It expects a comma\nseparated list of strings, as described in the field selection section,\ne.g. `coupon_id,sub_tenant_id`.\n","in":"query","name":"fields","required":false,"schema":{"default":["coupon_id","sub_tenant_id","event_id","selections","league_id","confidence","coupon_status","coupon_type","coupon_odds","coupon_source","coupon_tags","country_id","country","league","sport","sport_id","participants","participant_ids","event_type","status"],"enum":["coupon_id","sub_tenant_id","event_id","selections","league_id","confidence","coupon_status","coupon_type","coupon_odds","coupon_source","coupon_tags","country_id","country","league","sport","sport_id","participants","participant_ids","event_type","status"],"type":"string"}},{"description":"The number of the retrieved top similar results.\nThis can be useful in cases where the system needs to\nrequest more results than requested by the user, for example\nwhen applying a group limit to satisfy the required number of results\nin each group. Big population value may degrade performance.\n","in":"query","name":"population","required":false,"schema":{"default":1000,"maximum":10000,"minimum":500,"type":"integer"}},{"description":"The columns to sort the results by. It expects a string adhering to\nthe ordering format, as described in the ordering section, e.g.\n`+begin`.\n","in":"query","name":"order_by","required":false,"schema":{"enum":["begin"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"description":"API response","properties":{"data":{"$ref":"#/components/schemas/RecommendedTickets"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Forbidden"},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}},"description":"Not Acceptable"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}},"description":"Request Entity Too Large"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnprocessableEntityError"}}},"description":"Unprocessable Entity"},"425":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}},"description":"Too Early"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Internal Server Error"}},"summary":"Get recommended handpicked tickets","tags":["Tickets"]}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sportradar.com/personalization/api-reference/sports/tickets.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
