# Ticket holders After a customer has selected a valid [ticket option](/api/booking-flow/product/ticket-options) and [timeslot](/api/booking-flow/product/timeslots-and-languages) for a date, they are ready to select a *ticket holder* from the `products` property of the *timeslot*: ```json [ { "groups": [ { [...], "slots": [ { "time": "09:00", "languages": [], "products": [ { "holder_code_normalized": "ADULT", "holder_code": "adult", "name": "Adult", "type": "musement", "default": false, "product_id": "4445101704", [...] }, { "holder_code_normalized": "CHILDREN", "holder_code": "child", "name": "Child (3-17)", "type": "musement", "default": false, "product_id": "4445101704", [...] } ], "tags": [] }, [...] ] }, [...] ] } ] ``` A *ticket holder* usually refers to the type of person purchasing the activity. Each ticket holder has a `type` property and unique `product_id`, both of which are important pieces of information needed for adding a holder to cart. A `product_id` refers to everything the customer has selected so far: * Date * Timeslot * Ticket option * Ticket holder A ticket holder also contains all relevant price information for the product. For more information on prices, please refer to the [activity prices section](/api/catalog/activities/prices). The available ticket holders may vary, depending on the activity configuration, `pickup` parameter (if applicable), the selected `date` and timeslot. ## `product_id` Be aware that the `product_id` may be a numeric value or a string, depending on the activity configuration. In the example response below, the identifier is a string: ```json [...] { "holder_code": "standard-price", "name": "Standard price", "type": "musement-realtime", "default": false, "product_id": "HruSLWn9fIB9Y8Z8L0/9ritXa7+REpxL9g7drGds1wNH3pcRaR91BKVdJGwuRv6JBg1bJvhTjcQRYzbl/W84dMK2B5wMLGhrHd6jSRBSenMFJ8E+W3j9pHkeqLejqGgIw66Ft00mcUQBfLhPgp6zOKlJuy4YfOMUXLSatCWlM0MtGi57HQ+6GxqCxcetgmg/BvLV1P4c8fVuvuZNhBhT815MKYFANews1zykD1iRTwtd9xiKV7URlbXioUtu9pKZKkmo+Z2icacVnqd+w9S2bgeHPKGosVXOdb1KOP2aq+HxEA6WC9KSwV4nlf8TS8fZ7rDQhu44hVy0U8SAcDEIhmt2OjzmdRoFFhjZdI8ud9W01rQXSKmElOlGXIkt2H2Rt6TNmctDFxHWHnvoPSqc2K7G9Tj4tbWbIAuj2BubaKRW4Q5oiJslnZJ07IufGHWmf9O7PqtAtQP+iGGqvy2C4cC5NYvMxq99DyYLBgJBiDE0rpbot1iTG73UTndGLTXJ3GWQNLOLyJEHGCddxCL2JEllTprXqrL3qo3Ca2h3q6yntmgCrZQOhJjtu3JgdBVB0vDmi15AtuNhS+YoekHzkMMaU2lNNNfaomDtAunHpKlGjotenbECziNV8lpnvNZPlY9eYzWvCihYJRw+A8u2T3zsHmxcClilkSG+3lWx2igYSufmWsjXH1N14YJHyHCvDZsP/u1EauF9+QABduQjoCa6bJAzDX12VZ5r7kToGNhUxOHmjGphYR4V6XAbUn8Lrr5mgd97xDegYKK3lXuzj/B0G2p5t4e/9ceO", [...] } [...] ``` The lengthy identifier in the example above is due to the activity's configuration. Notice that the `type` property has a value of `musement-realtime`. Certain activities are connected to other API platforms via a *realtime integration*. Availability is fetched directly from the activity's API in the moment of the request in order to offer the most up-to-date information. While available dates and products may remain the same, product identifiers can change for any type of activity, realtime or not. You are encouraged to regularly check these endpoints rather than caching product identifiers. However, be aware that certain activity APIs have rate limits and making calls too frequently can lead to errors. For more information on caching, check out the [dedicated section](/api/getting-started/caching). ## Name The `name` property contains the word or phrase used for the holder. Usually this contains words such as *adult* or *child* but could also be terms like *number of rooms* or *10 people (price per person)*, depending on the needs of the activity provider. The property may also contain an age range, language or important restrictions. By default, the `name` property is in English. You can modify this using the `Accept-Language` header. Due to the vast range of possible ticket holders, we have added the `holder_code_normalized` property to guide partners in understanding the type of holder. The `holder_code_normalized` property will contain one of the following values: * ADULT * CHILDREN * CUSTOM * FAMILY * GROUP * INFANT * REGULAR * SENIOR * STUDENT Partners are free to choose which property they would like to show customers. The `name` property corresponds to the exact term used by activity providers while the `holder_code_normalized` property gives a more standardized word to describe the holder. ## On [musement.com](https://www.musement.com) You can see ticket holders in action on [musement.com](https://www.musement.com). After selecting a timeslot, customers are presented with ticket holders, using the `name` property: ![Ticket holders](/assets/ticket-holders.6a4303c332d3b646868212a83a36ef5877d172ace0adb7abca8553870f0ee13d.ae54516e.png)