flight-booking

Create Flight Booking Session

Create a new flight-booking checkout session.

post/flight-booking/sessions/

Request body

observation_idstring uuid required

Content DB observation ID for the selected flight

expected_observation_idstring uuid nullable

Content DB observation ID for the checkout flight the user saw. When provided, Travel rejects selected fare observations with a different itinerary.

conv_trip_idstring uuid nullable

Optional conversational trip context

active_negotiation_offer_idstring uuid nullable

Optional active limited-time flight negotiation offer to apply to this checkout session.

fare_family_namestring nullable

Fare family display name (e.g. 'First Class', 'Main Cabin'). Stored for checkout display — supplier segments may lack this.

fare_family_sourcestring nullable

Server-derived provenance for the checkout fare family. Public clients may not provide trusted provenance.

fare_family_idstring nullable

Server-derived canonical fare family ID for the checkout fare family. Public clients may not provide trusted IDs.

fare_baggagestring[] nullable

Baggage allowance strings for checkout display (e.g. '1 carry-on bag').

fare_featuresstring[] nullable

Fare feature strings for checkout display (e.g. 'Seat selection included').

wake_token_hashstring nullable

SHA-256 hex hash of the wake token this checkout originated from. Write-through attribution only — never the raw token. Absence must not block checkout.

srcstring nullable

Short deeplink source slug the checkout originated from (e.g. 'wake_limited_time_flight_offer'). Write-through attribution only.

origin_srcstring nullable

Server-derived first-touch origin of the checkout's trip (the brain trip's origin_kind, e.g. 'google_flights_extension'). The gateway always overwrites this from the trip document — client-supplied values are discarded. Write-through attribution only; unlike src it survives return visits, overlay churn, and wake stomps because it is keyed to the trip, not the client's in-memory deeplink state.

Response

Successful Response

idstring uuid required
user_idstring uuid required
observation_idstring uuid required
checkout_step'info' | 'ancillaries' | 'payment' | 'processing' | 'confirmed' | 'failed' required
status'active' | 'awaiting_payment' | 'processing' | 'completed' | 'failed' | 'abandoned' | 'manual_recovery_required' required
payloadobject required
fare_family_namestring nullable required
fare_family_sourcestring nullable
fare_family_idstring nullable
booking_idstring nullable required
operator_task_idstring uuid nullable required
expires_atstring date-time required
payment_method_idstring nullable required
stripe_customer_idstring nullable required
payment_intent_idstring nullable required
charged_amount_centsinteger nullable required
currencystring nullable required
payment_statusstring nullable required
failure_reasonstring nullable required
idempotency_keystring nullable required
discount_tier'flight_only' | 'bundle'

Pricing tier this session is priced at (FAC-942). A 'yes' staying declaration cuts a 'bundle'-tier successor session; the tier never downgrades. Nothing hotel-shaped is persisted on the session — the declaration's 'why' lives in trip_facts.hotel_intent.

traveler_namesstring[]

Resolved passenger names from traveler_profile_ids in payload

required_traveler_fieldsTravelerField[]

Traveler profile fields the client must collect before payment.

adult_gate_exemptboolean

True when the session owner is on the legal-approved allowlist exempt from the 18+ accompanying-adult gate. Clients must skip their traveler-form adult-age check when set; the server-side payment gate applies the same allowlist.

optional_traveler_fieldsTravelerField[]

Traveler-identity fields the client may offer for this flight (e.g. KTN, loyalty). Never blocks payment, distinct from required_traveler_fields.

purchase_intent_idstring uuid nullable

Durable single-use purchase commitment this session belongs to (ENG-24229). None for sessions created before the intent rollout.

purchase_intent_status'open' | 'committing' | 'booked' nullable

Current lifecycle of the session's purchase intent. 'booked' means the commitment was already consumed — clients must render the existing booking instead of a payment surface.

purchase_intent_booking_idstring nullable

Booking that consumed the purchase intent. May belong to a sibling session of the same commitment.

created_atstring date-time required
updated_atstring date-time required

Changes

No recorded changes to this endpoint across all 1 revision of this API.