Passengers
Passenger records appear on offer search, price, create, and change. Both APIs use the same type codes and the same identity rules — only the wire shape differs.
What goes where
| Data | Where to send it | Notes |
|---|---|---|
| Who is traveling | JSON passengers[] / XML PaxList > Pax | One entry per traveler. |
| Passenger type | type / PTC | ADT, CHD, or INF. |
| Stable passenger ID | JSON passengerId or paxId; XML PaxID | Yours to choose on shop/price/create. Keep the same ID through price → ancillaries → create. |
| Name | name.givenName + name.surname / Individual > GivenName/Surname | Required on create. |
| Date of birth | dateOfBirth / Birthdate | YYYY-MM-DD. |
| Gender | JSON request gender; XML GenderCode | See Gender — request and response vocabularies differ on JSON. |
| Nationality / residence | nationality, residenceCountry | Optional ISO country codes. |
| Lap infant link | Adult's infantPassengerId | Points at the infant's passenger ID. Infants cannot exceed adults. |
| Loyalty / docs | loyaltyProgram, travelDocuments | Optional. Loyalty numbers must match the passenger name. |
| Per-passenger email/phone | passengers[].contact / Pax-referenced ContactInfo | Irregular-ops contact — see contacts. |
| Booking notification contact | Order contact / unreferenced ContactInfo | Not on the passenger object. |
Passenger types
| Code | Meaning |
|---|---|
ADT | Adult |
CHD | Child |
INF | Infant (lap) |
Infants cannot exceed adults (ERR-7003 / validation ERR-1005). Duplicate passenger IDs in one
request are rejected. Unaccompanied minors are not supported — UNN is rejected on offer search,
price, and create.
IDs across the booking flow
- On offer search,
paxIdis optional — when omitted, IDs are synthesized asPX1..PXn(JSON) in declaration order. - On price and offer-scoped seats/services, send stable IDs if you will book ancillaries with the create (for example
ADT-1). Anonymous passengers without IDs leave seat/service quotes without bookableofferItemIds. - On create,
passengerIdvalues must match the IDs used when selecting offer items and ancillaries. - On retrieve / change, use the IDs from the order view (
paxId/PaxID, often normalized likeADT-1).
Gender
| Surface | Send | Read back |
|---|---|---|
| JSON | Male or Female, spelled exactly (case-sensitive) | genderCode: M or F |
| XML | GenderCode M / F, or Male / Female (case-insensitive) | GenderCode M / F |
Gender is optional on both surfaces, but the only stored values are male and female — there is no
undisclosed option. A JSON create with gender: "F" or "female" fails validation; use Female.
Name changes and loyalty
- A name change after booking may carry a fee. Quote it first (reshop
NameChange/ OrderReshop), then apply the change with payment when required. - A loyalty number must be a real member number matching the passenger's name. Mismatched or unrecognized numbers are rejected (
ERR-7008).
Testing tip
The reservation system rejects a passenger with the same name already booked on the same flight. Between test bookings, change the passenger name or the travel date — the usual cause of ERR-4001 during sandbox testing.