Push availability, rates, inventory, and restrictions for date ranges. Use pricingModel guest or unit; weekday exclusions use the exludedDays field.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Push ARI
POST /push/ari
Send one or more date-range updates. Request body: JSON array.
Runnable walkthrough: Complete steps 1–3 (hotels → products → ARI) in Quick start — runnable examples.
Try it (curl)
After you have a sandbox key and have run hotels + products for TEST001:
export BASE="https://ari-dev.thehotelplanet.com/v1"
export KEY="YOUR_SANDBOX_API_KEY"
curl -sS -X POST "$BASE/push/ari" \
-H "x-api-key: $KEY" -H "Content-Type: application/json" \
-d '[{"hotelId":"TEST001","startDate":"2025-12-01","endDate":"2025-12-07","pricingModel":"unit","data":[{"roomId":"R1","rates":[{"rateId":"BAR","price":100,"inventory":5,"stopSell":false}]}]}]'Expected: { "code": "200", "message": "ARI request saved successfully" }
Prerequisites
hotelId,roomId, andrateIdalready exist from Hotels list and Hotel rooms & rates- Valid
x-api-keyheader
Required fields (per array element)
| Field | Description |
|---|---|
hotelId | Supplier hotel code |
startDate | Start of range (YYYY-MM-DD recommended) |
endDate | End of range |
pricingModel | guest or unit (lowercase recommended) |
data | Rooms and rates to update |
Optional fields
| Field | Description |
|---|---|
exludedDays | Weekdays to exclude from the update: sun, mon, tue, wed, thu, fri, sat |
Per rate: inventory, stopSell, mealPlan, minLengthStay, maxLengthStay, minStayArrival, maxStayArrival, minAdvanceReservation, maxAdvanceReservation, cta, ctd |
The JSON key is
exludedDays(notexcludedDays). This matches the API contract.
Weekday exclusion example
Apply rates Monday–Friday only for June 2025:
{
"hotelId": "HOTEL_001",
"startDate": "2025-06-01",
"endDate": "2025-06-30",
"pricingModel": "unit",
"exludedDays": ["sat", "sun"],
"data": [
{
"roomId": "DBL",
"rates": [
{ "rateId": "BAR", "price": 120.0, "inventory": 5, "stopSell": false }
]
}
]
}Unit pricing
One price per room night (all guests on the room use the same nightly rate unless booking rules apply occupancy from static data):
[
{
"hotelId": "HOTEL_001",
"startDate": "2025-12-01",
"endDate": "2025-12-31",
"pricingModel": "unit",
"data": [
{
"roomId": "DBL",
"rates": [
{
"rateId": "BAR",
"price": 120.0,
"inventory": 8,
"stopSell": false,
"minLengthStay": 1,
"maxLengthStay": 14
}
]
}
]
}
]Guest pricing (example: 2 adults + 1 child)
Send separate rate lines per age bucket when pricingModel is guest:
[
{
"hotelId": "HOTEL_001",
"startDate": "2025-12-01",
"endDate": "2025-12-01",
"pricingModel": "guest",
"data": [
{
"roomId": "DBL",
"rates": [
{ "rateId": "BAR", "price": 60.0, "guests": 2, "ageCategory": "adult" },
{ "rateId": "BAR", "price": 30.0, "guests": 1, "ageCategory": "child" }
]
}
]
}
]Example nightly total if summed per bucket: (2 × 60) + (1 × 30) = 150.00. Confirm final booking math with your onboarding contact.
Inventory and stop sell
| Field | Effect |
|---|---|
stopSell: true | Rate closed for booking |
stopSell: false | Rate open |
inventory | Available room count to sell |
Always send price when updating rates.
Success response
{
"code": "200",
"message": "ARI request saved successfully"
}Common errors
| HTTP / message | Fix |
|---|---|
HotelID not found | Push hotel first |
RoomID not found / RateID not found | Push products first; check IDs match |
PricingModel should be either 'guest' or 'unit' | Use valid pricing model |
rates.guests is required when pricing model is per 'guest' | Add guests and ageCategory on guest model |
Operational notes
- No application rate limit is documented for ARI; push at least daily for active hotels.
- Re-posting the same data re-applies updates (no idempotency key).
- After changing webhook URLs or API keys, allow up to 5 minutes for cache refresh or retry after a service restart.