Update Reservation
Change an existing reservation's dates, guest count, arrival and departure times, or move it to another listing. Only send the fields you want to change. A stay managed in a connected PMS is changed in the PMS.
When to use this endpoint
- Change check-in or check-out dates after a guest requests a modification
- Update guest count when the party size changes
- Move a direct booking to another listing, with or without new dates, in one call
Partial updates only
Update a reservation
/v1/reservations/:idcurl -X PATCH "https://api.repull.dev/v1/reservations/456" \
-H "Authorization: Bearer sk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"checkIn": "2026-06-02",
"checkOut": "2026-06-07",
"guestCount": 3
}'Body parameters
checkIndateNew check-in date. Format: YYYY-MM-DD.
checkOutdateNew check-out date. Format: YYYY-MM-DD.
guestCountintegerTotal guests, 1 or more.
checkInTimestringHH:MM. Not on a stay managed in a PMS, whose times come from the PMS.
checkOutTimestringHH:MM. Not on a stay managed in a PMS.
listingIdintegerMove the reservation to another listing in this workspace. Sent with dates, it is one move, so the access code is re-issued once. Not on a stay managed in a PMS.
Refused by name
totalPrice and other pricing, currency, status, platform and notes answer 422 unsupported_field naming the field — never accepted and ignored. Cancel with POST /v1/reservations/{id}/cancel.Where the change is made
- A stay managed in a connected PMSis changed in the PMS first, then Repull's copy is refreshed from the PMS's record.
checkIn,checkOutandguestCountcan change; a move to another listing or new arrival times are done in the PMS (422 pms_write_unsupported), as is anything the PMS's API cannot change — dates on Smoobu, for example. The PMS checks availability (409 pms_unavailable) and its outcome comes back aspms.GET /v1/listings/{id}→capabilities.reservations.modifysays whether a listing's PMS supports changes; the details are on PMS reservation support. - Direct, website and owner bookings are changed in Repull: the old nights unblock, the new ones block, and
reservation.updatedfires, re-issuing the door code. Availability is not checked here — callGET /v1/availability/{propertyId}first if that matters. - A channel booking (Airbnb, Booking.com, Vrbo), including one relayed through a PMS, answers 409 reservation_owned_by_channel. Change it on the channel.
Response format
Returns the full updated reservation object.
{
"id": "215708",
"confirmationCode": "HA-4471923",
"listingId": "4118",
"checkIn": "2026-10-02",
"checkOut": "2026-10-06",
"checkInTime": null,
"checkOutTime": null,
"status": "confirmed",
"updatedAt": "2026-09-30T14:30:00Z",
"changed": ["checkIn", "checkOut", "guestCount"],
"pms": { "provider": "hostaway", "reservationId": "4471923", "applied": ["dates", "guests"], "errors": [], "partial": false, "failedSections": [] }
}Response fields
idstringThe reservation id.
confirmationCodestringnullableConfirmation code.
listingIdstringnullableThe listing it is on now.
checkInstringnullableCheck-in date (YYYY-MM-DD).
checkOutstringnullableCheck-out date (YYYY-MM-DD).
statusstringnullableA move forces the reservation to confirmed — read it back rather than assuming it is unchanged.
changedstring[]The fields this request actually changed.
pmsobjectPresent when the change was made in a PMS: what it applied, and `partial` / `failedSections` when a step did not apply.
Common update patterns
Change dates only
curl -X PATCH "https://api.repull.dev/v1/reservations/456" \
-H "Authorization: Bearer sk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{ "checkIn": "2026-06-03", "checkOut": "2026-06-08" }'Move to another listing with new dates (direct bookings)
curl -X PATCH "https://api.repull.dev/v1/reservations/456" \
-H "Authorization: Bearer sk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{ "listingId": 4119, "checkIn": "2026-06-03", "checkOut": "2026-06-08" }'API Reference
See the complete Reservations API Reference for all endpoints including list, create, and cancel.