Skip to content

Price quotes

POST /partner/v1/quote runs the same engine that prices the agency’s own website. The quote you get is the quote a guest would pay — seasonal nightly rates, cleaning fee, VAT, Tourism Dirham and any active promotion included.

Terminal window
curl https://api.myrentalcalendar.com/partner/v1/quote \
-H "Authorization: Bearer $STAYOS_KEY" \
-H "Content-Type: application/json" \
-d '{ "unit": "marina-loft-2br", "arrival": "2026-09-10", "departure": "2026-09-14" }'

Requires scope read:rates.

{
"available": true,
"instantBook": true,
"currency": "AED",
"quote": {
"lines": [
{ "kind": "nights", "label": "4 nights", "amount": 180000 },
{ "kind": "cleaning", "label": "Cleaning fee", "amount": 25000 },
{ "kind": "tourism_fee", "label": "Tourism Dirham", "amount": 8000 },
{ "kind": "vat", "label": "VAT 5%", "amount": 10650 }
],
"total": 223650
},
"nightlyRates": [
{ "night": "2026-09-10", "price": 45000, "level": "low" }
],
"promos": [],
"totalBeforePromo": null
}

All amounts are integers in the currency’s minor unit (223650 = AED 2,236.50). The exact line kinds vary with the agency’s configuration — render the lines array as given instead of recomputing it.

  • available — the quote is calculated even when the dates clash, so you can show “these dates are taken, here is what a similar stay costs”. Check the flag before offering a booking.
  • promos / totalBeforePromo — when a promotion applied, promos names it and totalBeforePromo carries the undiscounted engine total for a strike-through price. Without promotions it is null.

Too-short stays are rejected with 422 and the effective minimum for those dates (seasonal rules can raise a unit’s base minimum):

{ "code": "MIN_STAY", "title": "Minimum stay is 4 nights", "minStay": 4 }