Daily prices
Developers (API)REST API v1
A rate holds one price per day and per occupancy: single (sgl), double (dbl), triple (tpl) and the whole unit (full). Two calls work on them. Use the rate ids from Hotels, rooms and rates.
Read prices
GET /hotels/{id}/rates/{rate_id}/prices returns every day held for the rate. It takes no date parameters: you cannot ask for a window, and the entries are not guaranteed to be sorted by date, so filter and sort on your side.
curl -s "https://api.effectivetours.com/v1/hotels/{id}/rates/{rate_id}/prices" \
-H "Authorization: Bearer $ET_API_KEY"Example response (abbreviated to one day):
[
{
"date": "2027-03-15",
"sgl_buy": null,
"sgl_sell": "100.00",
"dbl_buy": null,
"dbl_sell": "120.00",
"tpl_buy": null,
"tpl_sell": null,
"full_buy": null,
"full_sell": null
}
]Each occupancy has a buy and a sell price. What you see depends on your company type:
- A distributor company sees the base prices as sell prices, and the buy prices are
null. - A direct operation sees its buy prices (its cost) and its sell prices (with markup).
- An occupancy the rate does not support is
null.
Write prices
POST /hotels/{id}/rates/{rate_id}/prices sets prices. Only distributor companies can write. A company that is not a distributor gets 403. The body is a JSON array. Each item has a date and a price for each occupancy. Prices for occupancies the rate does not support are set to null, and records are created or updated as needed.
Write calls are real. There is no sandbox, a price you write is saved at once and reaches the connected channels, and it cannot be undone through the API. The only way to undo a change is to write the old price again. Read the current prices first and keep a copy.
curl -s -X POST "https://api.effectivetours.com/v1/hotels/{id}/rates/{rate_id}/prices" \
-H "Authorization: Bearer $ET_API_KEY" \
-H "Content-Type: application/json" \
-d '[{"date": "2027-03-15", "sgl": "100.00", "dbl": "120.00", "tpl": null, "full": null}]'Example response (the same format as the read call):
[
{
"date": "2027-03-15",
"sgl_buy": null,
"sgl_sell": "100.00",
"dbl_buy": null,
"dbl_sell": "120.00",
"tpl_buy": null,
"tpl_sell": null,
"full_buy": null,
"full_sell": null
}
]After a write, read the prices again to confirm them. Then use Channel update to ask Effective Tours to resend the dates to the channels.
Errors
| Status | Meaning |
|---|---|
403 | Your company is not a distributor (write), or {"detail":"You are not allowed to access this hotel"}. |
404 | Hotel or rate not found or not accessible. A read without access returns {"detail":"Hotel not found"}. |
410 | The hotel belongs to your company but was removed: {"detail":"Requested HotelID: <id> not found."}. |
422 | The body is not valid, for example a missing date. |