---
title: "Get Hotel Prices"
method: POST
path: "/hotel-search/hotels/{hotel_id}/prices"
tags: ["hotel-search"]
---

# Get Hotel Prices

`POST /hotel-search/hotels/{hotel_id}/prices`

## Request

- Base URL: `https://api.helloaxel.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.helloaxel.com/hotel-search/hotels/{hotel_id}/prices`
- Auth: HTTP bearer

Get hotel room prices — standalone, no session required.

Guests parse leniently here: content resolves real occupancy from the
search session (or strictly validates when sessionless), so the gateway
must not 422 a client-mangled guest config before content can.

## Path parameters

- `hotel_id` integer, required

## Query parameters

- `selected_quote_id` string, uuid, nullable

## Request body

- HotelPricesRequestLenient: Wire form of HotelPricesRequest for client-facing routes. `guests` is optional and parses leniently on purpose: the search session is the source of truth for occupancy, so clients with a hotel_search_session_id should omit guests entirely and let the handler resolve them from the session. A supplied config parses without supplier caps so a client-mangled value (e.g. a checkout overlay that flattened "8 rooms x 4 adults" into one 32-adult room) still reaches the handler — where the session's guests replace it — instead of 422ing at request parsing. Handlers convert to HotelPricesRequest after resolving occupancy; sessionless requests must supply guests that pass strict validation.
  - `conv_trip_id` string, uuid, nullable
  - `check_in` string, date, required
  - `check_out` string, date, required
  - `guests` LenientGuestConfig: Container for LenientGuestRoom; see that model's docstring.
    - `rooms` LenientGuestRoom[], required
      - `adults` integer, required
      - `children` object[]
  - `hotel_search_session_id` string, uuid, nullable
  - `provider` 'etg' | 'webbeds' | 'axel_discount_etg' | 'axel_discount_webbeds': Hotel pricing provider identifier. Matches the `source` field on HotelObservation / HotelOffer and the `supplier` column on hotel_quotes. Used to filter detail-pricing requests so the FE can ask for a specific provider's offers after the SERP card surfaces which provider won the cheapest-price race.
  - `generate_room_titles` boolean: Wait for missing room presentation; false uses cached titles or supplier names.
  - `force_refresh` boolean: Fetch new supplier quotes instead of reusing cached room rates.

## Response `200`

Successful Response

- RoomTypeGroup[]
  - `group_id` string, required
  - `display_name` string, required
  - `images` string[]
  - `amenities` string[]
  - `cancellation_options` VariantOption[]
    - `label` string, required
    - `value` string, required
    - `price_diff` 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
    - `from_quote_id` string, nullable
    - `quote_id` string, nullable
    - `price_basis` 'standard' | 'member', nullable
    - `trip_price_diff` 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
  - `meal_options` VariantOption[]
    - `label` string, required
    - `value` string, required
    - `price_diff` 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
    - `from_quote_id` string, nullable
    - `quote_id` string, nullable
    - `price_basis` 'standard' | 'member', nullable
    - `trip_price_diff` 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
  - `bed_options` VariantOption[]
    - `label` string, required
    - `value` string, required
    - `price_diff` 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
    - `from_quote_id` string, nullable
    - `quote_id` string, nullable
    - `price_basis` 'standard' | 'member', nullable
    - `trip_price_diff` 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
  - `quote_options` VariantOption[], nullable: Exact quote replacements on final prices: breakfast, extra_bed, pay_later, or payment_choice (a cheaper default for the same payment/cancellation terms). Original offers and nightly summary lists are retained. Null denotes an older response without these decisions.
    - `label` string, required
    - `value` string, required
    - `price_diff` 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
    - `from_quote_id` string, nullable
    - `quote_id` string, nullable
    - `price_basis` 'standard' | 'member', nullable
    - `trip_price_diff` 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
  - `offers` RoomOffer[]
    - `payment_requirement` 'pay_now', nullable: Backend-required payment timing. pay_now requires full payment at booking; null preserves ordinary rate rules.
    - `flight_discount` 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
    - `quote_id` string, required
    - `provider` string, required
    - `room_name` string, required
    - `occupancy_rules` RoomOccupancyRules
      - `source` 'webbeds', required
      - `provider_hotel_id` string, required
      - `room_type_code` string, required
      - `observed_at` string, date-time, required
      - `max_occupancy` integer, nullable
      - `max_adults` integer, nullable
      - `max_adults_with_children` integer, nullable
      - `max_children` integer, nullable
      - `min_child_age` integer, nullable
      - `max_child_age` integer, nullable
    - `display_name` string, nullable: Legacy display summary containing prepared title and details; room_name remains supplier truth. Prefer room_presentation when supported.
    - `room_presentation` RoomPresentation
      - `title` string, required
      - `bedding` string, nullable
      - `sleeps` integer, nullable
      - `notes` string[]
    - `bed_type` string, nullable
    - `bed_count` integer, nullable
    - `bed_configuration` 'king' | 'two_beds', nullable
    - `room_illustration` 'bed-queen' | 'bed-king' | 'beds-two-queen' | 'beds-two-twin', nullable: Optional prepared room illustration matching the supplier bedding. Display only, not a supplier photo or booking fact. Null means no supported, unambiguous layout; clients must not infer an illustration from room names.
    - `breakfast_included` boolean, nullable
    - `meal_plan` string, nullable
    - `extra_bed_included` boolean, nullable: Explicit extra-bed inclusion for this exact rate. True includes an extra bed; false explicitly excludes it; null is unverified. Does not establish bed size, bed count, or occupancy.
    - `is_refundable` boolean, required
    - `free_cancellation_until` string, date-time, nullable
    - `customer_pay_by` string, date-time, nullable
    - `cancellation_penalty_description` string, nullable
    - `cancellation_policy` HotelOfferCancellationPolicy: Dated rate terms preserved separately from customer refund execution. A missing fee is unknown, never zero. Supplier fees exclude any unverified treatment of Axel's margin, credits, or property charges. For paid periods, a final customer charge/refund requires confirmation.
      - `periods` HotelOfferCancellationPeriod[]
        - `starts_at` string, date-time, nullable
        - `ends_at` string, date-time, nullable
        - `supplier_fee` 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
        - `cancel_restricted` boolean
      - `time_basis` 'utc' | 'unspecified', required
      - `no_show_supplier_fee` 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
      - `is_complete` boolean
    - `cancel_restricted` boolean
    - `amend_restricted` boolean
    - `rooms_available` integer, nullable
    - `rate_identity_json` object, nullable
    - `pricing` OfferPricing, required: Full price breakdown for a single room offer.
      - `nightly_rate` 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_nightly_rate` 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
      - `total_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_total_customer_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
      - `total_due` 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_due` 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
      - `total_at_property` 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
      - `mandatory_fees` MandatoryFee[]
        - `name` string, required
        - `fee_type` string, nullable
        - `unit_amount` 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
        - `pricing_unit` string, nullable
        - `total` 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
        - `source` string, nullable
      - `supplier_taxes` 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
      - `exact_public_rate_comparison` ExactPublicRateComparison: Fee-normalized proof for the exact public version of this stay.
        - `source` 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
        - `customer_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
        - `savings_bucket_percent` integer, required
      - `retail_comparison_total` 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
      - `retail_comparison_nightly` 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
      - `trip_total` 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
      - `trip_total_nightly` 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_trip_total` 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_trip_total_nightly` 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
    - `deposit` OfferDeposit: Card hold required at booking time. Returned from provider per rate.
      - `amount` 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
      - `is_refundable` boolean
    - `expires_at` string, date-time, nullable
    - `tariff_notes` string, nullable
    - `min_stay_nights` integer, nullable
    - `min_stay_applies_from` string, date, nullable
    - `special_promotions` string[], nullable
    - `minimum_selling_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
  - `default_quote_id` string, required
  - `beds` string, nullable
  - `sleeps` integer, nullable
  - `description` string, nullable
  - `priced_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

## Other responses

- `422`: Validation Error

## Changes

> 82 revisions in range; 1 not diffed.

- **2026-10-17** `990127ff1daf`: 1 info
  - added the new optional request property `generate_room_titles`
- **2026-10-17** `ebe1c9a54e98`: 1 info
  - added the new optional `query` request parameter `selected_quote_id`
- **2026-10-13** `25b5027aa68e`: 13 info
  - added the optional property `items/bed_options/items/from_quote_id` to the response with the `200` status
  - added the optional property `items/bed_options/items/price_basis` to the response with the `200` status
  - added the optional property `items/bed_options/items/quote_id` to the response with the `200` status
  - added the optional property `items/bed_options/items/trip_price_diff` to the response with the `200` status
  - …9 more
- **2026-10-12** `7aacdbd25f73`: 2 info
  - added the optional property `items/offers/items/extra_bed_included` to the response with the `200` status
  - added the optional property `items/offers/items/occupancy_rules` to the response with the `200` status
- **2026-10-10** `e1fd53f6044d`: 1 info
  - added the optional property `items/offers/items/pricing/mandatory_fees/items/source` to the response with the `200` status

[Operation history](https://skmtc.dev/helloaxel/apis/client-api-gateway/changes/hotel-search/hotels/:hotel_id/prices/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/5d2bae0deed4?raw)
