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

This endpoint accepts partial updates. Only include the fields you want to change — omitted fields remain untouched. You never need to re-send the entire reservation object.

Update a reservation

PATCH/v1/reservations/:id
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-02",
    "checkOut": "2026-06-07",
    "guestCount": 3
  }'

Body parameters

checkIndate

New check-in date. Format: YYYY-MM-DD.

checkOutdate

New check-out date. Format: YYYY-MM-DD.

guestCountinteger

Total guests, 1 or more.

checkInTimestring

HH:MM. Not on a stay managed in a PMS, whose times come from the PMS.

checkOutTimestring

HH:MM. Not on a stay managed in a PMS.

listingIdinteger

Move 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

Guest details, 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, checkOut and guestCount can 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 as pms. 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.updated fires, re-issuing the door code. Availability is not checked here — call GET /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

idstring

The reservation id.

confirmationCodestringnullable

Confirmation code.

listingIdstringnullable

The listing it is on now.

checkInstringnullable

Check-in date (YYYY-MM-DD).

checkOutstringnullable

Check-out date (YYYY-MM-DD).

statusstringnullable

A move forces the reservation to confirmed — read it back rather than assuming it is unchanged.

changedstring[]

The fields this request actually changed.

pmsobject

Present 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.

AI