Custom rates let you override Wheelhouse's price recommendations for specific date ranges. You can set a fixed nightly price or a percentage adjustment. Rates are applied per listing per channel and can be set per day of the week within the date range.
GET /listings/:listing_id/custom_rates
Get all active and upcoming custom rates for a listing. Expired rate periods are excluded.
curl "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/custom_rates?channel=airbnb" \
-H "X-Integration-Api-Key: your_api_key_here"
Parameters
listing_id(string, path, required)channel(string, query, required)
Response
Returns an array of rate_period_response objects. Each includes:
id— Wheelhouse's internal rate period IDrate_type—"fixed"or"adjustment"currency— currency code (only forfixedrates)start_date/end_date— the rate period dates (inclusive)sundaythroughsaturday— price or adjustment value for each dayexpires_at— when the rate expires (null if it never expires)created_at/updated_at— timestamps
PUT /listings/:listing_id/custom_rates
Create or replace a custom rate for a date range.
curl -X PUT "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/custom_rates?channel=airbnb" \
-H "X-Integration-Api-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"start_date": "2026-08-01",
"end_date": "2026-08-31",
"rate_type": "fixed",
"currency": "USD",
"sunday": 180,
"monday": 150,
"tuesday": 150,
"wednesday": 150,
"thursday": 160,
"friday": 200,
"saturday": 220
}'
bash
Parameters
listing_id(string, path, required)channel(string, query, required)
Request body fields
start_date(string, required) — start of the date range (YYYY-MM-DD)end_date(string, required) — end of the date range (YYYY-MM-DD)rate_type(string, required) —"fixed"for an absolute nightly price;"adjustment"for a percentage multiplier applied to Wheelhouse's recommendationcurrency(string) — ISO-4217 currency code; required whenrate_typeis"fixed"sundaythroughsaturday(integer, min 1) — price or adjustment value per day of the week within the rangeexpires_at(string, optional) — ISO 8601 datetime; when set, the rate automatically expires at this time
For adjustment rates: per-day values are percentages where 100 = no change, 110 = +10%, 90 = −10%. Do not use raw percentages — 10 means 10% of the recommended price, not 10% above it.
If the new range overlaps an existing custom rate, the existing rate is shortened or split. Custom rates are not stacked — a new adjustment rate replaces any existing adjustment for the same dates.
Returns the created rate_period_response on success.
PUT /listings/:listing_id/bulk_custom_rates
Set multiple custom rates for a listing in one request.
curl -X PUT "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/bulk_custom_rates?channel=airbnb" \
-H "X-Integration-Api-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"custom_rates": [
{
"start_date": "2026-12-23",
"end_date": "2026-12-26",
"rate_type": "fixed",
"currency": "USD",
"sunday": 350, "monday": 350, "tuesday": 350,
"wednesday": 350, "thursday": 350, "friday": 400, "saturday": 400
},
{
"start_date": "2026-12-31",
"end_date": "2027-01-01",
"rate_type": "fixed",
"currency": "USD",
"sunday": 450, "monday": 450, "tuesday": 450,
"wednesday": 450, "thursday": 450, "friday": 500, "saturday": 500
}
]
}'
Request body
custom_rates(array, required) — each item uses the same fields as the singlePUT /custom_ratesbody
Status codes
200— all rates set successfully; response includesupdated_custom_ratesarray207— some rates succeeded, some failed; response includes bothupdated_custom_ratesanderrors424— all rates failed; response includeserrors
DELETE /listings/:listing_id/custom_rates
Delete all custom rates overlapping a date range. Returns 204 No Content on success.
curl -X DELETE "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/custom_rates?start_date=2026-08-01&end_date=2026-08-31&channel=airbnb" \
-H "X-Integration-Api-Key: your_api_key_here"
Query parameters
start_date(string, required) — start of the range to clear (YYYY-MM-DD, inclusive)end_date(string, required) — end of the range to clear (YYYY-MM-DD, inclusive)channel(string, required)
If a rate period extends beyond the deleted range on one side, it is truncated. If the deleted range falls in the middle of an existing period, that period is split into two. Deleted dates revert to Wheelhouse's recommendations.
DELETE /listings/:listing_id/bulk_custom_rates
Delete custom rates for multiple date ranges in one request.
curl -X DELETE "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/bulk_custom_rates" \
-H "X-Integration-Api-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"channel": "airbnb",
"delete_ranges": [
{"start_date": "2026-08-01", "end_date": "2026-08-31"},
{"start_date": "2026-12-20", "end_date": "2026-12-28"}
]
}'
Request body
channel(string, optional) — channel name for this listingdelete_ranges(array, required) — each entry:start_date(string, required) — inclusive start (YYYY-MM-DD)end_date(string, required) — inclusive end (YYYY-MM-DD)
Status codes
204— all ranges deleted successfully207— some deleted, some failed; response includeserrors424— all ranges failed
Related
How to set custom rates for specific dates