The listings endpoints are your starting point for any RM API integration. Use them to retrieve your full property portfolio or inspect a specific listing's details — including its listing_id and channel, which are required by most other endpoints.
GET /listings
Retrieve all listings in your account.
curl "https://api.usewheelhouse.com/ss_api/v1/listings" \
-H "X-Integration-Api-Key: your_api_key_here"
Query parameters
exclude_inactive(boolean, default:true) — whentrue, returns only active listingsinclude_managed_listings(boolean, default:false) — whentrue, also returns listings you manage for another Wheelhouse account (shared/delegated access), in addition to your ownper_page(integer, default:50) — number of results per page (max 100)page(integer, default:1) — page numberoffset(integer) — number of items to skip; alternative topage
Response
Returns a plain array of listing objects:
[
{
"id": "12345678",
"channel": "airbnb",
"wheelhouse_id": 987654,
"title": "2BR Beachfront Villa",
"nickname": "Beach Villa",
"currency": "USD",
"num_bedrooms": 2,
"num_bathrooms": 1.0,
"location": {
"address": "Miami Beach, FL",
"country": "US",
"latitude": 25.7825,
"longitude": -80.1340
},
"is_active": true,
"number_of_active_units": null,
"wheelhouse_created_at": "2024-01-15 08:00:00 -0800",
"access_level": "owner"
}
]
Response fields
id— the channel's unique listing ID (use this aslisting_idin all other endpoints)channel— the integration connected to this listing (use this as thechannelparameter in other endpoints)wheelhouse_id— Wheelhouse's internal numeric ID for this listingtitle— the listing name as it appears on the channelnickname— shortened name used internally in Wheelhousecurrency— ISO-4217 currency code for this listing's pricingnum_bedrooms/num_bathrooms— property details (bathrooms may be fractional, e.g. 1.5)location— nested object withaddress,country,latitude,longitude,postal_codeis_active— whether the listing is currently activenumber_of_active_units—nullfor standard listings; positive integer for multi-unit listings (see note below)wheelhouse_created_at— when the listing was added to Wheelhouseaccess_level— your access role:owner,viewer,restricted_editor,editor, ormanager
Multi-unit listings
A non-null number_of_active_units means the listing has multiple independently bookable units. Calendar endpoints (/price_calendar, /last_posted_prices) return one row per unit per date, with a unit_number field identifying which unit the row belongs to.
GET /listings/:listing_id
Retrieve details for a single listing.
curl "https://api.usewheelhouse.com/ss_api/v1/listings/12345678?channel=airbnb" \
-H "X-Integration-Api-Key: your_api_key_here"
bash
Path parameters
listing_id(string, required) — the channel's unique listing identifier
Query parameters
channel(string, required) — the channel name for this listing (fromGET /listings)
Response
Returns a single listing object with the same fields as above.
GET /listings/:listing_id/pricing_tier
Get the pricing tier for a listing — useful for understanding what features are available.
curl "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/pricing_tier?channel=airbnb" \
-H "X-Integration-Api-Key: your_api_key_here"
Response fields
name— the listing's pricing tier:Free,Pro Flex,Pro Flat, orPro SS APIhorizon— how many days into the future price recommendations are generated
GET /listings/:listing_id/recent_changes
Get timestamps of the most recent preference and rate changes for a listing. Useful for detecting changes since your last sync.
curl "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/recent_changes?channel=airbnb" \
-H "X-Integration-Api-Key: your_api_key_here"
Response fields
settings— ISO 8601 datetime when the listing's preferences were last updatedrates— ISO 8601 datetime when custom rates were last updated (nullable)
POST /listings/:listing_id/sync
Trigger a manual price sync — pushes the latest Wheelhouse price recommendations to the connected channel and refreshes reservation data. Equivalent to clicking Sync in the Wheelhouse UI.
curl -X POST "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/sync?channel=airbnb" \
-H "X-Integration-Api-Key: your_api_key_here"
Returns 202 Accepted immediately — the sync runs asynchronously.
Important notes:
Manual syncs require a paid (Pro) plan — free plan listings return
429If a sync was already requested within the last 60 seconds, returns
423— wait before retryingDaily sync limits apply per listing's plan
Code examples
Python — fetch all active listing IDs and channels
import requests
headers = {"X-Integration-Api-Key": "your_api_key_here"}
BASE_URL = "https://api.usewheelhouse.com/ss_api/v1"
resp = requests.get(f"{BASE_URL}/listings", headers=headers, params={"exclude_inactive": "true"})
listings = resp.json()
for listing in listings:
print(f"ID: {listing['id']} | Channel: {listing['channel']} | Name: {listing['title']}")
Python — check for recently changed listings
python
import requests
headers = {"X-Integration-Api-Key": "your_api_key_here"}
BASE_URL = "https://api.usewheelhouse.com/ss_api/v1"
listings = requests.get(f"{BASE_URL}/listings", headers=headers).json()
for listing in listings:
changes = requests.get(
f"{BASE_URL}/listings/{listing['id']}/recent_changes",
headers=headers,
params={"channel": listing["channel"]}
).json()
if changes.get("settings"):
print(f"{listing['title']}: preferences last changed {changes['settings']}")
python
Related
Understanding listing_id and channel — the two required parameters Pagination: using per_page, page, and offset