Reservation Push
Aiosell POSTs reservation details to Staydeed when a booking is created, modified, or cancelled by an OTA.
POST
https://staydeed.com/api/aiosell/reservationsThis endpoint is hosted by Staydeed.
The action field selects the operation: book, modify, or cancel.
A cancel needs only action, hotelCode, channel, and bookingId.
Dates use YYYY-MM-DD; bookedOn is a YYYY-MM-DD HH:MM:SS timestamp.
Headers
| Name | Required | Example |
|---|---|---|
Content-Type | Yes | application/json |
Authorization | Yes | Basic <base64(user:pass)> |
Request body
Fields marked "book, modify" are required for those actions and not needed for `cancel`.
| Field | Type | Required | Description |
|---|---|---|---|
action | string | Yes | Operation type: book, modify, or cancel. |
hotelCode | string | Yes | Property identifier (the motel code). |
bookingId | string | Yes | OTA booking reference. |
channel | string | Yes | OTA channel name. |
cmBookingId | string | No | Channel manager booking id. |
bookedOn | string (timestamp) | No | Booking creation timestamp. |
checkin | string (YYYY-MM-DD) | book, modify | Check-in date. |
checkout | string (YYYY-MM-DD) | book, modify | Check-out date. |
segment | string | No | Booking segment. |
specialRequests | string | No | Guest special requests (free text). |
pah | boolean | No | Pay-at-hotel flag. |
amount | object | No | Pricing breakup (see below). |
amount.amountAfterTax | number | No | Total after tax. |
amount.amountBeforeTax | number | No | Total before tax. |
amount.tax | number | No | Tax amount. |
amount.currency | string | No | ISO currency code. |
amount.commission | number | No | OTA commission. |
amount.tcs | number | No | TCS amount. |
amount.tds | number | No | TDS amount. |
guest | object | No | Guest information (see below). |
guest.firstName | string | No | Guest first name. |
guest.lastName | string | No | Guest last name. |
guest.email | string | No | Guest email. |
guest.phone | string | No | Guest phone. |
guest.address | object | No | Guest address (line1, city, state, country, zipCode). |
rooms | array<Room> | book, modify | Room details for the booking. |
rooms[].roomCode | string | Yes | Room type identifier. |
rooms[].rateplanCode | string | No | Rate plan identifier. |
rooms[].guestName | string | No | Name of the room guest. |
rooms[].occupancy | object | No | { adults, children }. |
rooms[].prices | array | No | Per-night { date, sellRate } entries. |
creditCard | object | No | Virtual card details, when the OTA provides them. Card fields arrive encrypted; Staydeed stores them in an encrypted vault. |
Sample payload
{
"action": "book",
"hotelCode": "sandbox-pms",
"channel": "Booking.com",
"bookingId": "BDC5238846",
"cmBookingId": "AIOSELL0001",
"bookedOn": "2026-10-20 12:30:45",
"checkin": "2026-11-10",
"checkout": "2026-11-12",
"segment": "OTA",
"specialRequests": "Airport transfer required",
"pah": false,
"amount": {
"amountAfterTax": 15700,
"amountBeforeTax": 14000,
"tax": 1700,
"currency": "INR",
"commission": 1400,
"tcs": 0,
"tds": 0
},
"guest": {
"firstName": "Jane",
"lastName": "Doe",
"email": "jane@example.com",
"phone": "+10000000000",
"address": {
"line1": "1 Main Street",
"city": "Detroit",
"state": "MI",
"country": "US",
"zipCode": "48150"
}
},
"rooms": [
{
"roomCode": "suite",
"rateplanCode": "suite-d-cp",
"guestName": "Jane Doe",
"occupancy": {
"adults": 2,
"children": 0
},
"prices": [
{
"date": "2026-11-10",
"sellRate": 7000
},
{
"date": "2026-11-11",
"sellRate": 7000
}
]
}
]
}Responses
200Success
{
"success": true,
"message": "Reservation Updated Successfully"
}200Success
{
"success": true,
"message": "Reservation Modified Successfully"
}200Success
{
"success": true,
"message": "Reservation Cancelled Successfully"
}200Held for review (e.g. unmapped room code, no availability)
{
"success": false,
"message": "The room code is not mapped to a room type. Held for review by the property."
}401Missing or invalid Basic Auth credentials
{
"success": false,
"message": "Unauthorized"
}