Skip to main content

Reference data

Supported language codes for API localization.
If a translation is not available for the requested language, content falls back to English (EN).
Supported cities are returned dynamically by the City API. This list may change over time, so always handle cities dynamically rather than hardcoding values.See: List Cities · List Collections · List Categories · List Subcategories · List Products
Supported media types in product details.See: List Products · Get Product
Supported product types within product details.See: List Products · Get Product
Pricing types used in product listings. The price type determines how inventory pricing is structured and how booking requests must be formed.See: List Products · Get Product
Defines how a variant’s start time and duration are structured. This affects how startDateTime and endDateTime in inventory slots should be interpreted, and what kind of date/time picker to show the user.
For FLEXIBLE_START_* types, startDateTime represents the opening time of the venue, not a specific entry time for the customer.
See: List Inventory
Availability status within inventory slots, for inventorySelectionType: NORMAL products only. Determines whether and how many bookings can still be made for a given slot.SEATMAP products don’t return this status field — availability is expressed purely through remaining (top-level and per-section). See remaining count and availability status.See: List Inventory
Inventory selection types for booking interfaces.See: List Inventory
Person types valid for booking variants.
Additional types such as RESIDENT, NON_EUR_CHILD, etc. may appear dynamically.
See: List Inventory · Create Booking · Get Booking — see Pax Types

Input fields

Input field types for variant-specific customer information.
Many more values may appear dynamically from supply partners. Always handle unknown values gracefully.
See: Get Product · List Inventory — see Input Fields
Data types an input field can have. Use this to drive form validation and rendering on your end.
There is no dedicated DATE dataType. Date and date-time fields (such as DATE_OF_BIRTH_*) are submitted as STRING, with the expected format enforced by validation.regex on the field.
Allowed values for ENUM and LOCATION fields arrive in the validation.values object, which has two different shapes depending on the endpoint — see Input field validation values.See: Get Product · List Inventory · Get inventory details
validation.values carries the allowed values for ENUM and LOCATION fields. It has two shapes, and which one you get depends on the endpoint you called — not on the field’s dataType.
Two traps when you add support for the current shape:
  1. values is an object, not an array. A parser that assumes an array will break on it.
  2. The values key is absent rather than null when there are no predefined options. Check the key exists before reading it.

ENUM fields

The submitted value must exactly match one entry.

LOCATION fields with predefined options

Render the options as a dropdown and submit the selected location’s id or its displayName as the field value. Each object carries coordinates, an address, and optional timing constraints — see Predefined location objects for the full shape.
Branch on values.type, not on dataType. A supplier’s pickup-point list can arrive as an ENUM field with type: "TEXT" (plain names) or as a LOCATION field with type: "PREDEFINED_LOCATION" (structured objects) — values.type is the only reliable signal for which one you got.

Fields with no predefined options

STRING, INT, FLOAT and BOOL fields have no allowed-value list, and so does a LOCATION field that accepts a free-form address. The legacy shape reports this as "values": null; the current shape omits the key.
Legacy shape only — two edge cases that don’t apply to the current shape:
  • Predefined locations are only populated by Get Product. List Products doesn’t resolve them, so a LOCATION field there comes back with values: null even when the supplier has pickup points configured. Fetch the single product to get them.
  • null for other data types isn’t guaranteed. The legacy shape doesn’t gate on dataType, so a supplier-defined STRING or BOOL field carrying configured options can still emit a string array. Treat a non-null values as authoritative whatever the dataType says.

values object fields — current shape

See: Get Product · Get inventory details
The location object used by LOCATION input fields that offer predefined pickup or drop-off points. The shape is identical in both validation.values shapes — the objects sit directly in the values array (legacy) or inside values.value when values.type is PREDEFINED_LOCATION (current).Submit either the selected object’s id or its displayName as the input field value when creating a booking.
Full location object
See: Input field validation values · Get inventory details

Booking lifecycle

Cashback value types for promotional offers. The value field on the cashback object should be interpreted according to this type.See: List Products · Get Product
Booking lifecycle statuses. PENDING and COMPLETED can still move to CANCELLED — e.g. customer cancellation within policy, or Headout-initiated cancellations like venue closures.Transitions
  • From UNCAPTURED: remains UNCAPTURED until captured, → PENDING on successful capture, → FAILED on rejected capture, → CAPTURE_TIMEDOUT if no capture within 1 hour.
  • From PENDING: → COMPLETED when the ticket is generated, → CANCELLED if cancelled before fulfilment.
  • From COMPLETED: → CANCELLED if cancelled after fulfilment (e.g. venue closure).
  • From FAILED or CAPTURE_TIMEDOUT: no further transitions.
See: Create Booking · List Bookings · Get Booking · Update Booking · Create Webhook
Ticket delivery formats returned in the tickets array of a booking, and in ticketSection.tickets[].ticketType on the voucher response.On the voucher response, branch your rendering on displayType rather than on this field. See Ticket display type.See: Get Booking · Get a voucher
Booking lifecycle states returned by the Get a voucher endpoint. Same vocabulary as Booking status on the booking endpoints, so the two never disagree.Bookings that were never captured (UNCAPTURED, CAPTURE_TIMEDOUT) have no voucher and return 404.See: Get a voucher · Voucher API deep dive
The layout a voucher is meant to be rendered in.Render the voucher in the template returned. Venue staff check vouchers against the layout they expect for that experience, so using the other template risks the guest being turned away at entry.See: Get a voucher
Controls the shape of instructions.structured.location.addressGroups in the voucher response.See: Voucher API deep dive
Returned in instructions.structured.policies[].type on the voucher response.The accompanying value is HTML and carries no heading of its own.See: Voucher API deep dive
Returned in bookingDetails.pickupDropoffLocation.pickupDropOffType on the voucher response, for transfer experiences. Null for everything else.See: Voucher API deep dive
Returned in instructions.structured.location.voucherExchangeLocationType on the voucher response. Indicates whether the voucher is exchanged at the activity venue or elsewhere. Applies to the location section as a whole, not to individual addresses.See: Voucher API deep dive
How to render a ticket entry. Drives UI rendering — branch on this instead of ticketType.See: Voucher API deep dive
Defines who a given input field should be collected for. Use this to drive form rendering — only show and collect fields appropriate for each level.
level (who you collect from) and dataType (what shape the value takes) are independent axes — a LOCATION dataType field can be at any level.
See: Get Product · List Inventory
Permitted cancellation reasons for partner cancellation requests.See: Cancel Booking