A cron job runs automatically every hour to push reservation data (with booking status as Confirm or Cancel) to the partner's configured push-book webhook. The service fetches bookings, builds the standard reservation payload, and forwards it to the webhook URL.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Push booking runs automatically via a cron job every 1 hour. The service fetches bookings, builds the reservation payload, and forwards it to your configured push-book webhook. No manual API call is required. Authentication for the service uses the same API key as other webhook endpoints.
Below is the Request payload that Hotel Planet sends to the webhook url.
{
"hotelId": "hopper_13",
"reservations": {
"reservation": [
{
"reservation_datetime": "2025-02-18T16:14:54",
"propertyname": "IDOU New York",
"reservation_id": "55191",
"special_request": "Late check-in requested",
"totalamountaftertax": "120.00",
"totaltax": "10.00",
"currencycode": "USD",
"status": "Cancel",
"customer": {
"first_name": "nuitee",
"last_name": "travel"
},
"paymentcarddetail": {
"CardHolderName": "nuitee travel",
"CardType": "VI",
"ExpireDate": "01/2030",
"CardNumber": "4111111111111111",
"cvv": "123"
},
"room": [
{
"arrival_date": "2025-03-01",
"departure_date": "2025-03-02",
"room_id": "RMID56890",
"room_name": "Double Room",
"price": [
{
"date": "2025-03-01",
"rate_id": "RTID",
"rate_name": "RTID",
"amountaftertax": "120.00"
}
],
"first_name": "nuitee",
"last_name": "travel",
"taxes": [
{
"name": "VAT",
"value": "10.00"
}
],
"amountaftertax": "120.00",
"GuestCount": [
{
"AgeQualifyingCode": "10",
"Count": "2"
}
]
}
]
}
]
}
}Request body structure (internal request to your webhook)
When we call your webhook, the request body has this structure. All fields use string values unless noted.
Note: Payment Information: All reservations include Virtual Credit Card (VCC) details for payment.
| Path | Type | Description |
|---|---|---|
| Root | ||
hotelId | string | The unique property/hotel identifier (OTA hotel ID). IDs correspond to mapping established during onboarding.Hotels must match these values with their internal configuration. |
reservations | object | Container for reservation data. |
reservations.reservation | array | List of reservation objects. |
| reservation | ||
reservation_datetime | string | Date and time when the reservation was created. Format: YYYY-MM-DDTHH:mm:ss. |
propertyname | string | Name of the property. |
reservation_id | string | Unique identifier for the reservation. |
special_request | string | Special request or remarks attached to the reservation. |
totalamountaftertax | string | Total booking amount including tax. |
totaltax | string | Total tax amount for the reservation. |
currencycode | string | ISO currency code (e.g. "USD"). |
status | string | 2 possible values : 'Confirm' — A new reservation has been created or confirmed. The hotel should process and store the booking in their system. 'Cancel' — An existing reservation has been cancelled. The hotel should update the reservation status accordingly and stop further processing for the booking. |
| reservation.customer | object | Primary guest/customer details. |
customer.first_name | string | Guest first name. |
customer.last_name | string | Guest last name. |
| reservation.paymentcarddetail | object | Card details; Virtual Credit Card (VCC) details for the booking. The card provided is a virtual credit card issued for reservation payment. |
paymentcarddetail.CardHolderName | string | Name on the payment card. |
paymentcarddetail.CardType | string | Card type code (e.g. "VI" Visa, "MC" Mastercard). |
paymentcarddetail.ExpireDate | string | Card expiry (e.g. "01/2030"). |
paymentcarddetail.CardNumber | string | Card number. |
paymentcarddetail.cvv | string | Card security code. |
| reservation.room | array | Room stay(s) in the reservation. |
| room (each element) | ||
room.arrival_date | string | Check-in date. Format: YYYY-MM-DD. (For the current implementation, the arrival_date and departure_date will be the same for all rooms within a reservation. You may use the dates from the first room to determine the stay period.Additionally, there is no limit on the number of rooms included in a reservation, so your system should be able to process all rooms provided in the request.) |
room.departure_date | string | Check-out date. Format: YYYY-MM-DD. |
room.room_id | string | Room type / OTA room ID. IDs correspond to mapping established during onboarding. Hotels must match these values with their internal configuration. |
room.room_name | string | Name of the room type. |
room.price | array | Per-night or per-date price breakdown. |
room.first_name | string | Guest first name for this room. |
room.last_name | string | Guest last name for this room. |
room.taxes | array | Tax breakdown for the room. |
room.taxes[].name | string | Tax name (e.g. "VAT"). |
room.taxes[].value | string | Tax amount. |
room.amountaftertax | string | Total amount after tax for this room. |
room.GuestCount | array | Guest counts by age qualifying code. |
room.GuestCount[].AgeQualifyingCode | string | Age code (e.g. "10" = adult, "8" = child). |
room.GuestCount[].Count | string | Number of guests in that category. |
| room.price (each element) | Note: We only support same rateplan for given dates based on checkin and checkout. We dont support different rateplans to be considered during the different dates. So, the rateid and ratename will be same but with different daily prices we have for the whole stay dates. | |
price[].date | string | Date for the rate. Format: YYYY-MM-DD. |
price[].rate_id | string | Rate plan / OTA rate ID. IDs correspond to mapping established during onboarding.Hotels must match these values with their internal configuration. |
price[].rate_name | string | Rate plan name. |
price[].amountaftertax | string | Each element represents per-date pricing for the stay. |
| Amounts are inclusive of taxes unless specified otherwise. |
Response
Responses include a requestId field for tracing and bookingId which is nuitee's bookingId sent in the request.
- 200 – The reservation payload was successfully built and forwarded to your push-book webhook. The response body and status code are those returned by your webhook, plus
requestId. - 401 – Unauthorized: invalid or missing API key.
- 502 – Bad gateway: the service could not fetch booking details (e.g. booking not found or upstream error).
- 500 – Internal server error: failed to build the payload or forward to the webhook.
Error responses format expected from Partner's weekhook url:
{
"code": 500,
"message": "An unexpected error occurred",
"requestId": "b47ead9ed7c8d18243bcd68e6260062e",
"bookingId": "123456"
}The payload sent to your webhook is the same structure as described in Push booking (e.g. hotelId, reservations.reservation with special_request, guest, room, price, and payment details) and expects the given response format from the webhook url.