---
title: "Get Flight Booking Options"
method: GET
path: "/flight-booking/options"
tags: ["flight-booking"]
---

# Get Flight Booking Options

`GET /flight-booking/options`

Fetch fare families (Basic Economy, Main Cabin, etc.) for a flight observation.

Delegates observation lookup and route extraction to the content service.
Each option has its own observation_id suitable for POST /flight-booking/sessions/.

## Query parameters

- `observation_id` string, uuid, required — Base flight observation from search results
- `passengers` integer — Number of passengers
- `adults` integer, nullable
- `children` integer, nullable
- `infants_in_seat` integer, nullable
- `infants_on_lap` integer, nullable
- `conv_trip_id` string, uuid, nullable — Conversation trip id used to apply an active limited-time offer or fare hold.

## Response `200`

Successful Response

- FlightBookingOptionsResponse — Response for GET /flight-booking/options.
  - `passenger_mix` PassengerCount — Passenger breakdown for offers/searches. Simple counts by type.
    - `adults` integer
    - `children` integer
    - `infants_in_seat` integer
    - `infants_on_lap` integer
  - `options` FlightBookingOption[], required
    - `observation_id` string, required — Content DB observation ID for this fare option
    - `fare_name` string, required — Fare family display name (e.g. 'Main Cabin')
    - `price` Money, required — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
      - `amount` integer, required
      - `currency` string, required
    - `price_per_person` Money, required — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
      - `amount` integer, required
      - `currency` string, required
    - `flight_only_price` Money — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
      - `amount` integer, required
      - `currency` string, required
    - `flight_only_price_per_person` Money — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
      - `amount` integer, required
      - `currency` string, required
    - `member_price` Money — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
      - `amount` integer, required
      - `currency` string, required
    - `member_price_per_person` Money — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
      - `amount` integer, required
      - `currency` string, required
    - `savings_share_prices` FlightSavingsSharePrices
      - `public_price` Money, required — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
        - `amount` integer, required
        - `currency` string, required
      - `axel_rate_price` Money, required — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
        - `amount` integer, required
        - `currency` string, required
      - `customer_price` Money, required — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
        - `amount` integer, required
        - `currency` string, required
      - `member_price` Money, required — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
        - `amount` integer, required
        - `currency` string, required
    - `limited_time_offer_id` string, uuid, nullable — Active limited-time Axel offer applied to this fare option.
    - `limited_time_price` Money — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
      - `amount` integer, required
      - `currency` string, required
    - `limited_time_price_per_person` Money — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
      - `amount` integer, required
      - `currency` string, required
    - `limited_time_expires_at` string, date-time, nullable — When the locked limited-time offer expires.
    - `limited_time_locked` boolean — True on the option whose exact dollar price the active limited-time offer locks (the originally quoted fare). Other options carry the offer's percentage discount but no dollar guarantee.
    - `fare_hold_id` string, nullable — Active fare hold whose held price applies to this option.
    - `fare_hold_price` Money — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
      - `amount` integer, required
      - `currency` string, required
    - `fare_hold_price_per_person` Money — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
      - `amount` integer, required
      - `currency` string, required
    - `fare_hold_expires_at` string, date-time, nullable — When the free 24h fare hold lapses.
    - `bundle_price_per_person` Money — Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
      - `amount` integer, required
      - `currency` string, required
    - `baggage` string[]
    - `baggage_policy` FareBaggagePolicy — Structured fare baggage policy, with raw supplier text preserved.
      - `source` 'serpapi_google_flights' | 'unknown'
      - `quotes` FareBaggageQuote[]
        - `bag_type` 'personal_item' | 'carry_on' | 'checked' | 'checked_first' | 'checked_second' | 'unknown'
        - `quantity` integer, nullable — Bag count when the supplier text states one; 0 for explicit restrictions.
        - `is_included` boolean
        - `is_restriction` boolean
        - `fee_amount` string, nullable
        - `fee_currency` string, nullable
        - `fee_basis` 'round_trip' | 'one_way' | 'per_segment' | 'unknown'
        - `pax_basis` 'per_pax' | 'total' | 'unknown'
        - `fee_amount_per_direction` string, nullable — Per-passenger one-way fee amount when it can be normalized from the supplier quote. For round-trip totals, this is half of fee_amount.
        - `source_key` 'together' | 'departing' | 'returning' | 'unknown'
        - `raw_text` string, required
    - `features` string[]
    - `book_with` string — Booking channel (e.g. 'Delta Air Lines')
    - `separate_tickets` boolean
    - `raw_option_title` string, nullable — Raw Google/SerpAPI fare option title when supplied.
    - `option_title_present` boolean — Whether the supplier supplied a fare option title.
    - `fallback_label_used` boolean — Whether fare_name is a cabin/default fallback instead of supplier text.
    - `fallback_label` string, nullable
    - `fare_family_id` string, nullable
    - `fare_family_source` string, nullable
    - `fare_family_blocker_reason` string, nullable
    - `source_evidence` object, nullable — Selected fare evidence carried from Content observation.
  - `google_flights_url` string, nullable — Google Flights page for the selected itinerary's booking options, captured verbatim from the supplier response (FAC-912). Optional: absent for cached/legacy evaluations — render-if-present.
  - `price_source` 'live' | 'stored_fallback' — Whether these fare prices are a live supplier reprice ('live') or the backend-owned stored-flight fallback ('stored_fallback'), served when live fare families do not load (FAC-934).

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/helloaxel/apis/client-api-gateway.md) · [All operations](https://skmtc.dev/helloaxel/apis/client-api-gateway/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/helloaxel/client-api-gateway/revisions/d3c4c29fede7/schema)
