Method to externally manage rate pricing
/manage/rates
This method is only accessible using a Hotelier API account.
This method is only accessible using a POST request.
To get a response in JSON make sure you are also sending the Accept: application/json header.
Post a JSON document with the following structure:
{ "RATECODE": [ { "from":ISO 8601, // Starting date for period updates, mutually exclusive with "date" "to":ISO 8601, // Ending date for period update, mutually exclusive with "date" "date":ISO 8601, // Single-date update, mutually exclusive with "from" and "to" "weekdays":STRING[], // Specific days of week to apply the update (Sun, Mon, Tue, Wed, Thu, Fri, Sat) "pricing": [ { "adults":INTEGER, "children":INTEGER, "price":MONEY } ], "extra_adult":MONEY, "extra_child":MONEY, "closeout":BOOLEAN // 1=Rate is closed, 0=Rate is open (optional) "min_stay":INTEGER // 0=Reset minimum stay override, 1+=Set minimum stay override (optional) "partial":BOOLEAN // 1=Only update combinations present in the request, 0=Update all (default = 0) } ] }
Request body must be in valid JSON format.
Updates are made only if the entire request body is successfully parsed and validated.
Updates are transactional, that means that the entire batch of updates included in the request will either succeed or fail in its entirety. We guarantee that no request can partial mutate WebHotelier state.
You can use the Rates Feed method to validate WebHotelier state against your data.
We closely monitor all updates going in WebHotelier.
If best practices are not followed it may result in the banning of your API account or your IP address.
The following examples illustrate common use cases and possible combinations:
{ "28153": [ { "date":"2024-11-05", "pricing": [ { "adults": 1, "price": 100.0 }, { "adults": 2, "price": 120.0 }, { "adults": 2, "children": 1, "price": 130.0 } ], "extra_adult": 50.0, "extra_child": 20.0 } ] }
{ "28153": [ { "from":"2024-11-12", "to":"2024-11-19", "pricing": [ { "adults": 1, "price": 100.0 }, { "adults": 2, "price": 120.0 }, { "adults": 2, "children": 1, "price": 130.0 } ], "extra_adult": 50.0, "extra_child": 20.0 } ] }
{ "28153": [ { "date":"2024-11-05", "pricing": [ { "adults": 1, "price": 100.0 }, { "adults": 2, "price": 120.0 }, { "adults": 2, "children": 1, "price": 130.0 } ], "extra_adult": 50.0, "extra_child": 20.0 }, { "from":"2024-11-12", "to":"2024-11-19", "pricing": [ { "adults": 1, "price": 100.0 }, { "adults": 2, "price": 120.0 }, { "adults": 2, "children": 1, "price": 130.0 } ], "extra_adult": 50.0, "extra_child": 20.0 } ] }
{ "28153": [ { "date":"2024-11-05", "pricing": [ { "adults": 1, "price": 100.0 }, { "adults": 2, "price": 120.0 }, { "adults": 2, "children": 1, "price": 130.0 } ], "extra_adult": 50.0, "extra_child": 20.0 }, { "from":"2024-11-12", "to":"2024-11-19", "pricing": [ { "adults": 1, "price": 100.0 }, { "adults": 2, "price": 120.0 }, { "adults": 2, "children": 1, "price": 130.0 } ], "extra_adult": 50.0, "extra_child": 20.0 } ], "28154": [ { "date":"2024-11-05", "pricing": [ { "adults": 1, "price": 150.0 }, { "adults": 2, "price": 180.0 }, { "adults": 2, "children": 1, "price": 190.0 } ], "extra_adult": 30.0, "extra_child": 10.0 } ] }
{ "28153": [ { "date":"2024-11-05", "closeout": 1 } ] }
{ "28153": [ { "date":"2024-11-05", "pricing": [ { "adults": 1, "price": 100.0 }, { "adults": 2, "price": 120.0 }, { "adults": 2, "children": 1, "price": 130.0 } ], "extra_adult": 50.0, "extra_child": 20.0, "closeout": 0 } ] }
{ "28153": [ { "date":"2024-11-05", "pricing":[{ "adults": 1, "price": 100.0 }] } ] }
{ "28155": [ { "from":"2024-11-12", "to":"2024-11-19", "pricing": [ { "adults": 1, "children": 0, "price": 100.0 }, { "adults": 2, "children": 0, "price": 120.0 }, { "adults": 3, "children": 0, "price": 180.0 }, { "adults": 4, "children": 0, "price": 200.0 }, { "adults": 5, "children": 0, "price": 250.0 }, { "adults": 2, "children": 1, "price": 130.0 }, { "adults": 2, "children": 2, "price": 140.0 }, { "adults": 3, "children": 1, "price": 190.0 } ], "extra_adult": 50.0, "extra_child": 20.0 } ] }
{ "28153": [ { "date":"2024-11-05", "min_stay": 5 } ] }
{ "28153": [ { "date":"2024-11-05", "pricing": [ { "adults": 1, "price": 100.0 }, { "adults": 2, "price": 120.0 }, { "adults": 2, "children": 1, "price": 130.0 } ], "extra_adult": 50.0, "extra_child": 20.0, "min_stay": 0 } ] }
{ "28153": [ { "from":"2024-11-12", "to":"2024-11-19", "weekdays": [ "Sat", "Sun" ] "pricing": [ { "adults": 1, "price": 100.0 }, { "adults": 2, "price": 120.0 }, { "adults": 2, "children": 1, "price": 130.0 } ], "extra_adult": 50.0, "extra_child": 20.0 } ] }
You will notice that pricing, close-outs, and minimum stay overrides can be independently managed (send one, two, or all three in a single update). We recommend sending a single update for all three if possible to avoid roundtrips.
Pricing overrides the entire rate for that day. If combinations are missing the system will generate the price using the "extra_adult" and "extra_child" information if present, otherwise it will re-use the same price as the closest submitted combination. For the system to be able to do this, at least the first pax combination price must be submitted, otherwise you will get a "Missing minimum-occupancy price" error.
You can use the partial flag to change this behavior and only update the combinations present in the update.
Minimum stay for a date is inherited. There is a minimum stay setting at the availability period level. Then there is a global minimum stay override setting for each rate. Lastly, there is a minimum stay override per day for each rate.
This means that resetting a day's minimum stay does not mean that minimum stay becomes 1. The rate feed API method may return another value based on the above inheritance scheme.