---
title: "Accept Flight Hotel Offer"
method: POST
path: "/flight-booking/sessions/{session_id}/accept-hotel-offer"
tags: ["flight-booking"]
---

# Accept Flight Hotel Offer

`POST /flight-booking/sessions/{session_id}/accept-hotel-offer`

## Path parameters

- `session_id` string, uuid, required

## Request body

- AcceptFlightHotelOfferRequest
  - `offer_id` string, required
  - `accepted_terms_version` string, required

## Response `200`

Successful Response

- FlightHotelCheckoutResponse
  - `offers` FlightHotelOfferOption[], required
    - `offer_id` string, required
    - `qualification_conditions` HotelQualificationConditions, required — Versioned JSON; new fields require explicit schema/evaluator support.
      - `schema_version` integer, required
      - `all` HotelStarRatingCondition[], required
        - `field` 'hotel.star_rating', required
        - `operator` 'eq' | 'gte', required
        - `value` number, required
    - `accepted_terms_version` string, required
    - `accepted_terms_text` string, required
    - `booking_window_seconds` integer, required
    - `completion_buffer_seconds` integer, required
  - `accepted` FlightHotelOfferSelection, required
    - `offer_id` string, required
    - `qualification_conditions` HotelQualificationConditions, required — Versioned JSON; new fields require explicit schema/evaluator support.
      - `schema_version` integer, required
      - `all` HotelStarRatingCondition[], required
        - `field` 'hotel.star_rating', required
        - `operator` 'eq' | 'gte', required
        - `value` number, required
    - `accepted_terms_version` string, required
    - `accepted_terms_text` string, required
    - `booking_window_seconds` integer, required
    - `completion_buffer_seconds` integer, required
    - `accepted_at` string, date-time, required
  - `obligation` FlightHotelObligationResponse, required
    - `id` string, uuid, required
    - `user_id` string, uuid, required
    - `flight_booking_id` string, required
    - `payment_intent_id` string, required
    - `qualification_conditions` HotelQualificationConditions, required — Versioned JSON; new fields require explicit schema/evaluator support.
      - `schema_version` integer, required
      - `all` HotelStarRatingCondition[], required
        - `field` 'hotel.star_rating', required
        - `operator` 'eq' | 'gte', required
        - `value` number, required
    - `accepted_terms_version` string, required
    - `accepted_terms_text` string, required
    - `customer_deadline` string, date-time, required
    - `final_cutoff` string, date-time, required
    - `flight_booking_session_id` string, uuid, required
    - `status` 'waiting_hotel' | 'capture_pending' | 'satisfied' | 'expiry_checking' | 'expiring' | 'expired' | 'needs_review', required
    - `accepted_at` string, date-time, required
    - `window_started_at` string, date-time, required
    - `qualifying_hotel_purchase_id` string, uuid, nullable, required
    - `hotel_completed_at` string, date-time, nullable, required
    - `captured_at` string, date-time, nullable, required
    - `expiry_started_at` string, date-time, nullable, required
    - `hold_released_at` string, date-time, nullable, required
    - `expired_at` string, date-time, nullable, required
    - `payment_status` string, nullable, required — Persisted flight payment status; not a live Stripe lookup.
    - `flight_cancellation_status` 'not_requested' | 'pending' | 'cancelled' | 'failed', required
    - `flight_cancelled_at` string, date-time, nullable, required
    - `recovery` FlightHotelObligationRecovery, required — Customer-safe recovery guidance; never supplier or payment error text.
      - `code` 'flight_capture_needs_review' | 'flight_expiry_needs_review' | 'flight_cancellation_needs_review' | 'obligation_needs_review', required
      - `action` 'contact_support', required

## Other responses

- `422` — Validation Error

## Changes

> 18 revisions in range; 1 not diffed.

- **2026-09-23** `5d2121d26b96` — 14 info
  - added the required property `obligation/anyOf[subschema #1: FlightHotelObligationResponse]/accepted_at` to the response with the `200` status
  - added the required property `obligation/anyOf[subschema #1: FlightHotelObligationResponse]/captured_at` to the response with the `200` status
  - added the required property `obligation/anyOf[subschema #1: FlightHotelObligationResponse]/expired_at` to the response with the `200` status
  - added the required property `obligation/anyOf[subschema #1: FlightHotelObligationResponse]/expiry_started_at` to the response with the `200` status
  - …10 more
- **2026-09-22** `b7b1f6448378` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/helloaxel/apis/client-api-gateway/changes/flight-booking/sessions/:session_id/accept-hotel-offer/post.md)

---

[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.dev/helloaxel/apis/client-api-gateway/revisions/5d2121d26b96?raw)
