Rate POST
Aiosell POSTs updated room rates to Staydeed for room types, rate plans, and dates.
POST
https://staydeed.com/api/ota/ratesThis endpoint is hosted by Staydeed. Rates are sent at (room, rateplan, date-range) grain.
The SAME endpoint also receives Rate Restrictions - there is no separate restrictions URL. See the Rate Restrictions page.
Dates use YYYY-MM-DD. Every request needs HTTP Basic Auth. Send Staydeed the hotelCode you were given at onboarding.
Headers
| Name | Required | Example |
|---|---|---|
Content-Type | Yes | application/json |
Authorization | Yes | Basic <base64(user:pass)> |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
hotelCode | string | Yes | Property identifier. |
updates | array<Update> | Yes | Rate update blocks (at least one). |
updates[].startDate | string (YYYY-MM-DD) | Yes | Inclusive start date. |
updates[].endDate | string (YYYY-MM-DD) | Yes | Inclusive end date; on or after startDate. |
updates[].rates | array<Rate> | Yes | Per (room, rateplan) rate entries. |
updates[].rates[].roomCode | string | Yes | Room type identifier. |
updates[].rates[].rateplanCode | string | Yes | Rate plan identifier. |
updates[].rates[].rate | number | Yes | Nightly rate in property currency (min 0). Optional only when restrictions is sent. |
Sample payload
{
"hotelCode": "sandbox-pms",
"updates": [
{
"startDate": "2026-11-10",
"endDate": "2026-11-12",
"rates": [
{
"roomCode": "executive",
"rateplanCode": "executive-d-ep",
"rate": 1849
},
{
"roomCode": "suite",
"rateplanCode": "suite-d-cp",
"rate": 2799
}
]
}
]
}Responses
200Success
{
"success": true,
"message": "Rates Updated Successfully"
}200Success
{
"success": true,
"message": "Rates Updated Successfully",
"warnings": [
"UNMAPPED_RATE_PLAN : suite / suite-d-xx"
]
}200Nothing could be applied
{
"success": false,
"message": "No rates applied",
"warnings": [
"UNMAPPED_RATE_PLAN : suite / suite-d-xx"
]
}404Unknown or disabled hotelCode
{
"success": false,
"message": "Unknown hotelCode"
}401Missing or invalid Basic Auth credentials
{
"success": false,
"message": "Unauthorized"
}