List rates#
/v1/ratesBulk rate feed, indicative only — meant for warming an integrator's own cache so it can run its own pricing logic on top. This is NOT the authoritative price. The authoritative price — the one a booking is actually made against, matching what CRS charges — comes from the order preview in a later API slice. Do not book against these figures. Pass listingIds to expand to every property they contain, propertyIds to fetch specific properties directly, or mix both. Each list parameter accepts at most 100 ids — the cap is per parameter, so listingIds and propertyIds may carry 100 each.
Exactly one of two mutually exclusive modes is selected by which date pair you supply — supplying both, or neither, is a 400:
- Range mode — pass
from/to(inclusive, default a 90-day window starting today, at most 365 days). Returns one row (RateRow) per (property, date, meal plan, adult count) with the plain nightly rate. Promotions never appear here — a single night is not a stay, sopromotionModemust beRAWor omitted; anything else is a400. - Stay mode — pass
checkIn/checkOut(checkOutstrictly aftercheckIn, at most 365 nights). Returns one row (StayRateRow) per (property, meal plan, adult count) totalling the whole stay, with the best eligible promotion evaluated ONCE against the real check-in, checkout and night count — not per night as if each night were its own one-night stay.promotionModecontrols which price figures come back:RAWfor the pre-promotion total only,APPLIEDfor the post-promotion total only, orBOTH(default) for both figures plus the promotion that produced the difference. This filter only shapes the response — it never changes which rows are returned. Bank offers and coupons never appear here: they depend on the guest's payment instrument, which is meaningless when an agent group settles on credit — only promotions are considered. In stay mode, a property is omitted from the results entirely when any single night of the requested stay has no rate for it — a stay that cannot be fully priced cannot be quoted.
Request
curl -X GET 'https://partner-api.elivaas.com/v1/rates' \
-u "$ELIVAAS_API_KEY:" \
-H 'Content-Type: application/json'const res = await fetch('https://partner-api.elivaas.com/v1/rates', {
method: 'GET',
headers: {
Authorization: 'Basic ' + Buffer.from(process.env.ELIVAAS_API_KEY + ':').toString('base64'),
'Content-Type': 'application/json',
},
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json();import os, requests
res = requests.get(
"https://partner-api.elivaas.com/v1/rates",
auth=(os.environ["ELIVAAS_API_KEY"], ""),
timeout=30,
)
res.raise_for_status()
data = res.json()[
"string"
]Query parameters#
listingIdsstring[]Listing ids to expand to their properties. Max 100 ids per request.
propertyIdsstring[]Property ids to fetch directly. Max 100 ids per request.
fromstring<date>Range mode: start of the date window (inclusive, ISO 8601 date). Defaults to today. Mutually exclusive with
checkIn/checkOut.tostring<date>Range mode: end of the date window (inclusive, ISO 8601 date). At most 365 days after
from.checkInstring<date>Stay mode: the real check-in date (ISO 8601). Mutually exclusive with
from/to; requirescheckOut.checkOutstring<date>Stay mode: the real checkout date (ISO 8601), strictly after
checkIn. At most 365 nights aftercheckIn.
Which price figures to return. Range mode: RAW (or omitted) only. Stay mode: RAW (pre-promotion only), APPLIED (post-promotion only), or BOTH (default).
Responses#
| Status | Meaning |
|---|---|
200 | One row per (property, date, meal plan, adult count) in range mode (RateRow), or one row per (property, meal plan, adult count) in stay mode (StayRateRow). |
400 | Validation failure. The message names the offending parameter. Limits are rejected, never silently clamped: an over-length id list, a page size above 100 or a date window longer than 365 days all land here rather than coming back quietly truncated. |
401 | Missing, malformed, revoked or unknown API key, or an agent group whose distribution access is disabled. Pass the key as the HTTP Basic username with an empty password. |
429 | Rate limit exhausted for this credential. Wait Retry-After seconds before retrying; the budget is per credential, not per IP. |
See Errors for the error body shape and which statuses are worth retrying.