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!
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!
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.
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.
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" }
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"]
}
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
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.
Two exciting new features to announce today, and one minor breaking change:
status
filter to the bookings GETsinceUtc
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.
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.