List promotions running on listings#
/v1/promotionsBulk promotions feed for the caller's channel (max 100 listing ids per request). Pass activeOn to only return promotions whose stay window covers that date. Bank offers and coupons are out of scope — they depend on the guest's payment instrument, which is meaningless when an agent group settles on credit. An empty list for a listing id means only that no promotion is currently applicable to your channel for that listing — it does not distinguish between the listing having no promotions at all and the listing not being visible on your channel at all. A listing you cannot see on this channel always comes back with an empty list, never with promotions.
Promotions require an explicit offer mapping. Unlike the catalogue, availability and rate feeds — where a channel with no curation at all sees everything — a promotion is only returned when it has been explicitly mapped to your channel. A channel that has not been curated therefore returns no promotions, even though the same channel sees the full catalogue on the other endpoints. If you expect promotions and receive none, ask for your channel's offer mappings to be configured.
Request
curl -X GET 'https://partner-api.elivaas.com/v1/promotions' \
-u "$ELIVAAS_API_KEY:" \
-H 'Content-Type: application/json'const res = await fetch('https://partner-api.elivaas.com/v1/promotions', {
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/promotions",
auth=(os.environ["ELIVAAS_API_KEY"], ""),
timeout=30,
)
res.raise_for_status()
data = res.json(){}Query parameters#
listingIdsstring[]requiredListing ids to fetch promotions for. Required, max 100 per request.
activeOnstring<date>Only return promotions whose stay window covers this date (ISO 8601). Omit to return every currently configured promotion regardless of stay window.
Responses#
| Status | Meaning |
|---|---|
200 | OK |
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.