{"openapi":"3.1.0","info":{"title":"EscapeStays by Luxury Lodging","version":"1.0.0","description":"Search Luxury Lodging's professionally managed vacation rental homes, check live availability and get a real stay total, then send the guest to book directly with the property manager. Prefer the MCP server at https://stay.luxurylodgingpm.com/mcp (streamable HTTP, no authentication, read only); it returns booking links and per-home policies. This REST API exposes the same data for clients that do not speak MCP. No endpoint takes a booking: the guest books at the property page on this site. Totals from /api/quote already include cleaning, fees and taxes; nightly rates in /api/listings are starting prices, not stay totals.","contact":{"email":"reservations@luxurylodgingstr.com"},"termsOfService":"https://stay.luxurylodgingpm.com/terms"},"servers":[{"url":"https://stay.luxurylodgingpm.com"}],"paths":{"/api/listings":{"get":{"operationId":"searchListings","summary":"Homes matching a place, size and dates","description":"With checkIn and checkOut, only homes free for those dates are returned. Without dates, availability is unknown.","parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Free-text place: city, neighbourhood or landmark."},{"name":"market","in":"query","schema":{"type":"string"},"description":"Exact market or city name."},{"name":"guests","in":"query","schema":{"type":"integer","minimum":1}},{"name":"bedrooms","in":"query","schema":{"type":"integer","minimum":1},"description":"Fewest bedrooms acceptable."},{"name":"checkIn","in":"query","schema":{"type":"string","format":"date"}},{"name":"checkOut","in":"query","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"Matching homes. The booking page for a home is /property/{id}.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Property id. Use it as listingId for quotes and availability."},"name":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"bedrooms":{"type":"number"},"bathrooms":{"type":"number"},"beds":{"type":"number"},"person_capacity":{"type":"integer","description":"How many guests the home sleeps."},"property_type":{"type":"string"},"description":{"type":"string"},"startingPrice":{"type":["number","null"],"description":"Lowest nightly rate seen recently, in USD. A starting price, not a stay total."},"default_daily_price":{"type":"number"},"cleaning_fee":{"type":"number"},"pets_allowed":{"type":["integer","boolean","null"]},"pets_fee":{"type":"number"},"amenities":{"type":"array","items":{"type":"string"}},"thumbnail_file":{"type":"string"}}}}}}},"429":{"description":"Rate limited: 120 requests a minute per IP."}}}},"/api/quote":{"post":{"operationId":"getQuote","summary":"Live total for one stay","description":"Always call this before telling a guest a price. Book at /property/{listingId}?checkIn=…&checkOut=…&guests=….","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["listingId","checkIn","checkOut"],"properties":{"listingId":{"type":"integer","description":"Property id from /api/listings."},"checkIn":{"type":"string","format":"date","description":"YYYY-MM-DD"},"checkOut":{"type":"string","format":"date","description":"YYYY-MM-DD"},"guests":{"type":"integer","minimum":1,"default":1},"pets":{"type":"boolean","default":false,"description":"Bringing a pet changes the price."}}}}}},"responses":{"200":{"description":"The quote. When available is false, unavailableReason says why.","content":{"application/json":{"schema":{"type":"object","properties":{"available":{"type":"boolean"},"totalPrice":{"type":"number","description":"The stay total in USD, including cleaning, fees and taxes. This is the price to tell a guest."},"nightlySubtotal":{"type":"number"},"nights":{"type":"integer"},"minimumStay":{"type":"integer"},"maximumStay":{"type":"integer"},"petsAllowed":{"type":"boolean"},"petFee":{"type":"number"},"unavailableReason":{"type":"string","enum":["no_calendar_data","dates_unavailable","minimum_stay","maximum_stay","closed_to_arrival","closed_to_departure","missing_pricing","missing_tax"]},"priceBreakdown":{"type":"object","properties":{"currency":{"type":"string"},"nightlySubtotal":{"type":"number"},"cleaningFee":{"type":"number"},"petFee":{"type":"number"},"extraGuestFee":{"type":"number"},"additionalFees":{"type":"number"},"taxAmount":{"type":"number"},"processingFee":{"type":"number"},"discountAmount":{"type":"number"},"total":{"type":"number"}}}}}}}},"400":{"description":"Missing or invalid listingId, checkIn or checkOut."},"429":{"description":"Rate limited: 45 requests a minute per IP."}}}},"/api/availability":{"post":{"operationId":"checkAvailability","summary":"Whether one home is free for a date range","description":"Same request and response as /api/quote; use it when only availability matters.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["listingId","checkIn","checkOut"],"properties":{"listingId":{"type":"integer","description":"Property id from /api/listings."},"checkIn":{"type":"string","format":"date","description":"YYYY-MM-DD"},"checkOut":{"type":"string","format":"date","description":"YYYY-MM-DD"},"guests":{"type":"integer","minimum":1,"default":1},"pets":{"type":"boolean","default":false,"description":"Bringing a pet changes the price."}}}}}},"responses":{"200":{"description":"Availability with the total when available.","content":{"application/json":{"schema":{"type":"object","properties":{"available":{"type":"boolean"},"totalPrice":{"type":"number","description":"The stay total in USD, including cleaning, fees and taxes. This is the price to tell a guest."},"nightlySubtotal":{"type":"number"},"nights":{"type":"integer"},"minimumStay":{"type":"integer"},"maximumStay":{"type":"integer"},"petsAllowed":{"type":"boolean"},"petFee":{"type":"number"},"unavailableReason":{"type":"string","enum":["no_calendar_data","dates_unavailable","minimum_stay","maximum_stay","closed_to_arrival","closed_to_departure","missing_pricing","missing_tax"]},"priceBreakdown":{"type":"object","properties":{"currency":{"type":"string"},"nightlySubtotal":{"type":"number"},"cleaningFee":{"type":"number"},"petFee":{"type":"number"},"extraGuestFee":{"type":"number"},"additionalFees":{"type":"number"},"taxAmount":{"type":"number"},"processingFee":{"type":"number"},"discountAmount":{"type":"number"},"total":{"type":"number"}}}}}}}},"400":{"description":"Missing or invalid listingId, checkIn or checkOut."},"429":{"description":"Rate limited: 45 requests a minute per IP."}}}}}}