---
title: "Get Session Status"
method: GET
path: "/hotel-search/sessions/{session_id}"
tags: ["hotel-search"]
---

# Get Session Status

`GET /hotel-search/sessions/{session_id}`

Session freshness and the party it was created for.

Content owns occupancy — the prices endpoint resolves it from the session
and ignores whatever the client sent. This is how a client reads the same
answer rather than rebuilding it from local state, which has previously
dropped children and flattened multi-room parties.

Read-only: never extends the session TTL and never re-prices.

## Path parameters

- `session_id` string, uuid, required

## Response `200`

Successful Response

- HotelSearchSessionStatusResponse — Lightweight session status for freshness checks (ENG-21888). Read-only: fetching this must never touch/extend the session TTL or trigger re-pricing. `is_expired` reflects `expires_at` at read time — an expired session is still re-priceable via `/query`, but its quoted prices must not be presented to a user as current.
  - `flight_hotel_obligation_id` string, uuid, nullable
  - `payment_requirement` 'pay_now', nullable — Backend-required payment timing. pay_now requires full payment at booking; null preserves ordinary rate rules.
  - `session_id` string, uuid, required
  - `flight_discount_estimate` HotelFlightDiscountEstimate — Server-owned sample of this session's four-star stay prices.
    - `average_stay_total` 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
    - `discount` 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
    - `sample_size` integer, required
    - `sample_bounds` Viewport, required — Map viewport defined by SW and NE corners of the visible area. Sent by the client whenever the user pans or zooms the map.
      - `sw` LatLng, required — Geographic coordinate pair. Used by both pricing and discovery APIs.
        - `latitude` number, required
        - `longitude` number, required
      - `ne` LatLng, required — Geographic coordinate pair. Used by both pricing and discovery APIs.
        - `latitude` number, required
        - `longitude` number, required
  - `check_in` string, date, required
  - `check_out` string, date, required
  - `guests` HotelSearchGuestConfig — Wraps a list of GuestRoom into a typed config object for the discovery API. Reuses the shared GuestRoom model — just adds a container with validation.
    - `rooms` GuestRoomOutput[], required
      - `adults` integer, required — Number of adults
      - `children` object[] — List of children with ages
  - `pricing_status` string, nullable
  - `created_at` string, date-time, required
  - `expires_at` string, date-time, required
  - `last_activity_at` string, date-time, nullable
  - `is_expired` boolean, required

## Other responses

- `422` — Validation Error

## Changes

> 20 revisions in range; 1 not diffed.

- **2026-09-23** `5d2121d26b96` — 2 info
  - added the optional property `flight_hotel_obligation_id` to the response with the `200` status
  - added the optional property `payment_requirement` to the response with the `200` status
- **2026-09-19** `e5f778e80f9a` — 1 info
  - added the optional property `flight_discount_estimate` to the response with the `200` status

[Change history](https://skmtc.dev/helloaxel/apis/client-api-gateway/changes/hotel-search/sessions/:session_id/get.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/c1e649dcf8e0?raw)
