2026-11-05
November 5th, 2026
Reservations (v3) now supports locking property and guest assignments, making it easier to manage who stays where and when. You can also take advantage of a new reservations report search to quickly find the information you need. Please note that we'll retire the older reservations endpoints on March 1, 2027. Legacy payment endpoints don't have a sunset date at this time
Changed
- Deprecate 18 legacy
/reservationsoperations by moving them to the[Deprecated] Reservationstag, prefixing their summaries with[DEPRECATED], and stating removal dates and replacements in their descriptions. See the Reservation migration guide - Deprecate
GET /reservationsin favor ofGET /reservations-v3/search, with removal on March 1, 2027. Some filters and fields differ - Deprecate
POST /reservationsin favor ofPOST /reservations-v3, with removal on March 1, 2027 - Deprecate
GET /reservations/{id}in favor ofGET /reservations-v3, with removal on March 1, 2027. Some filters and fields differ - Deprecate
PUT /reservations/{id}in favor of the dedicated v3 alteration endpoints, with removal on March 1, 2027. See the Reservation Alterations guide - Deprecate
POST /reservations/{id}/approvein favor ofPOST /reservations-v3/{reservationId}/approve, with removal on March 1, 2027 - Deprecate
POST /reservations/{id}/declinein favor ofPOST /reservations-v3/{reservationId}/decline, with removal on March 1, 2027 - Deprecate
POST /reservations/{id}/request-cancellation-syncin favor ofPOST /reservations-v3/{reservationId}/request-cancellation, with removal on March 1, 2027 - Deprecate
POST /reservations.csvwith removal on March 1, 2027. UseGET /reservations-reports/{viewId}/csv, or build the export fromGET /reservations-v3/search - Deprecate
POST /reservations.emailwith removal on March 1, 2027. It has no direct replacement: set up a reservations report and share it on a recurring schedule - Deprecate
POST /reservations/{id}/paymentsin favor ofPOST /payments. It remains available, and no removal date is set - Deprecate
PUT /reservations/{id}/payments/{paymentId}in favor ofPATCH /payments/{paymentId}andPOST /payments/{paymentId}/cancel. It remains available, and no removal date is set - Deprecate
POST /reservations/{id}/payments/{paymentId}/refundin favor ofPOST /payments/{paymentId}/refund. It remains available, and no removal date is set - Deprecate
PATCH /reservations/{id}/payments/{paymentId}/cancelin favor ofPOST /payments/{paymentId}/cancel. It remains available, and no removal date is set - Deprecate the
moneyresponse field onGET /reservations,POST /reservations,GET /reservations/{id},PUT /reservations/{id}, andPOST /reservations/{id}/invoiceItems, because it mixes pricing and payment data. UseGET /guest-folio/overview,GET /guest-folio/invoice-items, andGET /guest-folio/settings-snapshotfor pricing, andGET /paymentsfor payments. The field's shape is unchanged. - Deprecate
mergeAccommodationFarePriceComponentsin favor ofapplyGuestFacingMergesonGET /reservations-v3,PUT /reservations-v3/{reservationId}/source,PUT /reservations-v3/{reservationId}/dates,PUT /reservations-v3/{reservationId}/relocate,PUT /reservations-v3/{reservationId}/guests,GET /quotes/{quoteId},POST /quotes,POST /quotes/multiple, andPOST /quotes/{quoteId}/coupons - Rename the
Reservations Open Api [Beta]tag toReservationsfor the reservations-v3 operations andGET /reservation-logs/{reservationId} - Rename the
Group Reservations Open Api [Beta]tag toGroup ReservationsforGET /reservations-v3/group/{groupId}andPOST /reservations-v3/group - Rename the
Quotes Open Api [Beta]tag toQuotesforGET /quotes/{quoteId},POST /quotes,POST /quotes/multiple, andPOST /quotes/{quoteId}/coupons - Rename the
Reservations Reports Open Api [Beta]tag toReservations ReportsforGET /reservations-reports/{viewId}
Added
- Add
POST /reservations-v3/{reservationId}/property-lockendpoint to lock a reservation property against listing and unit changes. The operation is idempotent: locking an already locked reservation refreshes the lock metadata. Returns 200, 400, 403 when property lock is not enabled for the account, 404, or 500 - Add
DELETE /reservations-v3/{reservationId}/property-lockendpoint to unlock a reservation property so listing and unit changes are allowed again. The operation is idempotent and returns the same status codes as the lock endpoint - Add
GET /reservations-v3/{reservationId}/guestsendpoint to list the guests of a reservation, including the booker. Each item returns_idandtypeonly, not the full guest profile - Add
PUT /reservations-v3/{reservationId}/guests/assignendpoint to assign one guest (_idand atypeofadult,children,infant, orpet) to a reservation. Returns 422 when the guest cannot be assigned, for example when already assigned - Add
PUT /reservations-v3/{reservationId}/guests/unassignendpoint to unassign one guest (_id) from a reservation. Returns 422 when the guest cannot be unassigned, for example, the booker or a guest who is not assigned - Add
GET /reservations-reports/reservations/searchendpoint to search reservations with bracket-notation filters (filter[<field>]andfilter[<field>][<operator>]),skipandlimitpagination, andsort. The response returns the full report enrichments, and all date and time fields use the listing timezone - Add
GET /reservations-reports/{viewId}/csvendpoint to download the reservations report as a comma-separated values (CSV) file. It takeslimit,skip, and a requiredtimezone - Add Reservation migration guide to map each legacy
/reservationsworkflow (retrieval, exports, creation, alterations, financials, payments, guest details, and webhooks) to its replacement endpoints. It states that the legacy endpoints and thereservation.newandreservation.updatedwebhook events retire on March 1, 2027, and that legacy guest payment resources have no removal date yet - Add optional
lockPropertyrequest field toPOST /reservations-v3andPOST /reservations-v3/quoteto create a reservation that is already locked - Add
propertyLockandguests(id,type,assignedAt) to responses ofPOST /reservations-v3,POST /reservations-v3/quote,POST /reservations-v3/owner/confirmed, andGET /reservations-v3, and addpropertyLocktoGET /reservations-v3/searchresponses - Add
channelMetadata.merchantOfRecord(PMSorCHANNEL) and achannelMetadata.guestContactobject to responses ofGET /reservations-v3andGET /reservations-v3/search - Add optional
applyGuestFacingMergesparameter (defaultfalse) toGET /reservations-v3,PUT /reservations-v3/{reservationId}/source,PUT /reservations-v3/{reservationId}/dates,PUT /reservations-v3/{reservationId}/relocate,PUT /reservations-v3/{reservationId}/guests,GET /quotes/{quoteId},POST /quotes,POST /quotes/multiple, andPOST /quotes/{quoteId}/couponsto return a simplified guest-facing view of financial breakdowns - Add a 422 response to
POST /reservations-v3/mid-stayfor dates or units that are not available for the relocation - Add
payments.refund.failed,payments.authenticationFailed,payments.invalidBcomCard,payments.invalidSecondBcomCard, andreservation.payments.updatedto the webhookeventslist (31 to 36 values) onGET /webhooks,POST /webhooks,GET /webhooks/{id}, andPUT /webhooks/{id} - Add the same five events to the payment webhooks table in the
payment-webhooksandwebhooksguides, and link the "Financials webhooks" row in thewebhooksguide to the Financial webhooks guide - Document that
bookingDatemust use Coordinated Universal Time (UTC) onPOST /reservations-v3,POST /reservations-v3/owner/confirmed, andPUT /reservations-v3/{reservationId}/booking-date, with an example on the last - Document the
statusvalues thatPUT /reservations-v3/{reservationId}/statusaccepts. Non-channel reservations acceptinquiry,awaiting_payment,reserved,confirmed,canceled,closed,declined, andexpired. Channel reservations can only be canceled, and the system setsalteration,checked_in,checked_out, andcompleted
Fixed
- Fix request
statusvalues onPOST /reservations-v3,POST /reservations-v3/quote, andPOST /reservations-v3/groupto list onlyinquiry,awaiting_payment,reserved, andconfirmed(previously (mistakenly) eight values, includingcanceled,closed,declined, andexpired) - Fix response
statusto list 12 values onPOST /reservations-v3,POST /reservations-v3/quote,POST /reservations-v3/owner/confirmed,POST /reservations-v3/mid-stay,PUT /reservations-v3/{reservationId}/status,GET /reservations-v3,GET /reservations-v3/search, andalterationPayload.statuson the four quotes operations: the previous eight plusalteration,completed,checked_in, andchecked_out(previously incomplete or missing) - Fix identifier and
stayfield types in responses ofGET /reservations-v3andPOST /reservations-v3/mid-stay:_id,groupId,integrationId,quoteId,accountId,stay[]._id,stay[].unitTypeId, andstay[].unitIdare nowstring(previouslyobject), andsendQuoteIdandratePlans[].ratePlanIdnow have typestring(previously none) - Fix
stay[]._id,stay[].unitTypeId, andstay[].unitIdto typestring(previouslyobject) in responses ofGET /quotes/{quoteId},POST /quotes,POST /quotes/multiple, andPOST /quotes/{quoteId}/coupons - Fix
stay[].etaandstay[].etdso responses ofGET /reservations-v3,POST /reservations-v3/mid-stay, and the four quotes operations no longer list them as required - Fix the 400 body of
POST /reservations-v3/mid-stayto{ "error": { "message", "code", "timestamp", "moreDetails" } }(previously{ "statusCode", "message", "error": "Bad Request" }), and stop naming availability errors in the 400 description - Fix
error.datato accept a string or an object (previously string only) in the documented error responses ofPOST /reservations-v3/{reservationId}/approve,POST /reservations-v3/{reservationId}/decline,POST /reservations-v3/{reservationId}/pre-approve, andPOST /reservations-v3/{reservationId}/request-cancellation - Fix
customFields[].valueonPUT /reservations-v3/{reservationId}/custom-fieldsto remove a duplicate string option. The accepted types are unchanged: string, number, and boolean