2026-10-18

Added

  • Basic fees (beta): A new "[Beta] Basic Fees" group manages a listing's cleaning fee and per-channel overrides.
    • GET /basic-fees/listings: fetch basic fees for up to 50 listings. Pass listingIds as repeated query parameters or as one comma-separated value. Listings with no basic fees are omitted from the response.
    • GET /basic-fees/listings/{listingId}: fetch the basic fees for one listing. Returns 404 when none are configured.
    • PUT /basic-fees/listings/{listingId}: create or update a listing's basic fees.
      • Leaving out cleaningFee keeps the stored fee.
      • channelConfigurations is required, and [] clears all channel overrides.
      • shouldUpdateSubUnits=true overwrites child listings with the same payload (no merge).
    • DELETE /basic-fees/listings/{listingId}: delete a listing's basic fees and return the deleted configuration. Returns 404 when none are configured.
    • GET /basic-fees/listings/{listingId}/channels/{channel}: get the cleaning fee in effect on one channel. This is the channel override if there is one; otherwise, the listing default. Returns 200 without cleaningFee when neither is set, and 404 only when the listing has no basic fees.
  • Channel commissions v2: /channel-commissions-v2 now manages commissions at the account level and the listing (unit type) level.
    • POST /channel-commissions-v2: create one channel/source commission entry. Leave out unitTypeId for the account level, or set it for the listing level. Returns 409 if the channel/source pair already exists at that level.
    • PATCH /channel-commissions-v2/{channelCommissionId}: update one entry. The body must repeat the entry's channel and source, and leaving out commission or tax removes them. Returns 404 when no entry matches.
    • DELETE /channel-commissions-v2/{channelCommissionId}: delete one entry. Deleting the last entry at a level removes all commissions at that level. Returns 204 even if the entry is already gone.
    • GET /channel-commissions-v2/unit-type/{unitTypeId}: get the entries stored for a listing, with no account-level inheritance. A sub-unit ID is resolved to its parent unit type.
    • PUT /channel-commissions-v2/unit-type/{unitTypeId}: replace the listing's full set of entries. Entries missing from the body are removed.type.
    • PUT /channel-commissions-v2/unit-type/{unitTypeId}: replace the listing's full set of entries. Entries missing from the body are removed.
    • GET /channel-commissions-v2/unit-type/{unitTypeId}/actual: get the commissions that currently apply to a listing after its level configuration is resolved.
    • GET /channel-commissions-v2/unit-type/{unitTypeId}/level-configurations: get whether a listing uses ACCOUNT or UNIT_TYPE commissions (default ACCOUNT).
    • PUT /channel-commissions-v2/unit-type/{unitTypeId}/level-configurations: set a listing's level to ACCOUNT or UNIT_TYPE.
    • PUT /channel-commissions-v2/reservations/{reservationId} (beta): manually override a reservation's channel commission (hostServiceFee) amount and update its folio. realizationDates must fall within the reservation's allowed accounting recognition window. Returns 400 when the channel has already pre-deducted the commission from the host payout.

Changed

  • Check-in instructions: Listing and owner reservation responses gain an optional checkInInstructions object (primaryCheckIn, alternativeCheckIn, notes, pictureUrl, pictureUrls).
    • primaryCheckIn and alternativeCheckIn are nullable and accept RECEPTION, LOCK_BOX, DOOR_CODE, MEET and OTHER.
    • pictureUrls holds up to 10 photo URLs. pictureUrl is a backward-compatible alias of the first one.
    • Affects GET /listings, POST /listings, GET /listings/{id}, PUT /listings/{id}, PUT /listings/{id}/availability-settings, GET /owners-reservations, GET /owners-reservations/{id} and PUT /owners-reservations/{id}. On the owners-reservations endpoints, it sits under listing.
  • Guest folio webhooks: The webhook events list gains guest-folio.created and guest-folio.updated, so you can subscribe to them. Affects GET /webhooks, POST /webhooks, GET /webhooks/{id} and PUT /webhooks/{id}. A guide expounding on these events is planned.
  • Conversations: GET /communication/conversations gains the type query parameter (guest, owner or owner-direct; default guest). The earlier docs named type as the filter but listed only guest and owner.
  • Messages: POST /communication/conversations/{conversationId}/send-message now lists platform as a supported module.type.
  • Guest folio invoice items: normalType on GET /guest-folio/invoice-items gains the values AFD, AFA, EPF, ADF, OTHER and OT, each now explained.
  • Creating invoice items: POST /invoice-items/reservation/{reservationId}:
    • Docs corrected: the page previously listed both a 200 and a 201 with an empty description and an untyped body. It now documents only 201, "The updated folio with the new invoice item".
    • 400 now lists its common causes, and a 403 is documented for callers without financials access to the reservation's listing.
    • stayIndex is an integer with a minimum of 0. 0 is the first stay, and it is required for multi-stay reservations and omitted for single-stay ones. A cleaning fee (CF) can only be added on stay 0.
    • realizationDates needs at least 1 date, in format: date.
    • isUpsellFee is described: it is only allowed when normalType is AFE.
  • Account-level channel commissions v2: Docs corrected for GET /channel-commissions-v2/account and PUT /channel-commissions-v2/account. Both pages were copies of the legacy /channel-commission/account docs, with no response documented. Each now has its own description and response. PUT now takes an array of channel/source commission definitions (tax required per item) that replaces the full account-level set, so entries not in the body are removed.
  • Documented limits: PUT /channel-commission/account accepts at most 200 manual items. PUT /channel-commission/listings accepts 1–50 channelCommissions per request and at most 200 manual items.
  • Date formats: realizationDates on POST /price-adjustments/manual-total-amount is now documented with format: date.

Deprecated

  • Channel commission (v1): Four legacy endpoints are now marked deprecated. No removal date has been announced.
    • GET /channel-commission/account: use GET /channel-commissions-v2/account.
    • PUT /channel-commission/account: use PUT /channel-commissions-v2/account.
    • GET /channel-commission/listings: use GET /channel-commissions-v2/unit-type/{unitTypeId} for stored entries, or GET /channel-commissions-v2/unit-type/{unitTypeId}/actual for effective ones.
    • PUT /channel-commission/listings: use PUT /channel-commissions-v2/unit-type/{unitTypeId} and PUT /channel-commissions-v2/unit-type/{unitTypeId}/level-configurations.
  • On GET /communication/conversations, the older conversation types parameter is deprecated in favor of type.

Removed

  • GET /channel-commissions-v2/listings and PUT /channel-commissions-v2/listings pages were removed. They were copies of the legacy /channel-commission/listings docs. Use GET and PUT /channel-commissions-v2/unit-type/{unitTypeId} instead, which work with one listing per call. There should be no disruption to existing implementations, but you are encouraged to migrate to the new resources as soon as possible.