Download OpenAPI specification:
For a minimal direct integration of a proprietary system, we recommend to follow this basic execution flow in order to set up a portfolio and get daily price recommendations.

To integrate a property management system or channel manager, we recommend to follow this execution flow in order to connect individual end users, refresh daily price recommendations, and leverage the full capabilities of the Wheelhouse platform.

For the integration of a property management system or channel manager, we recommend these UX flows for the typical processes of connecting a new user and (de-)activating pricing for a listing.



Wheelhouse can support any reasonable rate limit that you require.
On average you can expect 4-6 API calls to update a single listing. For a portfolio with 1,000 listings, your system would therefore likely make 4,000 - 6,000 API calls per day to update a full portfolio update. At 100 calls per minute, your system would update these 1,000 listings in ~50 minutes.
To ensure no undue latency, we recommend using an exponential backoff strategy when encountering a 429 Too Many Requests response from our API. If your traffic increases to the point where you are receiving many 429s a day, we will discuss mitigation strategies, including an increase of the rate limit.
Note: during the initial build/testing phase, our API's default rate limit is 20 requests / minute to prevent any accidental overloading of the system. If this is an impediment to testing, please [reach out to us] (mailto:tech-support@usewheelhouse.com) with any questions and we can adjust accordingly.
We do support webhook callbacks to alert API users e.g. when a listing's price recommndations have been updated or when
a front end user requested a calendar refresh for a listing for which they have granted access to an API customer. Each
web hook will provide the event name (as event), a boolean flag user_initiated that indicates if the webhook was
initiated by a user action or through automatic routines, the external_user_id of the user the listing belongs to, and
additional parameters in the body of the callback.
We currently support these web hooks:
listing_id)listing_id)listing_id, posting_enabled)For example, the payload of a call to notify about updated recommendations could look like this:
{ "event": "listing_recommendations_updated", "listing_id": "abc_1234", "user_initiated": false, "external_user_id": "user_007" }
Web hooks can use separate URLs for the individual events as well as separate URLs for test and production environments. Please reach out to us directly to inquire about the setup of this feature.
Registering each end user is a requirement of using our API. It allows us to isolate billing information and may enable future APIs or integrations.
Once registered, each user will receive a specific API key that must be included in requests for that user's listings.
Additionally, if you have a customer who already has a Wheelhouse account with linked listings, the user can grant you API access to their listings by generating a User API Key here: https://app.usewheelhouse.com/u/account/api_token. Once they have created this key, they give it to you and you can use it in the X-User-API-Key header to retrieve and update their listings and pull price recommendations.
Important: A user's id (external_user_id in the User payload) MUST be unique across environments. In systems where uniqueness cannot be guaranteed, we recommend prepending the id with the environment. For example, an integrator may be using the primary key in their User database table as the external_user_id. If they had separate databases per environment, it would be possible for these ids to collide. Instead, the integrator could send an external_user_id of the format test-{user_primary_key} and prod-{user_primary_key}.
A user
| first_name required | string The user's first name. |
| last_name required | string The user's last name. |
| email required | string The email contact for this user. This is a unique identifier across the system. |
| integrators_user_id required | string The unique id used to identify this user within the integration partner. This MUST be unique across environments. |
| phone | string The phone number for this user. |
| integrators_affiliate_name | string The name of the affiliate if the end user is through an affiliate. |
| integrators_affiliate_user_id | string The unique id used to identify this user within the integration partner. |
| password | string (Recommended) Password for accessing Wheelhouse website. If not specified, user will not have access to Wheelhouse website. |
| allow_marketing_emails | boolean Default: false Whether we are allowed to send marketing emails to the customer. |
| company | string Company affiliation of the user. |
| portfolio_size | string Enum: "0-9" "10-49" "50-99" "100+" Number of listings the user operates. |
{- "first_name": "string",
- "last_name": "string",
- "email": "string",
- "integrators_user_id": "string",
- "phone": "string",
- "integrators_affiliate_name": "string",
- "integrators_affiliate_user_id": "string",
- "password": "string",
- "allow_marketing_emails": false,
- "company": "string",
- "portfolio_size": "0-9"
}{- "first_name": "string",
- "last_name": "string",
- "email": "string",
- "user_api_key": "string"
}User info
| integrators_user_id required | string The unique id used to identify this user within the integration partner. This MUST be unique across environments. |
{- "integrators_user_id": "string"
}Listing information drives the baseline of our price recommendations. The more detail you can provide, the better our recommendations will be.
Important: A listing id (id in the PUT Listing payload) MUST be unique across environments and users. In systems where uniqueness cannot be guaranteed, we recommend prepending the id with the environment and user id, if necessary. For example, an integrator may be using the primary key in their Listing database table as the listing's id. If they had separate databases per environment, it would be possible for these ids to collide. Instead, the integrator could send an id of the format test-{listing_primary_key} and prod-{listing_primary_key}.
Another example would would be if an integrator re-used listing ids between different users. In this case, the integrator could send an id of the format {external_user_id}-{listing_primary_key} to guarantee uniqueness.
| offset | integer The number of items to skip before starting to collect the result set. (Optional) |
| page | integer The page of listings to retrieve. (Optional) |
| per_page | integer Number of listings per page. Default is 50. (Optional) |
| exclude_inactive | boolean Default: false Exclude inactive listings from response. Default is false for backwards compatibility. (Optional) |
[- {
- "id": "string",
- "wheelhouse_id": 0,
- "market_id": 0,
- "title": "string",
- "location": {
- "country": "st",
- "postal_code": "string",
- "address": "string",
- "latitude": -90,
- "longitude": -180
}, - "num_bedrooms": 0,
- "num_beds": 0,
- "num_bathrooms": 0,
- "room_type": "shared",
- "property_type": "house",
- "currency": "string",
- "security_deposit": 0,
- "star_rating": 5,
- "num_reviews": 0,
- "num_photos": 0,
- "thumb_url": "string",
- "amenities": [
- "24_hour_check_in"
], - "listing_preferences": {
- "num_included_guests": 0,
- "num_max_guests": 0,
- "fees": [
- {
- "name": "string",
- "type": "cleaning",
- "multiplier": "PER_STAY",
- "value_type": "FIXED",
- "value": 0,
- "quantity": 0
}
], - "automatic_rate_posting_enabled": true,
- "weekly_discount_pct": 0,
- "monthly_discount_pct": 0,
- "base_price": 0,
- "min_price": 0,
- "max_price": 0,
- "minimum_stay": 0,
- "nickname": "string"
}, - "channel_ids": {
- "airbnb": "string",
- "tripadvisor": "string",
- "vrbo": "string"
}, - "description": "string",
- "nickname": "string",
- "base_min_night_stay": 0,
- "owner_name": "string",
- "is_active": true,
- "source_user_id": "string",
- "meta": {
- "amenities": [
- "24_hour_check_in"
], - "num_beds": 0,
- "num_reviews": 0,
- "num_photos": 0,
- "photos": [
- {
- "caption": "string",
- "regular": "string",
- "thumbnail": "string"
}
], - "security_deposit": 0,
- "source_user_id": "string",
- "thumb_url": "string"
}, - "channel": "string",
- "links": {
- "calendar": "string",
- "upgrade": "string"
}, - "wheelhouse_created_at": "2019-08-24T14:15:22Z"
}
]A listing
| id required | string The integration partner's unique listing identifier. This MUST be unique across environments and users. |
| wheelhouse_id | integer Wheelhouse's unique listing indentifier. |
| market_id | integer Wheelhouse market identifier for the listing's geographic market. Omitted if the listing is not in a market. |
| title | string (Recommended) The listing's name to show in the UI. |
required | object or object or object (location) Attributes describing a location with enough accuracy to identify a postal code. Prefer more precision. |
| num_bedrooms required | integer >= 0 The number of bedrooms included in the unit. Whole numbers only. |
| num_beds | integer >= 0 The number of actual beds within the listing |
| num_bathrooms required | number >= 0 The number of bathrooms included in the unit, e.g. 1 or 1.5. |
| room_type required | string Enum: "shared" "private" "apartment" "entire_place" "hotel_room" Description of the type of room offered. One of |
| property_type | string Enum: "house" "cabin" "bnb" "boat" "bus" "camping" "camper" "castle" "hostel" "hotel" "houseboat" "island" "tower" "mill" (Recommended) Description of the property this rental is in. |
| currency required | string The ISO-4217 currency code this listing uses for pricing. |
| security_deposit required | number >= 0 An extra charge held against damage to the unit at booking. In the currency of the listing. |
| star_rating required | number [ 0 .. 5 ] The average review rating of the listing. 0 is the lowest possible rating, 5 is the highest possible rating. |
| num_reviews required | integer >= 0 The number of reviews on the listing. |
| num_photos required | integer >= 0 The number of photos on the listing. |
| thumb_url | string (Recommended) URL of thumbnail image for listing. Default to first photos thumbnail if not specified. |
| amenities required | Array of strings Items Enum: "24_hour_check_in" "air_conditioning" "baby_bath" "baby_monitor" "babysitter_recommendations" "balcony" "bathroom_essentials" "bathtub" "bbq" "beach_essentials" "beachfront" "bed_linens" "bedroom_comforts" "bicycles" "breakfast" "building_staff" "cable_or_satellite_tv" "carbon_monoxide_detector" "ceiling_fans" "changing_table" "childrens_books_and_toys" "childrens_dinnerware" "cleaning_before_checkout" "coffee_maker" "cooking_basics" "deck" "dishes_and_silverware" "dishwasher" "dog_friendly" "dryer" "elderly_accessible" "elevator" "essentials" "ev_charger" "extra_pillows_and_blankets" "family_kid_friendly" "fire_extinguisher" "fireplace" "fireplace_guards" "first_aid_kit" "freezer" "fresh_linens" "fridge" "game_console" "garage" "gym" "hair_dryer" "hangers" "heating" "high_chair" "host_greets_you" "hot_tub" "hot_water" "internet" "iron" "jacuzzi" "kettle" "keypad" "kitchen" "lake_access" "laptop_friendly_workspace" "lock_on_bedroom_door" "lockbox" "long_term_stays_allowed" "luggage_dropoff" "microwave" "outlet_covers" "oven" "parking" "parking_free_on_premises" "parking_free_street" "parking_paid" "parking_paid_on_premises" "patio" "pets_allowed" "pool" "pool_cover" "pool_toys" "private_entrance" "private_living_room" "private_yard" "refrigerator" "room_darkening_shades" "sauna" "self_check_in" "shampoo" "shared_pool" "single_level_home" "ski_in_out" "smart_lock" "smoke_detector" "smoking_allowed" "step_free_access" "stereo" "stove" "streaming" "suitable_for_events" "table_corner_guards" "towel" "travel_crib" "tv" "washing_machine" "water_views" "waterfront" "window_guards" A list of amenities available at this listing. |
required | object The listing's pricing preferences and fee configuration (subset used on listing create/update). |
object (channel_ids) A mapping of supported channel names to the channel's listing id. We use these to dedupe listings and it improves our demand modeling. For unit type inventory, this can be a comma-separated list to denote all individual units on the channel. Note that this is not used to create channel-specific pricing. | |
| description | string The listing's description text. |
| nickname | string Listing nickname used as a shortened title. |
| base_min_night_stay | integer >= 0 This informs Wheelhouse of the length of the shortest stay this listing accepts. |
| owner_name | string The listing owner's name to show in the UI. |
| is_active | boolean Whether the listing is active and valid on the integration channel. |
| source_user_id | string The user id of the user on the integration channel. |
object (meta) Deprecated Container for additional non-required attributes that will help price this listing. See new top-level attributes that are recommended to provide this data. | |
Array of objects A list of photos of the listing. | |
| unit_names | string Used for hotel room or "unit type" inventory. This should be a comma delimited list of unit names available under this listing. If omitted, we assume there is only 1 unit. This enables scarcity pricing. |
| created_at | string <date-time> The datetime the listing was created on your platform (ISO-8601). |
| show_market_coverage | boolean When true, the response will include an |
{- "id": "string",
- "wheelhouse_id": 0,
- "market_id": 0,
- "title": "string",
- "location": {
- "country": "st",
- "postal_code": "string",
- "address": "string",
- "latitude": -90,
- "longitude": -180
}, - "num_bedrooms": 0,
- "num_beds": 0,
- "num_bathrooms": 0,
- "room_type": "shared",
- "property_type": "house",
- "currency": "string",
- "security_deposit": 0,
- "star_rating": 5,
- "num_reviews": 0,
- "num_photos": 0,
- "thumb_url": "string",
- "amenities": [
- "24_hour_check_in"
], - "listing_preferences": {
- "num_included_guests": 0,
- "num_max_guests": 0,
- "fees": [
- {
- "name": "string",
- "type": "cleaning",
- "multiplier": "PER_STAY",
- "value_type": "FIXED",
- "value": 0,
- "quantity": 0
}
], - "automatic_rate_posting_enabled": true,
- "weekly_discount_pct": 0,
- "monthly_discount_pct": 0,
- "base_price": 0,
- "min_price": 0,
- "max_price": 0,
- "minimum_stay": 0,
- "nickname": "string"
}, - "channel_ids": {
- "airbnb": "string",
- "tripadvisor": "string",
- "vrbo": "string"
}, - "description": "string",
- "nickname": "string",
- "base_min_night_stay": 0,
- "owner_name": "string",
- "is_active": true,
- "source_user_id": "string",
- "meta": {
- "amenities": [
- "24_hour_check_in"
], - "num_beds": 0,
- "num_reviews": 0,
- "num_photos": 0,
- "photos": [
- {
- "caption": "string",
- "regular": "string",
- "thumbnail": "string"
}
], - "security_deposit": 0,
- "source_user_id": "string",
- "thumb_url": "string"
}, - "photos": [
- {
- "caption": "string",
- "regular": "string",
- "thumbnail": "string"
}
], - "unit_names": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "show_market_coverage": true
}{- "id": "string",
- "wheelhouse_id": 0,
- "market_id": 0,
- "title": "string",
- "location": {
- "country": "st",
- "postal_code": "string",
- "address": "string",
- "latitude": -90,
- "longitude": -180
}, - "num_bedrooms": 0,
- "num_beds": 0,
- "num_bathrooms": 0,
- "room_type": "shared",
- "property_type": "house",
- "currency": "string",
- "security_deposit": 0,
- "star_rating": 5,
- "num_reviews": 0,
- "num_photos": 0,
- "thumb_url": "string",
- "amenities": [
- "24_hour_check_in"
], - "listing_preferences": {
- "num_included_guests": 0,
- "num_max_guests": 0,
- "fees": [
- {
- "name": "string",
- "type": "cleaning",
- "multiplier": "PER_STAY",
- "value_type": "FIXED",
- "value": 0,
- "quantity": 0
}
], - "automatic_rate_posting_enabled": true,
- "weekly_discount_pct": 0,
- "monthly_discount_pct": 0,
- "base_price": 0,
- "min_price": 0,
- "max_price": 0,
- "minimum_stay": 0,
- "nickname": "string"
}, - "channel_ids": {
- "airbnb": "string",
- "tripadvisor": "string",
- "vrbo": "string"
}, - "description": "string",
- "nickname": "string",
- "base_min_night_stay": 0,
- "owner_name": "string",
- "is_active": true,
- "source_user_id": "string",
- "meta": {
- "amenities": [
- "24_hour_check_in"
], - "num_beds": 0,
- "num_reviews": 0,
- "num_photos": 0,
- "photos": [
- {
- "caption": "string",
- "regular": "string",
- "thumbnail": "string"
}
], - "security_deposit": 0,
- "source_user_id": "string",
- "thumb_url": "string"
}, - "channel": "string",
- "links": {
- "calendar": "string",
- "upgrade": "string"
}, - "wheelhouse_created_at": "2019-08-24T14:15:22Z",
- "in_market": true
}| id required | string The integration partner's unique listing identifier. |
| channel | string Channel name of the listing. Can be omitted if you request a listing you created, but required if you request a listing from another channel. See return value of the /listings endpoint. |
{- "id": "string",
- "wheelhouse_id": 0,
- "market_id": 0,
- "title": "string",
- "location": {
- "country": "st",
- "postal_code": "string",
- "address": "string",
- "latitude": -90,
- "longitude": -180
}, - "num_bedrooms": 0,
- "num_beds": 0,
- "num_bathrooms": 0,
- "room_type": "shared",
- "property_type": "house",
- "currency": "string",
- "security_deposit": 0,
- "star_rating": 5,
- "num_reviews": 0,
- "num_photos": 0,
- "thumb_url": "string",
- "amenities": [
- "24_hour_check_in"
], - "listing_preferences": {
- "num_included_guests": 0,
- "num_max_guests": 0,
- "fees": [
- {
- "name": "string",
- "type": "cleaning",
- "multiplier": "PER_STAY",
- "value_type": "FIXED",
- "value": 0,
- "quantity": 0
}
], - "automatic_rate_posting_enabled": true,
- "weekly_discount_pct": 0,
- "monthly_discount_pct": 0,
- "base_price": 0,
- "min_price": 0,
- "max_price": 0,
- "minimum_stay": 0,
- "nickname": "string"
}, - "channel_ids": {
- "airbnb": "string",
- "tripadvisor": "string",
- "vrbo": "string"
}, - "description": "string",
- "nickname": "string",
- "base_min_night_stay": 0,
- "owner_name": "string",
- "is_active": true,
- "source_user_id": "string",
- "meta": {
- "amenities": [
- "24_hour_check_in"
], - "num_beds": 0,
- "num_reviews": 0,
- "num_photos": 0,
- "photos": [
- {
- "caption": "string",
- "regular": "string",
- "thumbnail": "string"
}
], - "security_deposit": 0,
- "source_user_id": "string",
- "thumb_url": "string"
}, - "channel": "string",
- "links": {
- "calendar": "string",
- "upgrade": "string"
}, - "wheelhouse_created_at": "2019-08-24T14:15:22Z"
}| id required | string The integration partner's unique listing identifier. |
| channel | string Channel name of the listing. Can be omitted if you request a listing you created, but required if you request a listing from another channel. See return value of the /listings endpoint. |
{- "name": "Free",
- "horizon": 0
}Note that this endpoint is experimental and might change in the future!
| id required | string The integration partner's unique listing identifier. |
| channel | string Channel name of the listing. Can be omitted if you request a listing you created, but required if you request a listing from another channel. See return value of the /listings endpoint. |
{- "settings": "2019-08-24T14:15:22Z",
- "rates": "2019-08-24T14:15:22Z"
}Determine whether a given location is in an active Wheelhouse market.
| country required | string = 2 characters The ISO-3166 2 letter country code. |
| postal_code required | string A regional postal code for within the given country. |
| latitude required | number [ -90 .. 90 ] The latitude coordinate of this location. |
| longitude required | number [ -180 .. 180 ] The longitude coordinate of this location. |
{- "in_market": true,
- "market_name": "string"
}Creates multiple custom rates for a listing. See description of setCustomRate for details.
| listing_id required | string The integration partner's unique listing identifier. |
An object representing the custom rate to be set.
required | Array of objects (custom_rate) |
{- "custom_rates": [
- {
- "start_date": "2019-08-24",
- "end_date": "2019-08-24",
- "rate_type": "fixed",
- "adjustment": 1,
- "currency": "str",
- "monday": 1,
- "tuesday": 1,
- "wednesday": 1,
- "thursday": 1,
- "friday": 1,
- "saturday": 1,
- "sunday": 1,
- "weekend_price": 0,
- "weekday_price": 0
}
]
}{- "updated_custom_rates": [
- {
- "start_date": "2019-08-24",
- "end_date": "2019-08-24",
- "rate_type": "fixed",
- "adjustment": 1,
- "currency": "str",
- "monday": 1,
- "tuesday": 1,
- "wednesday": 1,
- "thursday": 1,
- "friday": 1,
- "saturday": 1,
- "sunday": 1,
- "weekend_price": 0,
- "weekday_price": 0
}
]
}This endpoint allows for multiple date ranges to have their custom rates removed, reverting back to recommended prices for those dates. Note that start_date and end_date of each range are inclusive, and custom rates will be removed on those dates as well.
| listing_id required | string The integration partner's unique listing identifier. |
An object representing the set of ranges for which to delete custom rates.
required | Array of objects |
{- "delete_ranges": [
- {
- "start_date": "2019-08-24",
- "end_date": "2019-08-24"
}
]
}{- "errors": [
- {
- "start_date": "2019-08-24",
- "end_date": "2019-08-24",
- "http_code": 0,
- "message": "string"
}
]
}Defines a custom rate (an override of recommended pricing) for a date range. A rate_type of fixed
defines a fixed rate in the specified currency. A rate_type of adjustment defines a percentage-based adjustment to the recommended price.
Fixed Rate Example:
Specifying the currency as "USD", a day of week value of 500 for sunday, 750 for friday
and 625 for saturday will set the rates for those days during the specified date range to
$500, $750 and $625, respectively.
Adjustment Rate Example:
An adjustment value of 115 would mean a 15% increase in price, while a value of 75 would
indicate a decrease of 25% from the recommended price. In cases where both an adjustment and
day of week values are given, the adjustment will act as the default value for the non-specified
days of week. So setting an adjustment of 115 and specifying 125 for sunday, 145 for friday
and 135 for saturday would results in a 25% increase for Sunday, a 15% increase for Monday-Thursday,
a 45% increase for Friday and a 35% increase for Saturday.
| listing_id required | string The integration partner's unique listing identifier. |
An object representing the custom rate to be set.
| start_date required | string <date> The inclusive start of the stay-date range affected by the custom rate (YYYY-MM-DD). |
| end_date required | string <date> The inclusive end of the stay-date range affected by the custom rate (YYYY-MM-DD). |
| rate_type required | string Enum: "fixed" "adjustment" Whether the custom rate is percentage-based or a fixed override. |
| adjustment | number >= 1 The percentage by which the price should be adjusted. For example 100 means 100% of the recommended price, i.e. no adjustment. 90 means 90% and thus reduces the recommended price by 10%. Vice versa 110 means 110% and thus increases the recommended price by 10%. This is required if the rate_type is |
| currency | string = 3 characters The ISO-4217 3-letter currency code of the price. Required if rate_type is |
| monday | number >= 1 The price applied for all Mondays in the given date range. |
| tuesday | number >= 1 The price applied for all Tuesdays in the given date range. |
| wednesday | number >= 1 The price applied for all Wednesdays in the given date range. |
| thursday | number >= 1 The price applied for all Thursdays in the given date range. |
| friday | number >= 1 The price applied for all Fridays in the given date range. |
| saturday | number >= 1 The price applied for all Saturdays in the given date range. |
| sunday | number >= 1 The price applied for all Sundays in the given date range. |
| weekend_price | number >= 0 Deprecated The price applied for nights on the weekend (Fri, Sat). |
| weekday_price | number >= 0 Deprecated The price applied for nights during the week (Sun-Thu). |
{- "start_date": "2024-08-05",
- "end_date": "2024-09-05",
- "rate_type": "fixed",
- "currency": "USD",
- "sunday": 500,
- "friday": 750,
- "saturday": 625
}{- "start_date": "2024-08-05",
- "end_date": "2024-09-05",
- "rate_type": "fixed",
- "currency": "USD",
- "sunday": 500,
- "friday": 750,
- "saturday": 625
}Remove all custom rates from Wheelhouse for the affected stay dates. Any partially covered custom rates will be adequately shortened and the affected date range will be set to the recommended price again. These will then reflect both in the Wheelhouse UI and in the prices returned from the recommendations endpoint.
| listing_id required | string The integration partner's unique listing identifier. |
| start_date required | string <date> The inclusive start of the stay-date range where any custom rate is removed (YYYY-MM-DD). |
| end_date required | string <date> The inclusive end of the stay-date range where any custom rate is removed (YYYY-MM-DD). |
Reservations drive price anchoring and occupancy statistics for your properties. They are instrumental to our ability to make price recommendations.
The reservations create/update endpoint is called at least once per listing during the initial setup of a user's account to create historical reservations. Integrators MUST send us 1 year of historical reservations. Integrators SHOULD send us 2 years of historical reservations on setup.
Once the listing is setup and active, this endpoint MUST be called with reservation calendar changes. This MAY happen in real time or be batched, but Wheelhouse MUST be notified of changes on the same day they occur.
The more detail included in the reservation object, the more accurate our recommendations will be.
This endpoint accepts a list of reservation objects and returns a list of processed reservation IDs.
The unchanged response field additionaly indicates reservations that were already present and
required no update.
If Wheelhouse errors or otherwise fails to return the reservation IDs that were created or updated, integrators MUST resend them after some period of time. DO NOT repeatedly call this endpoint if it is failing.
| id required | string The integration partner's unique listing identifier. |
reservations
Array of reservation (object) or reservation (object) (reservation) |
{- "reservations": [
- {
- "id": "string",
- "start_date": "2019-08-24",
- "end_date": "2019-08-24",
- "booked_at": "2019-08-24T14:15:22Z",
- "num_guests": 0,
- "num_included_guests": 0,
- "num_adults": 0,
- "num_children": 0,
- "currency": "string",
- "total_price": 0,
- "payout_total": 0,
- "nightly_subtotal": 0,
- "nightly_prices": [
- {
- "price": 0,
- "date": "string"
}
], - "taxes": [
- {
- "name": "string",
- "type": "cleaning",
- "multiplier": "PER_STAY",
- "value_type": "FIXED",
- "value": 0,
- "quantity": 0
}
], - "fees": [
- {
- "name": "string",
- "type": "cleaning",
- "multiplier": "PER_STAY",
- "value_type": "FIXED",
- "value": 0,
- "quantity": 0
}
], - "deposits": [
- {
- "name": "string",
- "type": "cleaning",
- "multiplier": "PER_STAY",
- "value_type": "FIXED",
- "value": 0,
- "quantity": 0
}
], - "discounts": [
- {
- "name": "string",
- "type": "cleaning",
- "multiplier": "PER_STAY",
- "value_type": "FIXED",
- "value": 0,
- "quantity": 0
}
], - "cancelled": false,
- "cancelled_total": 0,
- "unit_name": "string",
- "source_name": "string",
- "confirmation_code": "string"
}
]
}{- "error_messages": [
- "string"
], - "api_warnings": [
- "string"
], - "data": [
- "string"
], - "unchanged": [
- "string"
], - "failed": {
- "property1": {
- "reservation_id": "string",
- "error_messages": [
- "string"
]
}, - "property2": {
- "reservation_id": "string",
- "error_messages": [
- "string"
]
}
}
}Experimental - the interface might change in the future! This endpoint lists reservations of a listing.
| listing_id required | string The integration partner's unique listing identifier. |
| start_date | string <date> The start of the date range to query reservations for (YYYY-MM-DD). When |
| end_date | string <date> The end of the date range to query reservations for (YYYY-MM-DD). When |
| date_filter_type | string Default: "stay_date" Enum: "stay_date" "booked_at" Controls how |
| offset | integer The number of reservations to skip before starting to collect the result set. |
| page | integer The page of reservations to retrieve. |
| per_page | integer Default: 50 Number of reservations per page. |
[- {
- "id": "string",
- "status": "string",
- "start_date": "2019-08-24",
- "end_date": "2019-08-24",
- "booket_at": "2019-08-24T14:15:22Z",
- "num_guests": 0,
- "currency": "string",
- "total_price": 0,
- "nightly_subtotal": 0,
- "extra_guest": 0,
- "security_deposit": 0,
- "extras": 0,
- "taxes": 0,
- "confirmation_code": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "comments": "string",
- "source_name": "string"
}
]This endpoint deletes a single reservation by its id. NOTE: if a reservation is cancelled, it is best to update the reservation's cancelled flag to true with the PUT reservation endpoint. This endpoint is only intended to be used for erroneously created reservations.
| listing_id required | string The integration partner's unique listing identifier. |
| reservation_id required | string The reservation ID |
Price calendars help us keep our system up to date, understand usage, and drive some of our internal models for booking probabilities, gap night pricing, and more. They also provide us with information on which stay dates are available, and which ones are blocked as well as what asking prices are currently set relative to our recommendation.
This endpoint should be called before requesting price recommendations. If the listing calendar is changed by our recommendations, integrators MUST call this endpoint again to update our calendar.
| id required | string The integration partner's unique listing identifier. |
Array of objects (price_calendar) A calendar object describing pricing and availability by stay date. |
{- "price_calendars": [
- {
- "stay_date": "2019-08-24",
- "price": 0,
- "currency": "string",
- "is_available": true,
- "min_night_stay": 0,
- "unit_name": "string"
}
]
}{- "message": "string",
- "processed_unit_names": [
- "string"
], - "invalid_unit_names": [
- "string"
], - "valid_unit_names": [
- "string"
]
}Returns the price calendar for a single listing. Each entry represents one stay date and includes the current price, availability, and booking state.
Defaults to today through the maximum calendar horizon (1.5 years) when start_date and end_date are omitted.
| listing_id required | string The channel's unique listing identifier. |
| channel | string Channel name the listing is on. See return value of the /listings endpoint. |
| start_date | string <date> First stay date to include (YYYY-MM-DD). Defaults to today. |
| end_date | string <date> Last stay date to include (YYYY-MM-DD). Defaults to the maximum calendar horizon (1.5 years from today). |
[- {
- "stay_date": "2019-08-24",
- "price": 0,
- "currency": "string",
- "is_available": true,
- "is_booked": true,
- "block_time": "2019-08-24",
- "reservation_id": 0,
- "unit_number": 0,
- "created_at": "2019-08-24T14:15:22Z"
}
]Return daily price recommendations for this listing. The horizon of the price recommendations depends on the pricing tier this listing is in and can be queried using the pricing tier endpoint. If the listing calendar is changed by our recommendations, integrators MUST make another PUT to the price calendar to update our calendar.
| id required | string The integration partner's unique listing identifier. |
| currency | string The final currency that the prices should be in. Uses listing's currency by default. Uses 3-digit ISO form (e.g. 'USD', 'GBP'). |
| channel | string Channel name of the listing. Can be omitted if you request a listing you created, but required if you request a listing from another channel. See return value of the /listings endpoint. |
| attribution | boolean Default: false Whether or not you want to receive a detailed attribution for each day. The attribution will break a daily recommendation down into contributing prices like seasonality, local events, etc. and activate all |
| price_model | string Default: "current" Enum: "current" "opt_in" The price model version to use for the recommendations. By default you will get the currently released model. We will alert our partners when a new model is available to opt in to. |
{- "error_messages": [
- "string"
], - "api_warnings": [
- "string"
], - "data": [
- {
- "stay_date": "2019-08-24",
- "price": 0,
- "currency": "string",
- "min_stay": 0,
- "custom_type": "string",
- "attr_seasonality": 0,
- "attr_local_demand": 0,
- "attr_availability": 0,
- "attr_time": 0,
- "attr_custom_weekend": 0,
- "attr_scarcity": 0,
- "attr_occupancy_pacing": 0,
- "attr_historical_anchoring": 0,
- "attr_restriction": 0,
- "attr_user_adjustment": 0
}
], - "base_price": 0,
- "base_price_recommended": 0,
- "base_price_conservative": 0,
- "base_price_aggressive": 0,
- "global_min_stay": 0,
- "automatic_rate_posting_enabled": true
}Return recommended, conservative, and aggressive base prices, the listing's active base price, anchoring
fields (anchor_price, anchor_credibility), and a consolidated row-level breakdown in base_price_attribution
aligned with the Wheelhouse app Recommended Breakdown.
| id required | string The integration partner's unique listing identifier. |
| currency | string The final currency that the prices should be in. Uses listing's currency by default. Uses 3-digit ISO form (e.g. 'USD', 'GBP'). |
{- "base_price_recommended": 0,
- "base_price_conservative": 0,
- "base_price_aggressive": 0,
- "base_price_selected": 0,
- "anchor_credibility": 100,
- "anchor_price": 0,
- "base_price_attribution": {
- "market_baseline": 0,
- "bedrooms_bathrooms": 0,
- "room_type": 0,
- "guests": 0,
- "location": 0,
- "amenities_fees": 0,
- "occupancy": 0,
- "observed_bookings": 0
}, - "currency": "string"
}Preferences allow to adapt the Wheelhouse recommendation engine to the host specifically for each listing. Read and update detailed pricing preferences for listings, including base price, seasonality, discounts, min stay rules, min/max price rules, occupancy pacing, custom date ranges, and more.
Return daily check-in/check-out rules for this listing. The horizon of the rules depends on the pricing tier this listing is in and can be queried using the pricing tier endpoint.
| id required | string The integration partner's unique listing identifier. |
| channel | string Channel name of the listing. Can be omitted if you request a listing you created, but required if you request a listing from another channel. See return value of the /listings endpoint. |
{- "data": [
- {
- "stay_date": "2019-08-24",
- "check_in": true,
- "check_out": true
}
]
}Return daily minimum and maximum price for this listing. The horizon of the rules depends on the pricing tier this listing is in and can be queried using the pricing tier endpoint.
| id required | string The integration partner's unique listing identifier. |
| channel | string Channel name of the listing. Can be omitted if you request a listing you created, but required if you request a listing from another channel. See return value of the /listings endpoint. |
{- "data": [
- {
- "stay_date": "2019-08-24",
- "min_price": 0,
- "max_price": 0
}
]
}Return seasonality adjustment factors grouped by month for this listing at three different intensity levels: Conservative (CON), Recommended (REC), and Aggressive (AGG).
The factors represent the average seasonality multiplier for each month based on market data and can be used to understand seasonal pricing patterns.
A factor of 1.0 means no seasonal adjustment, values above 1.0 indicate higher demand periods, and values below 1.0 indicate lower demand periods.
The three levels differ in how much they amplify the seasonality signal:
| id required | string The integration partner's unique listing identifier. |
| channel | string Channel name of the listing. Can be omitted if you request a listing you created, but required if you request a listing from another channel. See return value of the /listings endpoint. |
{- "CON": {
- "1": 0.88,
- "2": 0.9,
- "3": 0.96,
- "4": 1.02,
- "5": 1.06,
- "6": 1.12,
- "7": 1.18,
- "8": 1.14,
- "9": 1.04,
- "10": 0.98,
- "11": 0.94,
- "12": 0.96
}, - "REC": {
- "1": 0.85,
- "2": 0.88,
- "3": 0.95,
- "4": 1.02,
- "5": 1.08,
- "6": 1.15,
- "7": 1.22,
- "8": 1.18,
- "9": 1.05,
- "10": 0.98,
- "11": 0.92,
- "12": 0.95
}, - "AGG": {
- "1": 0.82,
- "2": 0.86,
- "3": 0.94,
- "4": 1.02,
- "5": 1.1,
- "6": 1.18,
- "7": 1.26,
- "8": 1.22,
- "9": 1.06,
- "10": 0.98,
- "11": 0.9,
- "12": 0.94
}
}This endpoint can be used to copy the preferences from one listing to another. This is useful if you have multiple listings that are very similar and you want to copy the preferences from one listing to another, or if you are creating a listing on a new channel and want to copy the preferences from an existing listing.
This is a destructive action — it overwrites the target listing's existing preferences (and optionally custom rates when enabled).
The target listing is id in the URL. The source listing is identified in the
JSON body by copy_preferences_from.listing_id (your integration's listing ID for that
property) and optionally copy_preferences_from.channel. If you omit channel, the
channel implied by your API credentials is used; set channel when the source listing is on
a different channel. Custom rates can also be copied using the copy_custom_rates field.
| id required | string The integration partner's unique listing identifier for the target listing (the listing to copy preferences to). |
| copy_custom_rates | boolean Default: true Whether to copy custom rates from the source listing to the target listing. |
| channel | string Channel name of the target listing. Can be omitted if you request a listing you created, but required if you request a listing from another channel. See return value of the /listings endpoint. |
required | object Identifies the source listing from which to copy the preferences. |
{- "copy_custom_rates": true,
- "channel": "string",
- "copy_preferences_from": {
- "channel": "airbnb",
- "listing_id": "613557047440586411"
}
}This endpoint can be used to change basic preferences of the Wheelhouse recommendation engine. For each setting you can choose between a conservative (CON), recommended (REC), or aggressive (AGG) setting.
| id required | string The integration partner's unique listing identifier. |
| setting required | string Enum: "base_price_adjustment" "weekend_factor" "seasonality_adjustment" "last_minute_discount" "far_future_premium" The setting you want to change. |
| type required | string Enum: "CON" "REC" "AGG" Setting to be applied. |
{- "type": "CON"
}This setting informs Wheelhouse whether or not the user wishes to use the Wheelhouse recommended prices for this listing.
| id required | string The integration partner's unique listing identifier. |
| enabled required | boolean Whether or not the user wishes to use the Wheelhouse recommended prices for this listing. |
{- "enabled": true
}This endpoint can be used to fetch weekly and monthly discounts set up through Wheelhouse for a listing.
| id required | string The integration partner's unique listing identifier. |
{- "weekly_discount": 100,
- "monthly_discount": 100
}Returns a list of recent change events for the listing's pricing settings. The date range is capped at 90 days in the past and tomorrow at most.
| id required | string The integration partner's unique listing identifier. |
| start_date | string <date> Start of the date range to retrieve changes for (YYYY-MM-DD). Defaults to 30 days ago. Cannot be more than 90 days in the past. |
| end_date | string <date> End of the date range to retrieve changes for (YYYY-MM-DD). Defaults to tomorrow. |
{- "events": [
- {
- "time": "2019-08-24T14:15:22Z",
- "source": "string",
- "event": "string",
- "status": "string",
- "msg": "string"
}
]
}Returns price recommendations as if the provided preferences were applied to the listing, without saving any changes. You can use this endpoint to preview what recommendations would look like with different preference settings before applying them. The response format is identical to the GET /listings/{id}/price_recommendations endpoint, with the exception of the global_min_stay and automatic_rate_posting_enabled fields, which are not included in the preview response.
This is useful for testing different preference configurations or showing users what their pricing would look like with different settings.
| id required | string The integration partner's unique listing identifier. |
| attribution | boolean Default: false Whether or not you want to receive a detailed attribution for each day. The attribution will break a daily recommendation down into contributing prices like seasonality, local events, etc. and activate all |
An object representing the preferences to preview.
| automatic_rate_posting_enabled | boolean Whether automated price posting is enabled for this listing. |
| currency | string The ISO-4217 3-letter currency code used for prices in this listing's preferences. If not provided, the listing's currency will be used. |
| base_price | number >= 0 The manually set base price. If set, overrides Wheelhouse's data-driven recommendation. |
| base_price_adjustment | number A percentage adjustment to the Wheelhouse recommended base price. Only used if |
| monthly_discount | number Default: 0 Monthly discount percentage. This is a simplified setting for a single discount that applies to all bookings >= 28 days. Alternatively a channel can use the full daily discount rules under |
| weekly_discount | number Default: 0 Weekly discount percentage. This is a simplified setting for a single discount that applies to all bookings >= 7 days. Alternatively a channel can use the full daily discount rules under |
| nickname | string Listing nickname. Overrides the listing's default nickname. |
object Last-minute discount configuration. | |
object Far-future premium configuration. | |
object Seasonality adjustment configuration. | |
object Day-of-week pricing factor configuration. | |
object (gap_night) Gap night pricing strategy. When | |
object Weekend pricing factor; preset ( | |
Array of any (integer_calendar_rule) Default: [] Minimum stay rules. | |
| min_stays_enabled | boolean Whether minimum stay rules are enabled. |
Array of any (integer_calendar_rule) Default: [] Minimum price rules. | |
Array of any (integer_calendar_rule) Default: [] Maximum price rules. | |
object Check-in/check-out rule configuration identifier. | |
object Default: {"active":false,"weekly_rules":[],"monthly_rules":[]} Rule-based long-term discount configuration. This is a more powerful and flexible way to set discounts for bookings >= 7 days and >= 28 days. Alternatively a channel can use the simplified settings under | |
object Default: {} Occupancy pacing configuration. | |
Array of any (integer_calendar_rule) Default: [] Demand sensitivity rules. | |
Array of any (integer_calendar_rule) Default: [] Historical anchoring rules. | |
Array of objects (custom_date_range) Default: [] Custom date range overrides for pricing rules. [CDR Rules] | |
| min_min_price | number Default: 0 The absolute minimum price floor. |
| min_min_stay | integer Default: 0 The absolute minimum stay floor. |
{- "automatic_rate_posting_enabled": true,
- "currency": "string",
- "base_price": 0,
- "base_price_adjustment": 0,
- "monthly_discount": 0,
- "weekly_discount": 0,
- "nickname": "string",
- "last_minute_discount": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "far_future_premium": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "seasonality_adjustment": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "day_of_week": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "gap_night": {
- "custom": [
- {
- "adjacent": "left",
- "adjustment": 0,
- "day_of_week": [
- 6
], - "gap": 0
}
], - "type": "AGG"
}, - "weekend_factor": {
- "type": "CON",
- "custom": 0
}, - "minimum_stay_rules": [ ],
- "min_stays_enabled": true,
- "minimum_price_rules": [ ],
- "maximum_price_rules": [ ],
- "checkin_checkout": {
- "active": true,
- "auto_adjust": true,
- "check_in_rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
], - "check_out_rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "long_term_discounts": {
- "active": false,
- "weekly_rules": [ ],
- "monthly_rules": [ ]
}, - "occupancy_pacing": { },
- "demand_sensitivity_rules": [ ],
- "historical_anchoring_rules": [ ],
- "custom_date_ranges": [ ],
- "min_min_price": 0,
- "min_min_stay": 0
}{- "data": [
- {
- "stay_date": "2019-08-24",
- "price": 0,
- "currency": "string",
- "custom_type": "string",
- "attr_seasonality": 0,
- "attr_local_demand": 0,
- "attr_availability": 0,
- "attr_time": 0,
- "attr_custom_weekend": 0,
- "attr_scarcity": 0,
- "attr_occupancy_pacing": 0,
- "attr_historical_anchoring": 0,
- "attr_restriction": 0,
- "attr_user_adjustment": 0
}
], - "base_price": 0,
- "base_price_recommended": 0,
- "base_price_conservative": 0,
- "base_price_aggressive": 0
}Returns full preference objects for each listing. Query listing_ids must be
integration listing ids (same identifiers used in listing payloads).
| listing_ids | Array of strings Array of integration listing IDs to retrieve preferences for. |
[- {
- "listing_id": 0,
- "partner_listing_id": "string",
- "currency": "string",
- "automatic_rate_posting_enabled": true,
- "base_price": 0,
- "base_price_adjustment": 0,
- "monthly_discount": 0,
- "weekly_discount": 0,
- "nickname": "string",
- "last_minute_discount": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "far_future_premium": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "seasonality_adjustment": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "day_of_week": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "gap_night": {
- "custom": [
- {
- "adjacent": "left",
- "adjustment": 0,
- "day_of_week": [
- 6
], - "gap": 0
}
], - "type": "AGG"
}, - "minimum_stay_rules": [ ],
- "min_stays_enabled": true,
- "minimum_price_rules": [ ],
- "maximum_price_rules": [ ],
- "checkin_checkout": {
- "active": true,
- "auto_adjust": true,
- "check_in_rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
], - "check_out_rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "long_term_discounts": {
- "active": false,
- "weekly_rules": [ ],
- "monthly_rules": [ ]
}, - "occupancy_pacing": { },
- "demand_sensitivity_rules": [ ],
- "historical_anchoring_rules": [ ],
- "custom_date_ranges": [ ],
- "min_min_price": 0,
- "min_min_stay": 0,
- "update_from": "string",
- "update_from_id": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]JSON object with a listing preferences array. Each element must include listing_id (integration listing /
property id) and may include any fields for preferences to update.
required | Array of objects |
{- "listing_preferences": [
- {
- "listing_id": "string",
- "automatic_rate_posting_enabled": true,
- "currency": "string",
- "base_price": 0,
- "base_price_adjustment": 0,
- "monthly_discount": 0,
- "weekly_discount": 0,
- "nickname": "string",
- "last_minute_discount": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "far_future_premium": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "seasonality_adjustment": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "day_of_week": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "gap_night": {
- "custom": [
- {
- "adjacent": "left",
- "adjustment": 0,
- "day_of_week": [
- 6
], - "gap": 0
}
], - "type": "AGG"
}, - "weekend_factor": {
- "type": "CON",
- "custom": 0
}, - "minimum_stay_rules": [ ],
- "min_stays_enabled": true,
- "minimum_price_rules": [ ],
- "maximum_price_rules": [ ],
- "checkin_checkout": {
- "active": true,
- "auto_adjust": true,
- "check_in_rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
], - "check_out_rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "long_term_discounts": {
- "active": false,
- "weekly_rules": [ ],
- "monthly_rules": [ ]
}, - "occupancy_pacing": { },
- "demand_sensitivity_rules": [ ],
- "historical_anchoring_rules": [ ],
- "custom_date_ranges": [ ],
- "min_min_price": 0,
- "min_min_stay": 0
}
]
}{- "updated_preferences": [
- {
- "listing_id": 0,
- "partner_listing_id": "string",
- "currency": "string",
- "automatic_rate_posting_enabled": true,
- "base_price": 0,
- "base_price_adjustment": 0,
- "monthly_discount": 0,
- "weekly_discount": 0,
- "nickname": "string",
- "last_minute_discount": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "far_future_premium": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "seasonality_adjustment": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "day_of_week": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "gap_night": {
- "custom": [
- {
- "adjacent": "left",
- "adjustment": 0,
- "day_of_week": [
- 6
], - "gap": 0
}
], - "type": "AGG"
}, - "minimum_stay_rules": [ ],
- "min_stays_enabled": true,
- "minimum_price_rules": [ ],
- "maximum_price_rules": [ ],
- "checkin_checkout": {
- "active": true,
- "auto_adjust": true,
- "check_in_rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
], - "check_out_rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "long_term_discounts": {
- "active": false,
- "weekly_rules": [ ],
- "monthly_rules": [ ]
}, - "occupancy_pacing": { },
- "demand_sensitivity_rules": [ ],
- "historical_anchoring_rules": [ ],
- "custom_date_ranges": [ ],
- "min_min_price": 0,
- "min_min_stay": 0,
- "update_from": "string",
- "update_from_id": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]
}| id required | string The integration partner's unique listing identifier. |
{- "listing_id": 0,
- "partner_listing_id": "string",
- "currency": "string",
- "automatic_rate_posting_enabled": true,
- "base_price": 0,
- "base_price_adjustment": 0,
- "monthly_discount": 0,
- "weekly_discount": 0,
- "nickname": "string",
- "last_minute_discount": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "far_future_premium": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "seasonality_adjustment": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "day_of_week": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "gap_night": {
- "custom": [
- {
- "adjacent": "left",
- "adjustment": 0,
- "day_of_week": [
- 6
], - "gap": 0
}
], - "type": "AGG"
}, - "minimum_stay_rules": [ ],
- "min_stays_enabled": true,
- "minimum_price_rules": [ ],
- "maximum_price_rules": [ ],
- "checkin_checkout": {
- "active": true,
- "auto_adjust": true,
- "check_in_rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
], - "check_out_rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "long_term_discounts": {
- "active": false,
- "weekly_rules": [ ],
- "monthly_rules": [ ]
}, - "occupancy_pacing": { },
- "demand_sensitivity_rules": [ ],
- "historical_anchoring_rules": [ ],
- "custom_date_ranges": [ ],
- "min_min_price": 0,
- "min_min_stay": 0,
- "update_from": "string",
- "update_from_id": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Note that this endpoint is experimental and might change in the future! This endpoint can
be used to change custom preferences of the Wheelhouse recommendation engine.
All fields in the body are optional; only provided fields are updated.
| id required | string The integration partner's unique listing identifier. |
Preference fields to update.
| automatic_rate_posting_enabled | boolean Whether automated price posting is enabled for this listing. |
| currency | string The ISO-4217 3-letter currency code used for prices in this listing's preferences. If not provided, the listing's currency will be used. |
| base_price | number >= 0 The manually set base price. If set, overrides Wheelhouse's data-driven recommendation. |
| base_price_adjustment | number A percentage adjustment to the Wheelhouse recommended base price. Only used if |
| monthly_discount | number Default: 0 Monthly discount percentage. This is a simplified setting for a single discount that applies to all bookings >= 28 days. Alternatively a channel can use the full daily discount rules under |
| weekly_discount | number Default: 0 Weekly discount percentage. This is a simplified setting for a single discount that applies to all bookings >= 7 days. Alternatively a channel can use the full daily discount rules under |
| nickname | string Listing nickname. Overrides the listing's default nickname. |
object Last-minute discount configuration. | |
object Far-future premium configuration. | |
object Seasonality adjustment configuration. | |
object Day-of-week pricing factor configuration. | |
object (gap_night) Gap night pricing strategy. When | |
object Weekend pricing factor; preset ( | |
Array of any (integer_calendar_rule) Default: [] Minimum stay rules. | |
| min_stays_enabled | boolean Whether minimum stay rules are enabled. |
Array of any (integer_calendar_rule) Default: [] Minimum price rules. | |
Array of any (integer_calendar_rule) Default: [] Maximum price rules. | |
object Check-in/check-out rule configuration identifier. | |
object Default: {"active":false,"weekly_rules":[],"monthly_rules":[]} Rule-based long-term discount configuration. This is a more powerful and flexible way to set discounts for bookings >= 7 days and >= 28 days. Alternatively a channel can use the simplified settings under | |
object Default: {} Occupancy pacing configuration. | |
Array of any (integer_calendar_rule) Default: [] Demand sensitivity rules. | |
Array of any (integer_calendar_rule) Default: [] Historical anchoring rules. | |
Array of objects (custom_date_range) Default: [] Custom date range overrides for pricing rules. [CDR Rules] | |
| min_min_price | number Default: 0 The absolute minimum price floor. |
| min_min_stay | integer Default: 0 The absolute minimum stay floor. |
{- "automatic_rate_posting_enabled": true,
- "currency": "string",
- "base_price": 0,
- "base_price_adjustment": 0,
- "monthly_discount": 0,
- "weekly_discount": 0,
- "nickname": "string",
- "last_minute_discount": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "far_future_premium": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "seasonality_adjustment": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "day_of_week": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "gap_night": {
- "custom": [
- {
- "adjacent": "left",
- "adjustment": 0,
- "day_of_week": [
- 6
], - "gap": 0
}
], - "type": "AGG"
}, - "weekend_factor": {
- "type": "CON",
- "custom": 0
}, - "minimum_stay_rules": [ ],
- "min_stays_enabled": true,
- "minimum_price_rules": [ ],
- "maximum_price_rules": [ ],
- "checkin_checkout": {
- "active": true,
- "auto_adjust": true,
- "check_in_rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
], - "check_out_rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "long_term_discounts": {
- "active": false,
- "weekly_rules": [ ],
- "monthly_rules": [ ]
}, - "occupancy_pacing": { },
- "demand_sensitivity_rules": [ ],
- "historical_anchoring_rules": [ ],
- "custom_date_ranges": [ ],
- "min_min_price": 0,
- "min_min_stay": 0
}{- "listing_id": 0,
- "partner_listing_id": "string",
- "currency": "string",
- "automatic_rate_posting_enabled": true,
- "base_price": 0,
- "base_price_adjustment": 0,
- "monthly_discount": 0,
- "weekly_discount": 0,
- "nickname": "string",
- "last_minute_discount": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "far_future_premium": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "seasonality_adjustment": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "day_of_week": {
- "type": "CON",
- "rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "gap_night": {
- "custom": [
- {
- "adjacent": "left",
- "adjustment": 0,
- "day_of_week": [
- 6
], - "gap": 0
}
], - "type": "AGG"
}, - "minimum_stay_rules": [ ],
- "min_stays_enabled": true,
- "minimum_price_rules": [ ],
- "maximum_price_rules": [ ],
- "checkin_checkout": {
- "active": true,
- "auto_adjust": true,
- "check_in_rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
], - "check_out_rules": [
- {
- "type": "adjacency",
- "adjustment": 0,
- "day_of_week_adjustment": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "days_adjacent": 0,
- "priority": 0,
- "day_of_week_values": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
], - "value": 0
}
]
}, - "long_term_discounts": {
- "active": false,
- "weekly_rules": [ ],
- "monthly_rules": [ ]
}, - "occupancy_pacing": { },
- "demand_sensitivity_rules": [ ],
- "historical_anchoring_rules": [ ],
- "custom_date_ranges": [ ],
- "min_min_price": 0,
- "min_min_stay": 0,
- "update_from": "string",
- "update_from_id": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Tags allow to easily filter and group listings by additional attributes that are not in the standard listing attributes. User-defined and imported tags are accessible via this endpoint. System-managed tags (flags) are exposed separately via the Listing Flags endpoints.
This allows to add new tags or completely overwrite all tags for this listing.
| names required | Array of strings List of tag names to be added or updated. |
| overwrite | boolean Default: false Whether to overwrite all existing tags and thus delete all tags that are not in the list. |
{- "names": [
- "string"
], - "overwrite": false
}[- {
- "name": "string",
- "description": "string"
}
]Flags are system-managed tags that Wheelhouse sets automatically on listings to convey internal state or signals. Unlike user-defined tags, flags are read-only and cannot be modified via the API.
Returns all system-managed flags for this listing. Flags are set automatically by Wheelhouse and are read-only. They convey internal state or signals about the listing.
| id required | string The listing identifier. |
[- {
- "name": "string",
- "description": "string"
}
]Portfolio segments allow users to group listings by filter criteria. Use these endpoints to list a user's segments and to retrieve the listings that belong to a given segment. Segments are defined in the Wheelhouse UI; the API exposes read-only access. Authentication requires an Integration or RM API key plus a User API key (or RM key providing both).
Returns all portfolio segments for the authenticated user. Segments are used in the Wheelhouse UI to group listings by filter criteria; this endpoint provides read-only access to the segment list.
[- {
- "id": 0,
- "name": "string",
- "description": "string",
- "filter": { },
- "is_default": true,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]Returns the listings that belong to the given portfolio segment. The segment's filter criteria are applied to the user's listings. Supports pagination and optional exclusion of inactive listings.
| segment_id required | integer The segment identifier (returned by GET /segments). |
| exclude_inactive | boolean Default: true Exclude inactive listings from response. (Optional) |
| page | integer Page number for pagination. (Optional) |
| per_page | integer Number of listings per page (default 50, max 100). (Optional) |
| offset | integer Number of items to skip. (Optional) |
[- {
- "id": "string",
- "wheelhouse_id": 0,
- "market_id": 0,
- "title": "string",
- "location": {
- "country": "st",
- "postal_code": "string",
- "address": "string",
- "latitude": -90,
- "longitude": -180
}, - "num_bedrooms": 0,
- "num_beds": 0,
- "num_bathrooms": 0,
- "room_type": "shared",
- "property_type": "house",
- "currency": "string",
- "security_deposit": 0,
- "star_rating": 5,
- "num_reviews": 0,
- "num_photos": 0,
- "thumb_url": "string",
- "amenities": [
- "24_hour_check_in"
], - "listing_preferences": {
- "num_included_guests": 0,
- "num_max_guests": 0,
- "fees": [
- {
- "name": "string",
- "type": "cleaning",
- "multiplier": "PER_STAY",
- "value_type": "FIXED",
- "value": 0,
- "quantity": 0
}
], - "automatic_rate_posting_enabled": true,
- "weekly_discount_pct": 0,
- "monthly_discount_pct": 0,
- "base_price": 0,
- "min_price": 0,
- "max_price": 0,
- "minimum_stay": 0,
- "nickname": "string"
}, - "channel_ids": {
- "airbnb": "string",
- "tripadvisor": "string",
- "vrbo": "string"
}, - "description": "string",
- "nickname": "string",
- "base_min_night_stay": 0,
- "owner_name": "string",
- "is_active": true,
- "source_user_id": "string",
- "meta": {
- "amenities": [
- "24_hour_check_in"
], - "num_beds": 0,
- "num_reviews": 0,
- "num_photos": 0,
- "photos": [
- {
- "caption": "string",
- "regular": "string",
- "thumbnail": "string"
}
], - "security_deposit": 0,
- "source_user_id": "string",
- "thumb_url": "string"
}, - "channel": "string",
- "links": {
- "calendar": "string",
- "upgrade": "string"
}, - "wheelhouse_created_at": "2019-08-24T14:15:22Z"
}
]GET /listings/{listing_id}/price_calendar endpoint to fetch the price calendar for a single listing.GET /listings/{id}/base_price_recommendation endpoint to include attribution breakdown.GET /preferences endpoint to retrieve preferences for a batch of listings by listing_ids.GET /preferences/{id} endpoint to retrieve preferences for a single listing.GET /preferences/{id}/changelog endpoint to retrieve recent preference change events for a listing.PUT /listings/{id}/price_calendar when some unit_name values in the payload do not match any units on a multi-unit listing.min_price, max_price, and minimum_stay on PUT /listings
now ignore a value of 0. Sending 0 is treated the same as
omitting the field — existing rules are preserved. Only positive
values update the rule configuration.date_filter_type query parameter to GET /listings/{listing_id}/reservations endpoint.
Accepts stay_date (default, existing behavior) to filter by reservation stay dates, or booked_at
to filter by the date the reservation was booked.GET /listings/{id}/flags endpoint to retrieve system-managed flags for a listing.GET /listings/{id}/tags) no longer returns system-managed tags (flags). These are now exposed exclusively via the flags endpoint.GET /segments endpoint to list all portfolio segments for the authenticated user.GET /segments/{segment_id}/listings endpoint to list listings within a segment. Supports optional
exclude_inactive query parameter and pagination (per_page, page, offset). Accessible with Integration or RM
API token together with User API token.price_model query parameter to /preferences/{id}/preview endpoint to allow for the use of different price model versions.price_model query parameter is not provided, both the preview and price_recommendations endpoint will use the price model that is currently active for the listing.monthly_seasonality endpoint to retrieve recommended seasonality factors by month for a listing.listing_preferences.nickname to listing and listings responses.price_model query parameter to /listings/{id}/price_recommendations endpoint to allow for the use of different price model versions.base_price_recommendation for all listings in account. Fetching base price recommendations is still available on a per-listing basis.max_price reset behavior to listing endpoint. Passing a value of null for ['listing_preference']['max_price'] will reset the global max price rule for this listing, if it exists.in_market field to listing response object when show_market_coverage is true.base_price_recommended, base_price_conservative, and base_price_aggressive to price recommendations response payload.base_price_recommendation for all listings in account.type attribute.base_price_recommendation endpoint to fetch recommended base price options.base_price to be set via the /preferences/{id} endpoint./preferences/{id}) to define detailed custom preferences. This endpoint is experimental and subject to changes in the future./listings/{id}/recent_changes) for retrieving the times of the most-recent changes for a listingexternal_user_id to all webhooksautomatic_rate_posting_enabled flag.user_initiated attribute to webhook payloads to differentiate between a webhook was
initiated by a user action and one that was called through automatic routines.nickname attribute from the Listing#listing_preferences.
Please just use the Listing#nickname attribute instead.PUT reservations endpoint in the
unchanged response field. These indicate that the reservations were already present and
required no update.external_user_id as an identifying parameter to web hook callbacks.fixed
(i.e. a fixed custom price) or adjusted (i.e. a percentage adjustment to the Wheelhouse
recommendation).Listing#meta atrribute object and lift the relevant attribute to the top level
instead. The old meta attribute still works as well for now but will evventually be
dropped in a future version.booked_at and either nightly_subtotal or nightly_prices on
reservations.room_type.