Download OpenAPI specification:
The Wheelhouse Revenue Management API provides direct access to price recommendations, listing preferences, custom rates, reservations, and portfolio management for Revenue Management integrations.
This API is currently in beta. The interface and response formats may change in future versions. Please reach out to us at tech-support@usewheelhouse.com if you have any questions or feedback.
All requests require an RM API key sent in the X-Integration-Api-Key header. You can generate this in your Wheelhouse account under "Api Key".
The RM API key is a single key that authenticates both the integration and user context — no separate user key is required.
Keys configured as read-only may use the HTTP methods GET, HEAD, OPTIONS, and POST only. PUT and DELETE requests return 403 Forbidden with a message that the API key is read-only (other disallowed methods do as well).
By default, returns only listings owned by the authenticated user (connected via their channel accounts). Set include_managed_listings to true to also return listings they have been granted access to manage in Wheelhouse (shared / delegated access on another user's listings), alongside owned listings.
| exclude_inactive | boolean Default: false Exclude inactive listings from the response. |
| include_managed_listings | boolean Default: false When true, includes listings the user manages for another Wheelhouse account (valid shared-access grants), in addition to listings they own. When false (default), only owned listings are returned. |
| per_page | integer [ 1 .. 100 ] Default: 50 Number of listings per page. |
| page | integer Page number to retrieve. |
| offset | integer Number of items to skip before starting to collect the result set. |
[- {
- "id": "string",
- "channel": "string",
- "wheelhouse_id": 0,
- "title": "string",
- "nickname": "string",
- "description": "string",
- "location": {
- "country": "string",
- "postal_code": "string",
- "address": "string",
- "latitude": 0,
- "longitude": 0
}, - "num_bedrooms": 0,
- "num_beds": 0,
- "num_bathrooms": 0,
- "room_type": "string",
- "property_type": "string",
- "currency": "string",
- "star_rating": 0,
- "num_reviews": 0,
- "num_photos": 0,
- "thumb_url": "string",
- "access_level": "owner",
- "amenities": [
- "string"
], - "owner_name": "string",
- "source_user_id": 0,
- "channel_ids": {
- "airbnb": "string",
- "tripadvisor": "string",
- "vrbo": "string"
}, - "links": {
- "calendar": "string",
- "upgrade": "string"
}, - "security_deposit": 0,
- "base_min_night_stay": 0,
- "listing_preferences": { },
- "in_market": true,
- "market_id": 0,
- "is_active": true,
- "wheelhouse_created_at": "2019-08-24T14:15:22Z"
}
]| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
{- "id": "string",
- "channel": "string",
- "wheelhouse_id": 0,
- "title": "string",
- "nickname": "string",
- "description": "string",
- "location": {
- "country": "string",
- "postal_code": "string",
- "address": "string",
- "latitude": 0,
- "longitude": 0
}, - "num_bedrooms": 0,
- "num_beds": 0,
- "num_bathrooms": 0,
- "room_type": "string",
- "property_type": "string",
- "currency": "string",
- "star_rating": 0,
- "num_reviews": 0,
- "num_photos": 0,
- "thumb_url": "string",
- "access_level": "owner",
- "amenities": [
- "string"
], - "owner_name": "string",
- "source_user_id": 0,
- "channel_ids": {
- "airbnb": "string",
- "tripadvisor": "string",
- "vrbo": "string"
}, - "links": {
- "calendar": "string",
- "upgrade": "string"
}, - "security_deposit": 0,
- "base_min_night_stay": 0,
- "listing_preferences": { },
- "in_market": true,
- "market_id": 0,
- "is_active": true,
- "wheelhouse_created_at": "2019-08-24T14:15:22Z"
}| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
{- "name": "Free",
- "horizon": 0
}| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
{- "settings": "2019-08-24T14:15:22Z",
- "rates": "2019-08-24T14:15:22Z"
}Returns occupancy, revenue, and booking KPIs for a given look-ahead window.
| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
| days | integer [ 1 .. 365 ] Default: 30 The number of look-ahead days for which to calculate KPIs. |
{- "adjusted_occupancy": 0,
- "occupancy": 0,
- "available_nights": 0,
- "average_asking_rate": 0,
- "average_nightly_rate": 0,
- "adjusted_nightly_revpar": 0,
- "nightly_revpar": 0,
- "last_booked_at": "2019-08-24T14:15:22Z",
- "booked": 0
}Retrieve Wheelhouse price recommendations, base price suggestions, check-in/check-out calendars, min/max price calendars, and monthly seasonality factors.
| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
| currency | string ISO-4217 3-letter currency code (e.g. 'USD', 'GBP') to convert prices to. Uses listing's currency by default. |
| attribution | boolean Default: false When true, includes detailed per-factor price attribution fields ( |
| price_model | string Enum: "current" "opt_in" The price model version to use. If omitted, uses the price model currently active for the listing. |
{- "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
}Returns price recommendations as if the provided preferences were applied to the listing, without actually saving any changes.
The response format is identical to GET /listings/{listing_id}/price_recommendations, except that global_min_stay and automatic_rate_posting_enabled are not included.
| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
| automatic_rate_posting_enabled | boolean Whether automated price posting is enabled for this listing. |
| base_price | number 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 | |
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. | |
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. |
| price_model | string Enum: "current" "opt_in" The price model version to use. If omitted, uses the price model currently active for the listing. |
{- "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_v3": [ ],
- "min_stays_enabled": true,
- "minimum_price_rules_v3": [ ],
- "maximum_price_rules_v3": [ ],
- "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,
- "price_model": "current"
}{- "data": [
- {
- "stay_date": "2019-08-24",
- "price": 0,
- "currency": "string",
- "min_stay": 0,
- "custom_type": "string"
}
], - "base_price": 0,
- "base_price_recommended": 0,
- "base_price_conservative": 0,
- "base_price_aggressive": 0
}Returns recommended, conservative, and aggressive base prices, the listing's active base price, anchoring
fields (anchor_price, anchor_credibility), and a consolidated base_price_attribution object aligned with
the Wheelhouse app Recommended Breakdown.
| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
| currency | string ISO-4217 3-letter currency code (e.g. 'USD', 'GBP') to convert prices to. Uses listing's currency by default. |
{- "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"
}Returns a daily calendar of check-in and check-out rules. Returns 204 if check-in/check-out rules are not configured for the listing.
| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
{- "data": [
- {
- "stay_date": "2019-08-24",
- "check_in": true,
- "check_out": true
}
]
}| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
{- "data": [
- {
- "stay_date": "2019-08-24",
- "min_price": 0,
- "max_price": 0
}
]
}Returns conservative (CON), recommended (REC), and aggressive (AGG) seasonality multipliers grouped by month number (1–12).
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:
| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
{- "CON": {
- "1": 0,
- "2": 0,
- "3": 0,
- "4": 0,
- "5": 0,
- "6": 0,
- "7": 0,
- "8": 0,
- "9": 0,
- "10": 0,
- "11": 0,
- "12": 0
}, - "REC": {
- "1": 0,
- "2": 0,
- "3": 0,
- "4": 0,
- "5": 0,
- "6": 0,
- "7": 0,
- "8": 0,
- "9": 0,
- "10": 0,
- "11": 0,
- "12": 0
}, - "AGG": {
- "1": 0,
- "2": 0,
- "3": 0,
- "4": 0,
- "5": 0,
- "6": 0,
- "7": 0,
- "8": 0,
- "9": 0,
- "10": 0,
- "11": 0,
- "12": 0
}
}Read and update detailed pricing preferences for listings, including base price, seasonality, discounts, min stay rules, and more.
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
| 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_v3": [ ],
- "min_stays_enabled": true,
- "minimum_price_rules_v3": [ ],
- "maximum_price_rules_v3": [ ],
- "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"
}
]Updates pricing preferences for multiple listings in one request.
Returns status 207 if some updates failed, 424 if all updates failed.
| channel required | string Channel name the listings are on. See return value of the /listings endpoint. |
required | Array of objects |
{- "listing_preferences": [
- {
- "listing_id": "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_v3": [ ],
- "min_stays_enabled": true,
- "minimum_price_rules_v3": [ ],
- "maximum_price_rules_v3": [ ],
- "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_v3": [ ],
- "min_stays_enabled": true,
- "minimum_price_rules_v3": [ ],
- "maximum_price_rules_v3": [ ],
- "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"
}
]
}| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
{- "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_v3": [ ],
- "min_stays_enabled": true,
- "minimum_price_rules_v3": [ ],
- "maximum_price_rules_v3": [ ],
- "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"
}Updates pricing preferences for a listing.
| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
| automatic_rate_posting_enabled | boolean Whether automated price posting is enabled for this listing. |
| base_price | number 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 | |
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. | |
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,
- "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_v3": [ ],
- "min_stays_enabled": true,
- "minimum_price_rules_v3": [ ],
- "maximum_price_rules_v3": [ ],
- "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_v3": [ ],
- "min_stays_enabled": true,
- "minimum_price_rules_v3": [ ],
- "maximum_price_rules_v3": [ ],
- "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"
}Copies the preferences (and optionally custom rates) from a source listing to the target listing. This is a destructive action — it will overwrite the target listing's existing preferences.
The source listing is identified in the request body by copy_preferences_from. The target listing is identified by the listing_id path parameter.
| listing_id required | string The channel's unique listing identifier of the target listing (the one to copy preferences to). |
| copy_custom_rates | boolean Default: true If true, also copies the source listing's custom rates to the target. |
| channel required | string Channel name the target listing is on. See return value of the /listings endpoint. |
required | object Identifies the source listing to copy preferences from. |
{- "copy_custom_rates": true,
- "channel": "string",
- "copy_preferences_from": {
- "channel": "string",
- "listing_id": "string"
}
}Updates one of the following settings to a preset level (conservative/recommended/aggressive), or toggles automatic rate posting on/off.
| Setting | Accepted parameters |
|---|---|
base_price_adjustment |
type: CON, REC, or AGG |
seasonality_adjustment |
type: CON, REC, or AGG |
last_minute_discount |
type: CON, REC, or AGG |
far_future_premium |
type: CON, REC, or AGG |
automatic_rate_posting |
enabled: true or false |
| listing_id required | string The channel's unique listing identifier. |
| setting required | string Enum: "base_price_adjustment" "seasonality_adjustment" "last_minute_discount" "far_future_premium" "automatic_rate_posting" The setting to update. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
| type | string Enum: "CON" "REC" "AGG" The preset level to apply. Required for all settings except |
| enabled | boolean The enabled state. Required for |
{- "type": "CON",
- "enabled": true
}{- "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_v3": [ ],
- "min_stays_enabled": true,
- "minimum_price_rules_v3": [ ],
- "maximum_price_rules_v3": [ ],
- "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"
}This endpoint can be used to fetch weekly and monthly discounts set up through Wheelhouse for a listing.
| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
{- "weekly_discount": 0,
- "monthly_discount": 0
}Returns a list of recent change events for the listing's pricing settings.
| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
| start_date | string <date> Start of the date range to retrieve changes for. 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. Defaults to tomorrow. |
{- "events": [
- {
- "time": "2019-08-24T14:15:22Z",
- "source": "string",
- "event": "string",
- "status": "string",
- "msg": "string"
}
]
}Creates or replaces a custom rate for a date range. Setting a fixed rate applies an absolute nightly price; setting an adjustment rate applies a percentage multiplier to the Wheelhouse recommendation.
| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
| start_date required | string <date> The first date of the custom rate period (YYYY-MM-DD). |
| end_date required | string <date> The last date of the custom rate period (YYYY-MM-DD). |
| rate_type required | string Enum: "fixed" "adjustment" The type of custom rate.
|
| currency | string The ISO-4217 3-letter currency code. Required for |
| sunday | integer >= 1 Price or adjustment value for Sundays. |
| monday | integer >= 1 Price or adjustment value for Mondays. |
| tuesday | integer >= 1 Price or adjustment value for Tuesdays. |
| wednesday | integer >= 1 Price or adjustment value for Wednesdays. |
| thursday | integer >= 1 Price or adjustment value for Thursdays. |
| friday | integer >= 1 Price or adjustment value for Fridays. |
| saturday | integer >= 1 Price or adjustment value for Saturdays. |
{- "start_date": "2019-08-24",
- "end_date": "2019-08-24",
- "rate_type": "fixed",
- "currency": "string",
- "sunday": 1,
- "monday": 1,
- "tuesday": 1,
- "wednesday": 1,
- "thursday": 1,
- "friday": 1,
- "saturday": 1
}{- "id": 0,
- "listing_id": 0,
- "rate_type": "fixed",
- "fixed": true,
- "currency": "string",
- "start_date": "2019-08-24",
- "end_date": "2019-08-24",
- "sunday": 0,
- "monday": 0,
- "tuesday": 0,
- "wednesday": 0,
- "thursday": 0,
- "friday": 0,
- "saturday": 0,
- "is_blocked": true,
- "created_user_id": 0,
- "split_user_id": 0,
- "expires_at": "2019-08-24T14:15:22Z",
- "valid_until": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Removes all custom rates overlapping the specified date range. Any partially covered custom rates will be adequately shortened and the affected date range will be set to the recommended price again.
| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
| start_date required | string <date> The start date of the range to delete (YYYY-MM-DD). This date is inclusive. |
| end_date required | string <date> The end date of the range to delete (YYYY-MM-DD). This date is inclusive. |
Creates or replaces multiple custom rates in a single request. Partially successful requests return status 207; fully failed requests return 424.
| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
required | Array of objects (custom_rate_input) |
{- "custom_rates": [
- {
- "start_date": "2019-08-24",
- "end_date": "2019-08-24",
- "rate_type": "fixed",
- "currency": "string",
- "sunday": 1,
- "monday": 1,
- "tuesday": 1,
- "wednesday": 1,
- "thursday": 1,
- "friday": 1,
- "saturday": 1
}
]
}{- "updated_custom_rates": [
- {
- "id": 0,
- "listing_id": 0,
- "rate_type": "fixed",
- "fixed": true,
- "currency": "string",
- "start_date": "2019-08-24",
- "end_date": "2019-08-24",
- "sunday": 0,
- "monday": 0,
- "tuesday": 0,
- "wednesday": 0,
- "thursday": 0,
- "friday": 0,
- "saturday": 0,
- "is_blocked": true,
- "created_user_id": 0,
- "split_user_id": 0,
- "expires_at": "2019-08-24T14:15:22Z",
- "valid_until": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]
}Removes custom rates for multiple date ranges in a single request. Partially successful requests return status 207; fully failed requests return 424.
| 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. |
required | Array of objects |
{- "channel": "string",
- "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"
}
]
}Returns a list of reservations for a listing.
| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
| start_date | string <date> Filter start date (YYYY-MM-DD). Behavior depends on
|
| end_date | string <date> Filter end date (YYYY-MM-DD). Behavior depends on
|
| date_filter_type | string Default: "stay_date" Enum: "stay_date" "booked_at" Controls which date field is used for filtering:
|
| per_page | integer [ 1 .. 100 ] Default: 50 Number of reservations per page. |
| page | integer Page number to retrieve. |
| offset | integer Number of items to skip before starting to collect the result set. |
[- {
- "id": "string",
- "status": "string",
- "start_date": "2019-08-24",
- "end_date": "2019-08-24",
- "booked_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",
- "source_name": "string",
- "comments": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
[- {
- "name": "string",
- "description": "string"
}
]Adds (or overwrites) tags on a listing. If overwrite is false, provided tags are merged with existing tags. If overwrite is true, existing tags are replaced and all tags that are not in the list are deleted.
| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
| names required | Array of strings Array of tag names to add (or set if |
| overwrite | boolean Default: false If true, replaces all existing tags with the provided list. If false (default), merges with existing tags. |
{- "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 system-managed flags (as opposed to user-defined tags) associated with the listing.
| listing_id required | string The channel's unique listing identifier. |
| channel required | string Channel name the listing is on. See return value of the /listings endpoint. |
[- {
- "name": "string",
- "description": "string"
}
]Fetch the price calendar for a listing. The calendar reflects current prices, availability, and booking state for each stay date.
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 required | 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"
}
]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.
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 Wheelhouse internal segment ID. |
| exclude_inactive | boolean Default: true Exclude inactive listings from the response. Defaults to true. |
| per_page | integer [ 1 .. 100 ] Default: 50 Number of listings per page. |
| page | integer Page number to retrieve. |
| offset | integer Number of items to skip before starting to collect the result set. |
[- {
- "id": "string",
- "channel": "string",
- "wheelhouse_id": 0,
- "title": "string",
- "nickname": "string",
- "description": "string",
- "location": {
- "country": "string",
- "postal_code": "string",
- "address": "string",
- "latitude": 0,
- "longitude": 0
}, - "num_bedrooms": 0,
- "num_beds": 0,
- "num_bathrooms": 0,
- "room_type": "string",
- "property_type": "string",
- "currency": "string",
- "star_rating": 0,
- "num_reviews": 0,
- "num_photos": 0,
- "thumb_url": "string",
- "access_level": "owner",
- "amenities": [
- "string"
], - "owner_name": "string",
- "source_user_id": 0,
- "channel_ids": {
- "airbnb": "string",
- "tripadvisor": "string",
- "vrbo": "string"
}, - "links": {
- "calendar": "string",
- "upgrade": "string"
}, - "security_deposit": 0,
- "base_min_night_stay": 0,
- "listing_preferences": { },
- "in_market": true,
- "market_id": 0,
- "is_active": true,
- "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/{listing_id}/base_price_recommendation endpoint to include attribution breakdown.GET /listings, GET /listings/{listing_id}, GET /listings/{listing_id}/pricing_tier, GET /listings/{listing_id}/recent_changes, GET /listings/{listing_id}/kpis.GET /listings/{listing_id}/price_recommendations, GET /listings/{listing_id}/base_price_recommendation, GET /listings/{listing_id}/checkin_checkout, GET /listings/{listing_id}/min_max_prices, GET /listings/{listing_id}/monthly_seasonality.GET /preferences, PUT /preferences, GET /preferences/{listing_id}, PUT /preferences/{listing_id}, PUT /preferences/{listing_id}/copy, PUT /preferences/{listing_id}/{setting}, GET /preferences/{listing_id}/long_term_discounts, GET /preferences/{listing_id}/changelog, POST /preferences/{listing_id}/preview.PUT /listings/{listing_id}/custom_rates, DELETE /listings/{listing_id}/custom_rates, PUT /listings/{listing_id}/bulk_custom_rates, DELETE /listings/{listing_id}/bulk_custom_rates.GET /listings/{listing_id}/reservations (with date_filter_type parameter).GET /listings/{listing_id}/tags, PUT /listings/{listing_id}/tags, GET /listings/{listing_id}/flags.GET /segments, GET /segments/{segment_id}/listings.