# Rebooking an existing hotel PNR for price optimization Hotel prices tend to change often based on demand and various other factors such as competitor pricing, market conditions, festival/holiday seasons, and so on. Some hotels provide the option to rebook their existing PNR if the original price of the hotel has changed. For example, a traveler may consider rebooking an existing PNR after noticing a drop in price for the room they already booked. Some hotels provide the option to rebook a PNR (so that travelers can get better prices for their stay). > **Note:** The rebooking workflow will cancel the existing booking and create a new PNR with the same hotel preferences as the canceled one. The steps below explain how to rebook an existing PNR for price optimization. | Step | Name | Endpoint | Details | | --- | --- | --- | --- | | 1. | [Validate rebooking for price optimization](/openapi/hotelapi#operation/hotelValidateRebooking) | `/v2/hotel/validate-rebooking` | Validate a PNR to check if it's valid for rebooking.**Request body requires:** Traveler details, `tripId`, and `cancelSourcePnrId` (also referred to as `externalPnrId` in step 4 of [creating a hotel booking](/spotnana/hotel_booking_workflow) workflow and step 3 of [modifying a hotel booking](/spotnana/hotel_modify_workflow) workflow). | | 2. | [Verify hotel price](/openapi/hotelapi#operation/hotelPriceCheck) | `/v2/hotel/price-check` | Verify the hotel room price.**Request body requires:** `priceValidateKey` from step 2 of [creating a hotel booking](/spotnana/hotel_booking_workflow) workflow. If the booking has been modified earlier, then use the `priceValidateKey` from step 1 of the [modifying a hotel booking](/spotnana/hotel_modify_workflow) workflow.**Response will contain:** `bookingKey`**Other APIs will use:** `bookingKey` | | 3. | [Create a hotel booking](/openapi/hotelapi#operation/hotelCreatePnr) | `/v2/hotel/create-pnr` | Create a new PNR and cancel the existing one.**Request body requires:** `bookingKey` from step 2, and other parameters such as traveler details, occupancy information, payment information, and custom field questions. The `cancelSourcePnrId` field should be populated with the value of the `externalPnrId` retrieved from step 4 of the [create a hotel booking](/spotnana/hotel_booking_workflow) workflow.**Response will contain:** The new `pnrId`, `pnrStatus`, and `externalPnrId` to hold the new [source PNR ID](/spotnana/basic_trip_concepts#source-pnr). |