---
title: "Requote"
method: POST
path: "/hotel-bookings/requote"
tags: ["hotel-bookings"]
---

# Requote

`POST /hotel-bookings/requote`

Re-price one hotel. `reason` decides on which feed, and what may replace what.

`member` turns a guest's public card into the member price after sign-in.
`refresh` re-prices a card whose quote can no longer be sold — expired, or
minted on a feed this deployment has retired — on whichever feed the viewer
may see, and replaces the list wholesale. Failure modes by status:
  * 404 `no_rates` — nothing to show. For `member`: either the hotel has no
    CUG rates for these dates, or there is no cached card to price against
    and therefore no ledger row to stand behind one; keep the B2C rooms,
    nothing is wrong. For `refresh` it means the opposite — the stale rooms
    are NOT a fallback and the card is not bookable for these dates.
  * 422 — a child with no age; LiteAPI will not price without one.
  * 502 `provider_error` — LiteAPI did not answer. Keep the B2C rooms.

## Request body

- RequoteRequest — One hotel, the dates and party the card was searched with.
  - `hotel_id` string, required
  - `reason` 'member' | 'refresh' — Why we are re-pricing, which decides what may replace what. MEMBER re-prices a public card on the member feed and may only SUBSTITUTE: a counterpart on the same terms, and only when it is no dearer. Its whole premise is that the public rooms are live and bookable, so a dearer or differently-termed member rate is not an improvement and is refused. REFRESH re-prices a card whose quote can no longer be sold — expired, or minted on a feed this deployment has retired. Nothing on it is live, so the guard inverts: the fresh list REPLACES the old one whatever it costs, because a dearer live price is the answer and the stale one is not a fallback. Measured 2026-09-05→09-08: 3 of 7 Book presses were spent on offers in exactly this state, and each one failed at `/prebook` with no row and no event.
  - `checkin` string, date, required
  - `checkout` string, date, required
  - `adults` integer
  - `children` integer
  - `children_ages` string, nullable
  - `currency` string
  - `conversation_id` string, uuid, nullable
  - `tool_call_id` string, nullable
  - `result_index` integer, nullable
  - `booking_intent_id` string, nullable

## Response `200`

Successful Response

- RequoteResponse — The hotel re-priced on the CUG feed. `rooms` are member offers with live `offer_id`s; the client matches them to the B2C rooms it holds on `mapped_room_id`, board and refundability, never on `offer_id`.
  - `feed` string, required
  - `hotel_id` string, required
  - `quoted_at` string, date-time, required
  - `price` number, nullable, required
  - `price_display` string, nullable, required
  - `total_price` number, nullable, required
  - `total_price_display` string, nullable, required
  - `currency` string, required
  - `rooms` RoomOption[], required
    - `offer_id` string, required
    - `room_name` string, required
    - `mapped_room_id` integer, nullable
    - `bed_summary` string, nullable
    - `size_sqft` integer, nullable
    - `max_occupancy` integer, nullable
    - `board_type` string, nullable
    - `board_name` string, nullable
    - `refundable` boolean
    - `cancel_until` string, nullable
    - `price_per_night` number, nullable
    - `total_price` number, nullable
    - `initial_price` number, nullable
    - `taxes_included` boolean, nullable
    - `currency` string
    - `photos` string[]
    - `amenities` string[]
    - `why` string, nullable
  - `ledger_written` boolean, required
  - `cached_row_refreshed` boolean, required
  - `member_rates_applied` boolean, required

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-09** `c3802252fcff` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/stardrift/apis/fastapi/changes/hotel-bookings/requote/post.md)

---

[API](https://skmtc.dev/stardrift/apis/fastapi.md) · [All operations](https://skmtc.dev/stardrift/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc.dev/stardrift/apis/fastapi/revisions/7367652ab574?raw)
