Skip to content
BreezePro docs

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.

DataWhere to send itNotes
Who is travelingJSON passengers[] / XML PaxList > PaxOne entry per traveler.
Passenger typetype / PTCADT, CHD, or INF.
Stable passenger IDJSON passengerId or paxId; XML PaxIDYours to choose on shop/price/create. Keep the same ID through price → ancillaries → create.
Namename.givenName + name.surname / Individual > GivenName/SurnameRequired on create.
Date of birthdateOfBirth / BirthdateYYYY-MM-DD.
GenderJSON request gender; XML GenderCodeSee Gender; request and response vocabularies differ on JSON.
Nationality / residencenationality, residenceCountryOptional ISO country codes.
Lap infant linkAdult’s infantPassengerIdPoints at the infant’s passenger ID. Infants cannot exceed adults.
Loyalty / docsloyaltyProgram, travelDocumentsOptional. Loyalty numbers must match the passenger name. See Name and document field limits.
Per-passenger email/phonepassengers[].contact / Pax-referenced ContactInfoIrregular-ops contact; see contacts.
Booking notification contactOrder contact / unreferenced ContactInfoNot on the passenger object.
CodeMeaning
ADTAdult
CHDChild
INFInfant (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.

Lap infants (INF) have no seat or service allocation of their own and are excluded from the passengers scope on seat and service availability requests. Include the accompanying adult instead. Sending a list that names only infant passengers to a seat or service endpoint returns ERR-1004.

  1. On offer search, paxId is optional; when omitted, IDs are synthesized as PX1..PXn (JSON) in declaration order.
  2. 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 bookable offerItemIds.
  3. On create, passengerId values must match the IDs used when selecting offer items and ancillaries.
  4. On retrieve / change, use the IDs from the order view (paxId / PaxID, often normalized like ADT-1).
SurfaceSendRead back
JSONMale or Female, spelled exactly (case-sensitive)genderCode: M or F
XMLGenderCode 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.

travelDocuments is an optional array per passenger, capped at 4 documents per passenger. Each entry requires documentType, documentNumber, and issuingCountry.

documentTypeNotes
Passport
NationalId
KnownTraveler
Redress
Visa
PermanentResidentCard
AlienResidentCardexpirationDate required.

The following limits are enforced at the API level. Requests with values exceeding these limits or containing disallowed characters are rejected with ERR-1004.

FieldLimit
name.givenName, name.middleName, name.surnameMax 32 characters
name.title, name.suffixMax 6 characters
travelDocumentsMax 4 per passenger (visas and redress cases count toward this limit)
travelDocuments[].documentNumberMax 35 characters
travelDocuments[].placeOfBirth, travelDocuments[].placeOfIssueMax 35 characters; letters and spaces only, no digits or punctuation
loyaltyProgram.programCodeMax 3 characters; must not contain |
loyaltyProgram.memberIdMax 32 characters
  • 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).

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).

IdentityDocTypeCode inside IdentityDoc maps to documentType as follows:

IdentityDocTypeCodedocumentType
PTPassport
NINationalId
KTKnownTraveler
VVisa
CPermanentResidentCard
AAlienResidentCard

Redress numbers ride Pax/RedressCase, not IdentityDoc.

Visa nesting. NDC allows a Visa element nested inside IdentityDoc. When present it is split into its own document: VisaID is required; the issuing country comes from IssuingCountryCode when provided, otherwise HostCountryCode; holder name, birthdate, gender, and nationality are inherited from the parent IdentityDoc. EntryQty, StayDuration, and VisaTypeCode are ignored. A visa may also be sent as a top-level IdentityDoc with type code V. Both shapes are accepted on OrderCreate and OrderChange.

OrderViewRS. Visas are always emitted as a standalone IdentityDoc with IdentityDocTypeCode V, never nested.