Input fields
Every booking request requires input fields — these are the data fields collected per customer as part of the booking. They can include standard fields like name, email, and phone, or custom fields like passport number, nationality, meal preference, age, weight, height, and many more. Headout supports 200+ input field types, but all of them map to one of 6 data types:
Critical: Location field handling
The
Location data type has two distinct behaviors depending on whether the field includes a predefined values list:
- If a
valueslist is present → the field only accepts one of the provided value object IDs as input. Render it as a dropdown and pass the selected ID. - If no
valueslist is present → the field accepts any free-text string as input. Render it as an open text field.
id to submit in the booking request.
Common real-world examples of input fields: pickup location, drop-off address, nationality, passport number, date of birth, meal preference, hotel name, age, weight, and height. The set varies per product and per slot.
Form rendering must be fully driven by the API response — never hardcode field assumptions. See Input Fields for the full reference.
Phone number format
Always submit PHONE values in international format: a leading +, then the country code and number, with no spaces or punctuation (e.g., +14155551234, +441234567890).
Each input field specifies the level at which data is collected:
Guest objects
- A guest object is required for every pax booked, regardless of whether input fields are needed for that pax
- The
levelfield on each input field determines which guests need that field populated - For a guest where no input fields are required (e.g. input fields are
PRIMARY_CUSTOMERonly and this is guest 2, 3, etc.) — you must still send a guest object with:inputFieldsarray set to empty[]paxTypepopulatedisPrimaryCustomerset tofalse
inputFields array is valid and expected for non-primary guests when fields are not required for them. Never omit the guest object entirely.