POST
Reservations.Add
Create a room reservation. This uses the existing reservation workflow because it handles availability rules, payments, channel booking ids, custom fields, room blocks, automation, and calendar side effects.
Permissions
- User must be logged in with a valid bearer token.
- Returned or changed records are limited by the user permissions, team access, folder access, and account settings.
Action
- Creates a Reservations record or sends the requested data after validation.
Push Service
No push is sent because this function only reads data or returns helper information.
Automation
No automation is run for this function.
Special Instructions
- Send the bearer token on protected calls with Authorization: Bearer YOUR TOKEN.
- Send parameters as POST body fields exactly as documented.
- Send date/time values in UTC Y-m-d H:i:s format when a date or datetime field is used.
Required Parameters
| Name | Type | Sample | Explanation |
|---|---|---|---|
room_idpost | int | 3710 | Room id to reserve. |
cust_idpost | int | 123 | Customer id for the reservation. |
start_datepost | date|datetime | 2026-07-20 | Reservation start date. Send UI dates as UTC-compatible Y-m-d or Y-m-d H:i:s. Send UTC date/time as Y-m-d H:i:s, for example 2026-07-20 10:00:00. The SDK converts user local Date/local datetime input to UTC before posting. |
end_datepost | date|datetime | 2026-07-22 | Reservation end date. Send UTC date/time as Y-m-d H:i:s, for example 2026-07-20 10:00:00. The SDK converts user local Date/local datetime input to UTC before posting. |
datepost | month | 2026-07 | Calendar month for the reservation, usually the start date month in Y-m. |
dayspost | int | 2 | Number of booked days/nights. Must be more than zero. |
book_typepost | string | nightly | Room booking type, such as nightly or daily. |
total_pricepost | number | 500 | Reservation total price. |
Optional Parameters
| Name | Type | Sample | What it gives |
|---|---|---|---|
notespost | string | Late check-in | Reservation notes. |
paid_statuspost | int | 0 | Payment state: 0 not paid, 1 paid, 2 partly paid. Paid/partly paid reservations require payment_method. |
payment_methodpost | string | cash | Payment method for paid/partly paid reservations. |
payment_notepost | string | Paid at desk | Payment note preserved with the reservation. |
discountpost | number | 0 | Reservation discount percentage/value used by the existing workflow. |
room_display_namepost | string | Daniel booking | Display title shown on the room calendar. |
room_row_idpost | int | 0 | Specific occupancy row when a room supports more than one concurrent booking. |
block_this_time_roompost | int | 0 | Set to 1 to block time instead of attaching a customer reservation. |
channelpost | string | direct | Booking source/channel such as direct, airbnb, or booking. |
channel_booking_idpost | string | ABC123 | External channel booking id for sync/idempotency. |
channel_listing_idpost | string | listing-1 | External listing id. |
channel_event_uidpost | string | ical-event-1 | External calendar event UID. |
Authentication
Send the bearer token returned by Login in the request header.
Authorization: Bearer YOUR TOKEN
Sample Request
{
"url": "\/app\/Reservations.Add",
"method": "POST",
"headers": {
"Authorization": "Bearer YOUR TOKEN"
},
"body": {
"room_id": "3710",
"cust_id": "123",
"start_date": "2026-07-20",
"end_date": "2026-07-22",
"date": "2026-07",
"days": "2",
"book_type": "nightly",
"total_price": "500"
},
"url_user": "https:\/\/{user}.bull36.com\/app\/Reservations.Add",
"url_domain": "https:\/\/{domain}\/app\/Reservations.Add"
}Endpoint
POST /app/Reservations.Add
POST https://{user}.bull36.com/app/Reservations.Add
POST https://{domain}/app/Reservations.AddSample Output
{
"success": 1,
"message": "Room book successfully",
"id": "88"
}JavaScript Example
const token = 'YOUR TOKEN';
const body = new URLSearchParams({
room_id: '3710',
cust_id: '123',
start_date: '2026-07-20',
end_date: '2026-07-22',
date: '2026-07',
days: '2',
book_type: 'nightly',
total_price: '500'
});
const res = await fetch('/app/Reservations.Add', {
method: 'POST',
headers: { Authorization: 'Bearer ' + token },
body
});
const data = await res.json();
console.log(data);Error Example
{
"success": 0,
"message": "Please add days"
}