API Change Log

Joel P
Feb 5, 2025 8:16 AM
OR Team Member Joined Oct, 2009 157 posts

Hello developer community! Welcome to the API Change Log. This topic is dedicated to important updates about the OwnerRez APIs. We recommend you watch this topic to be alerted about changes that may impact your applications.

Happy coding!

Joel P
Feb 5, 2025 8:16 AM
OR Team Member Joined Oct, 2009 157 posts

Hello developer community! Welcome to the API Change Log. This topic is dedicated to important updates about the OwnerRez APIs. We recommend you watch this topic to be alerted about changes that may impact your applications.

Happy coding!

Joel P
Feb 13, 2025 5:01 PM
OR Team Member Joined Oct, 2009 157 posts

Breaking Change: Required Field "currency" on SpotRates

[This change was announced on January 6, 2025 and goes into effect on March 1, 2025]

The PATCH v2/spotrates endpoint now requires currency to be explicitly specified for each rate. With this update, every rate entry must include a 3-character currency specification.

Example:

{
    "property_id": 123,
    "date": "yyyy-mm-dd",
    "amount": 123.00,
    "currency": "USD"
}

This change ensures the currency provided matches the property's configured currency. The purpose of this change is to avoid mis-pricing issues caused by differences in configuration between the rate supplier and OwnerRez. 

You may begin sending requests containing currency immediately, but validation will only be enforced starting on March 1.

From March 1, any patch requests to SpotRates that do not include a currency value will result in an error. Additionally, any patch requests that contain a currency value different from the property's configured currency in OwnerRez will result in an error.

Joel P
Feb 14, 2025 9:49 AM
OR Team Member Joined Oct, 2009 157 posts

Breaking Change: v1.1 Quotes Arrival and Departure dates should not include time values

[Change effective February 12, 2025]

This is a validation change to the legacy v1.1 API. Prior to this change, if a user submitted a Quote value to v1/quotes containing Arrival and Departure dates that also included timestamps, we would not error but would attempt to store those time values. This caused problems downstream because Arrival and Departure are only intended to be timeless dates.

We have modified the PUT, POST, and TEST verbs on v1/quotes to validate that Arrival and Departure parameters do not include a timestamp. If a timestamp is included, a 400 error will be returned.

Joel P
Apr 2, 2025 1:19 PM
OR Team Member Joined Oct, 2009 157 posts

New Property: Travel Insurance information on Bookings

[Change effective April 2, 2025]

The GET v2/bookings/{id} endpoint and GET v2/bookings endpoint now include a travel_insurance property containing information about the availability of Travel Insurance for a specific booking.

Example:

"travel_insurance": {
    "can_purchase": true,
    "is_purchased": true,
    "purchase_url": "sample string 1"
}
Joel P
Jul 9, 2025 1:13 PM
OR Team Member Joined Oct, 2009 157 posts

Breaking Change: Uncategorized webhooks are no longer sent to categorized subscriptions

Some changes do not fall under any specific Webhook category. Historically, we sent such changes to all webhook subscribers of the related entity_type, even if the subscription was explicitly for only some categories. With the release on July 9, 2025, this is no longer the case.

We will now include the category "other" on any webhook which does not have an explicit category. In addition, subscribers who specify a category in their subscription will not receive webhooks with uncategorized changes. To receive webhooks for uncategorized changes you must now create an subscription with no category filter which will receive all webhooks for an entity_type.

Example Payload:

{
"id": 12345, "user_id": 56789, "action": "entity_update", "entity_type": "property", "entity_id": 12345,
"categories": ["other"] }

 

Joel P
Jul 23, 2025 11:53 AM
OR Team Member Joined Oct, 2009 157 posts

New Property: Is Snoozed on Properties

[Change effective July 23, 2025]

The GET v2/properties/{id} endpoint and GET v2/properties endpoint now include an is_snoozed property indicating that a property is "snoozed" to prevent new bookings.

Example:

"is_snoozed": false
Joel P
Aug 4, 2025 1:21 PM
OR Team Member Joined Oct, 2009 157 posts

Breaking Change: PATCH /v2/users/me removed

[Change effective August 1, 2025]

We identified a potential attack vector related to patching user details. Upon thorough review we determined that this endpoint is not heavily used. Nor is there any evidence this vector has ever been exploited. We've removed the endpoint for now. If you need this endpoint for your purposes, please reach out to partner help to let us know your use case.

Joel P
Aug 6, 2025 3:39 PM
OR Team Member Joined Oct, 2009 157 posts

Two exciting new features to announce today, and one minor breaking change:

  1. Webhooks now include the detailed record in each payload!
  2. We've added a new status filter to the bookings GET
  3. We've removed the deprecated sinceUtc parameter from the bookings GET. Use since_utc instead.

 

New Property: entity on Webhooks

[Change effective August 6, 2025]

All webhooks now include a new property entity which contains an object representing the related record.

Example:

{
"action": "entity_update",
"categories": [
"other"
],
"entity": {
"adults": 1,
"agreements": [
{
"date": "2025-08-01T23:49:22Z",
"name": "Example Guest",
"url": "example"
}
],
"arrival": "2025-08-03",
"booked_utc": "2025-07-11T23:32:11Z",
"cancellation_policy_description": "Moderate: Free cancellation at least 5 days before check-in. After that, cancel before check-in and get a 50% refund, minus the first night and service fee.",
"charges": [
{
"amount": 1631,
"commission_amount": 0,
"description": "Rent",
"is_channel_managed": true,
"is_commission_all": false,
"is_expense_all": false,
"is_taxable": true,
"owner_amount": 1631,
"owner_commission_percent": 0,
"position": 0,
"rate": 1631,
"rate_is_percent": false,
"type": "rent"
},
{
"amount": 99,
"commission_amount": 0,
"description": "Management Fee",
"is_channel_managed": true,
"is_commission_all": false,
"is_expense_all": false,
"is_taxable": false,
"owner_amount": 99,
"owner_commission_percent": 0,
"position": 1,
"rate": 99,
"rate_is_percent": false,
"surcharge_id": 12345,
"type": "surcharge"
},
{
"amount": 300,
"commission_amount": 0,
"description": "Cleaning Fee",
"is_channel_managed": true,
"is_commission_all": false,
"is_expense_all": false,
"is_taxable": true,
"owner_amount": 300,
"owner_commission_percent": 0,
"position": 2,
"rate": 300,
"rate_is_percent": false,
"surcharge_id": 12346,
"type": "surcharge"
},
{
"amount": 154.48,
"commission_amount": 0,
"description": "Tax",
"is_channel_managed": true,
"is_commission_all": false,
"is_expense_all": false,
"is_taxable": false,
"owner_amount": 0,
"owner_commission_percent": 0,
"position": 3,
"rate": 8,
"rate_is_percent": true,
"tax_id": 1234,
"type": "tax"
}
],
"check_in": "16:00",
"check_out": "11:00",
"children": 0,
"created_utc": "2025-07-11T23:32:11Z",
"currency_code": "USD",
"departure": "2025-08-05",
"form_key": "example",
"guest": {
"first_name": "Example",
"id": 54321,
"last_name": "Guest"
},
"guest_id": 54321,
"id": 14380310,
"infants": 0,
"is_block": false,
"listing_site": "Airbnb",
"pets": 0,
"platform_reservation_number": "HMXXXXEX",
"property": {
"external_name": "Example House",
"id": 12345,
"internal_code": "Example House Code",
"name": "Internal Example House",
"public_url": "https://example.com/property/example-house/"
},
"property_id": 12345,
"status": "active",
"thread_ids": [
12345
],
"total_amount": 2184.48,
"total_host_fees": 60.9,
"total_paid": 2184.48,
"travel_insurance": {
"can_purchase": false,
"is_purchased": false
},
"type": "booking",
"updated_utc": "2025-07-11T23:45:53Z"
},
"entity_id": 12345,
"entity_type": "booking",
"id": "globally unique id",
"user_id": 12345
}

This feature should reduce the need to fetch the record details foreach webhook received. Please consider updating your integration to take advantage.

 

New Query Parameter: status on /v2/bookings

[Change effective August 6, 2025]

We've added a new query parameter to the GET /v2/bookings endpoint for booking status. Possible values are active, canceled, or pending.

Example:

GET /v2/bookings?status=canceled&since_utc=2025-08-01

{
"items": [
{
...
"status": "pending"
}
],
  "limit": 20,
  "offset": 0
}

This change should help reduce the number of requests needed to fetch a subset of bookings. 

 

Breaking Change: sinceUtc parameter removed from /v2/bookings

[Change effective August 6, 2025]

Long ago we deprecated sinceUtc on GET /v2/bookings in favor of since_utc. We have now completely removed sinceUtc. Please use since_utc instead.

Joel P
4 days ago
OR Team Member Joined Oct, 2009 157 posts

New Query Parameter and model Property: include_drafts and is_draft on /v2/messages

[Change effective August 13, 2025]

We've added a new, optional query parameter to the GET /v2/messages endpoint, along with a new property on the message model. Possible query values are true or false. If no value is provided, draft messages will not be included in the result set.

Example:

GET /v2/messages?include_drafts=true

{
"items": [
{
...
"is_draft": true
}
],
  "limit": 20,
  "offset": 0
}

 

Breaking Change: sinceUtc parameter removed from /v2/messages

[Change effective August 13, 2025]

Long ago we deprecated sinceUtc on GET /v2/messages in favor of since_utc. We have now completely removed sinceUtc. Please use since_utc instead.