FX-Port API
FlightsFlight Search

Passenger and cabin examples

Family groups, lap/seated infants, adult-senior-young mixes, and cabin-class searches — with real request and response examples.

See Flight passengers & ages for full validation rules, and Search response essentials for a full field-by-field reference of every response field shown below. Search counts and age arrays must match the passenger objects submitted later to book_flight.

Family: adults, child, lap infant

{
  "origin": "ALG",
  "destination": "CDG",
  "departure_date": "2026-09-15",
  "return_date": "2026-09-22",
  "cabin_class": "economy",
  "passengers": {
    "adults": 2,
    "children": 1,
    "child_ages": [8],
    "infants": 1,
    "infant_ages": [1]
  }
}

Response example

travelerPricing has exactly one entry per passenger, in the same order as requested. Note the actual travelerType value for a lap infant is HELD_INFANT, not INFANT:

{
  "pricing": {
    "supplierCurrency": "USD",
    "agencyCurrency": "DZD",
    "basePrice": 49112.52,
    "taxesAndFees": 16969.08,
    "agencyCommission": 66.12,
    "finalPrice": 66147.72,
    "b2bPrice": 66081.6
  },
  "travelerPricing": [
    { "travelerType": "ADULT",       "price": { "base": 12278.13, "total": 16536.93, "b2bPrice": 16520.41 } },
    { "travelerType": "ADULT",       "price": { "base": 12278.13, "total": 16536.93, "b2bPrice": 16520.41 } },
    { "travelerType": "CHILD",       "price": { "base": 12278.13, "total": 16536.93, "b2bPrice": 16520.41 } },
    { "travelerType": "HELD_INFANT", "price": { "base": 12278.13, "total": 16536.93, "b2bPrice": 16520.41 } }
  ]
}

Per-traveler pricing is computed and returned by the fulfilling supplier — for this specific sandbox offer every traveler happened to price identically, but that is not guaranteed in general. Infants, children, and seated infants are commonly priced lower than adults on real fares. Always read each traveler's own price.total/price.b2bPrice rather than assuming a fixed ratio to the adult fare.

Complete mix with seated infant

The public payload is supplier-neutral. Passenger limits can differ by supplier, so automatic and multi-supplier searches silently skip incompatible suppliers and keep any compatible results. This example includes two adults and is compatible with suppliers that require one adult/senior host per under-2 passenger. A traveler who is truly age 2 is a regular child and does not use an infant host.

{
  "origin": "ALG",
  "destination": "CDG",
  "departure_date": "2026-09-15",
  "cabin_class": "economy",
  "passengers": {
    "adults": 2,
    "seniors": 0,
    "young_adults": 0,
    "children": 2,
    "child_ages": [10, 6],
    "infants": 1,
    "infant_ages": [1],
    "seated_infants": 1,
    "seated_infant_ages": [1]
  },
  "supplier_ids": ["amadeus_aqc_dz_1", "duffel_1"]
}

A search like this returns travelerPricing with six entries (2 adults + 2 children + 1 lap infant + 1 seated infant), each tagged with its own travelerType.

Supplier-specific fallback: one adult with two infant types

This payload is valid at the FX-Port API level. Do not force a supplier: FX-Port calls compatible suppliers, silently skips incompatible ones, and returns available results without a warning. If the route has no compatible supplier, the API returns HTTP 400 with error: "SUPPLIER_PASSENGER_COMBINATION_UNSUPPORTED" and no suppliers[] results.

{
  "origin": "ALG",
  "destination": "CDG",
  "departure_date": "2026-09-29",
  "cabin_class": "economy",
  "passengers": {
    "adults": 1,
    "seated_infants": 1,
    "seated_infant_ages": [0],
    "infants": 1,
    "infant_ages": [0]
  },
  "flexible": true
}

The same traveler who is already age 2 belongs in children, not seated_infants. Children aged 2–11 do not use an infant-host slot.

Adult, senior, and young adult

{
  "origin": "ALG",
  "destination": "CDG",
  "departure_date": "2026-09-15",
  "cabin_class": "economy",
  "passengers": {
    "adults": 1,
    "seniors": 1,
    "young_adults": 1,
    "young_adult_ages": [16]
  },
  "supplier_id": "duffel_1"
}

FX-Port preserves requested logical categories in unified responses even when a supplier prices a senior or young adult as an adult internally — expect travelerType values ADULT, SENIOR, and YOUNG_ADULT respectively in travelerPricing.

Cabin classes

{
  "origin": "DXB",
  "destination": "BOM",
  "departure_date": "2026-09-15",
  "cabin_class": "business",
  "passengers": { "adults": 1 }
}

Response offers have itinerary[n].segments[m].cabin: "BUSINESS".

On this page