The reservations endpoint returns booking data for any listing in your portfolio. Use it to build reporting dashboards, track occupancy, reconcile revenue, or sync bookings to an external system.
Pull reservations for a listing
curl "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/reservations?channel=airbnb&per_page=50" \
-H "X-Integration-Api-Key: your_api_key_here"
Reading the response
Each reservation object contains:
{
"id": "res-001",
"status": "Accepted",
"start_date": "2026-04-05",
"end_date": "2026-04-10",
"booked_at": "2026-03-01T15:30:00Z",
"num_guests": 4,
"currency": "USD",
"total_price": 1250.00,
"nightly_subtotal": 1100.00,
"extra_guest": 50.00,
"security_deposit": 0.00,
"extras": 0.00,
"taxes": 100.00,
"confirmation_code": "HM4X7K",
"source_name": "Airbnb",
"comments": "Family vacation"
}
Key fields:
start_date/end_date— check-in and check-out dates (YYYY-MM-DD)booked_at— when the booking was made (ISO 8601 timestamp)status— booking status:Accepted,Declined,Expired,Canceled,Pending,Ignoredtotal_price— full amount charged to the guestnightly_subtotal— nightly rate portion only, before taxes and extrassource_name— the platform the booking came throughconfirmation_code— the booking reference code
Filtering by date range
Filter reservations by stay date (default) or by when they were booked:
# Reservations with stays between April 1–30
curl "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/reservations?channel=airbnb&start_date=2026-04-01&end_date=2026-04-30&date_filter_type=stay_date" \
-H "X-Integration-Api-Key: your_api_key_here"
# Bookings made between March 1–31 (regardless of stay date)
curl "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/reservations?channel=airbnb&start_date=2026-03-01&end_date=2026-03-31&date_filter_type=booked_at" \
-H "X-Integration-Api-Key: your_api_key_here"
date_filter_type defaults to stay_date if not specified.
Pull reservations across your portfolio
Loop through all your listings to collect reservations in bulk:
import requests
API_KEY = "your_api_key_here"
BASE_URL = "https://api.usewheelhouse.com/ss_api/v1"
headers = {"X-Integration-Api-Key": API_KEY}
listings_resp = requests.get(f"{BASE_URL}/listings?exclude_inactive=true", headers=headers)
listings = listings_resp.json()
for listing in listings:
listing_id = listing["id"]
channel = listing["channel"]
res_resp = requests.get(
f"{BASE_URL}/listings/{listing_id}/reservations",
headers=headers,
params={"channel": channel, "per_page": 50}
)
reservations = res_resp.json()
for res in reservations:
print(f"{listing['name']}: {res['confirmation_code']} | {res['start_date']} → {res['end_date']} | ${res['total_price']}")
Pagination
Reservations are paginated the same way as other list endpoints, using three optional query parameters:
per_page— how many reservations to return per request. Accepts a value between 1 and 100. Defaults to 50.page— which page of results to return. Page 1 is the first batch, page 2 the next, and so on. Defaults to 1.offset— an alternative topage. Skips this many reservations before returning results.pageandoffsetare interchangeable — use one or the other, not both in the same request.
To pull a full result set, keep incrementing page (or offset) until a response returns fewer reservations than your per_page value — that's the signal you've reached the last page.
Next steps
How to monitor listing performance (KPIs)