---
title: "Hotel Membership Preview"
method: POST
path: "/hotel-search/membership-preview"
tags: ["hotel-search"]
---

# Hotel Membership Preview

`POST /hotel-search/membership-preview`

Return one example without signup; do not expose or accept hotel session IDs.

Like the existing public hotel ad flow, search/polling stays inside this
bounded request. The frontend keeps both flight choices available while it waits.

## Headers

- `authorization` string, nullable

## Request body

- HotelMembershipPreviewRequest
  - `observation_id` string, uuid, required

## Response `200`

Successful Response

- HotelMembershipExample — One room, whole-stay USD example, never a booking or payment quote. Public evidence matches property, dates and occupancy, not necessarily the room, meal or cancellation terms. R is the established member all-in rate; the computed 50/75 prices do not change hotel checkout policy.
  - `name` string, required
  - `star_rating` number, nullable
  - `destination` string, required
  - `check_in` string, date, required
  - `check_out` string, date, required
  - `nights` integer, required
  - `adults` integer, required
  - `room_name` string, nullable
  - `public_provider` string, required
  - `public_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
  - `axel_floor_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
  - `ordinary_axel_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
  - `free_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
  - `member_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
  - `expires_at` string, date-time, required

## 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/4f4ea4eb6a21/schema)
