Channel Rates API
The Channel Rates API allows you to manage room availability, pricing, and stay restrictions for a specific hotel, room type, and rate plan across various distribution channels. It supports both date range-based and per-day updates, enabling flexible control over how inventory and rates are distributed.
The API also accommodates guest-based pricing and channel-specific configurations, making it suitable for dynamic and granular rate management across connected platforms.
Endpoint
POST

https://connect-sandbox.su-api.com/SUAPI/jservice/channel-rates
Attributes
hotelid
alphanumeric (Required)
The unique property ID as assigned by the provider upon creation of the property. Required existing hotel id to create rates for the room types.
Accepts alphanumeric values.
Space and Special characters are not allowed except Hyphen (" - ").
Maximum 20 characters allowed.
rooms
array (Required)
This is an array represents the detail of the room.
rooms
roomid
alphanumeric (Required)
The room ID / Listing ID as assigned by the provider.
Needs to be an active room in the STAAH system and if room is not available in STAAH then we will create on request.
roomid
,RoomID
,ListingID
&InvCode
defines the same field.Amount of elements possible within parent: Min: 1 Max: unbounded
Accepts alphanumeric values and hyphen ( - ).
Space and other special characters are not allowed. Maximum 20 characters allowed.
rates
array (Required)
IT provider's rate category ID which you are updating.
Rates to be updated need to be active in the STAAH system.
rates
from
datetime (Required)
Specifying a range in requests will update the date from and including the date specified.
Only current date to max up to 730 days in the future.
Format: YYYY-MM-DD
to
datetime (Required)
Specifying a range in requests will update the date until and not including the date specified.
Only current date to max up to 730 days in the future.
Format: YYYY-MM-DD
rate_id
string (Required)
Identifier of the rate plan (for example, "BAR", "NONREF").
channel_id
integer (Required)
Identifier of the distribution channel (OTA).
channel_connection_id
string (Optional)
Unique ID for the channel connection.
roomstosell
integer (Required)
Set the amount of rooms that can be sold by OTAs to this number.
Rate should not be specified when updating
roomstosell.
It cannot be a negative number.
Please note rate elements become optional when updating availability for a hotel.
prices
array (Required)
The price for the given room for the given date for the given rate category.
Price cannot be removed after a value has been set, cannot be a negative number.
closed
boolean (Optional)
If set to 1 (or 0), this room will be closed (or opened) for the given date for the given rate category. All other information (such as roomstosell
and price
) is preserved.
minimumstay
integer (Optional)
The minimum stay for the given room for the given date for the given rate category.
The minimumstay
element functions as a restriction. If a booking takes place on this day a minimum stay (for the whole booking) of this number of days is required.
Each day in a stay has a room and rate category ID associated with it. Each set of consecutive days with the same rate category ID in a stay, must comply with the minimum stay setting of each of those days in that set (as if it were a separate stay).
maximumstay
integer (Optional)
The maximum stay for the given room for the given date for the given rate category.
The maximumstay
element functions as a restriction. If a booking takes place on this day a maximum stay (for the whole booking) of this number of days is required.
Each day in a stay has a room and rate category ID associated with it. Each set of consecutive days with the same rate category ID in a stay, must comply with the maximum stay setting of each of those days in that set (as if it were a separate stay).
closedonarrival
boolean (Optional)
The closed on arrival setting (0 or 1). If set, the guest may not arrive in this room for the given room for the given date for the given rate category.
This restriction does not allow a reservation to be made when visitors want to arrive on the selected date. When the restriction is set to '0' for a certain date, guests are free to make a reservation with arrival on this date whereas a "1" will restrict guests to book rooms with this arrival date.
extraadultrate
double (Optional)
The price for the extra adult for the given date for the given rate category.
extraadultrate
cannot be removed after a value has been set, cannot be a negative number.
extrachildrate
double (Optional)
The price for the extra child for the given date for the given rate category.
extrachildrate
cannot be removed after a value has been set, cannot be a negative number.
minimumstaythrogh
integer (Optional)
The minimum stay through for the given room for the given date for the given rate category.
Properties set a policy requiring guests to stay a minimum number of nights during a specific period, from check-out for the given room and rate category. Example: A three-night minimumstaythrough
is set for August 28th. Any guest whose stay includes that day (August 28th) must select a check-out date of 3 days or more from August 28th.
maximumstaythrough
integer (Optional)
The maximum stay through for the given room for the given date for the given rate category.
Properties set a policy restricting guests to stay a maximum number of nights during a specific period, from check-out for the given room and rate category. Example: A fourteen-night maximumstaythrough
is set for August 28th. Any guest whose stay includes that day (August 28th) can only select a check-out date within 14 days from August 28th.
closedondeparture
boolean (Optional)
The closedondeparture
setting (0 or 1). If set, the guest may not depart from this room for the given room for the given date for the given rate category.
This restriction does not allow a reservation to be made when visitors want to depart on the selected date.
When the restriction is set to '0' for a certain date, guests are free to make a reservation with departure on this date whereas a "1" will restrict guests to book rooms with this departure date.
prices
number_of_guest
integer (Required)
Number of guests for which price is applied.
Needs to be non-negative integer and maximum 30.
value
integer (Required)
Price value for the given guest count.
Request
For date range
Allows you to update room availability, rates, and restrictions for a specific hotel, room type, and rate plan across a defined date range.
{
"hotelid": "KC",
"rooms": [
{
"room_id": "STD",
"rates": [
{
"from": "2025-05-28",
"to": "2025-05-29",
"rate_id": "BAR",
"channel_id": 19,
"roomstosell": 5,
"prices": [
{
"number_of_guest": 1,
"value": 100
},
{
"number_of_guest": 2,
"value": 200
}
],
"closed": 0,
"minimumstay": 1,
"maximumstay": 15,
"closedonarrival": 0,
"extraadultrate": 20,
"extrachildrate": 25,
"minimumstaythrough": 1,
"maximumstaythrough": 2,
"closedondeparture": 0
}
]
}
]
}
For single date
Allows you to set the room availability, pricing, and stay restrictions for a specific hotel, room, and rate plan on a per-day basis. It supports channel-specific rate distribution with guest-based pricing.
{
"hotelid": "KC",
"rooms": [
{
"room_id": "STD",
"rates": [
{
"value": "2025-05-28",
"rate_id": "BAR",
"channel_id": 19,
"roomstosell": 5,
"channel_connection_id": "523654",
"prices": [
{
"number_of_guest": 1,
"value": 100
},
{
"number_of_guest": 2,
"value": 200
}
],
"closed": 0,
"minimumstay": 1,
"maximumstay": 15,
"closedonarrival": 0,
"extraadultrate": 20,
"extrachildrate": 25,
"minimumstaythrough": 1,
"maximumstaythrough": 2,
"closedondeparture": 0
}
]
}
]
}
For multiple request with multiple date for same room:
{
"hotelid": "KC",
"rooms": [
{
"room_id": "STD",
"rates": [
{
"value": "2025-05-28",
"rate_id": "BAR",
"channel_id": 19,
"roomstosell": 5,
"channel_connection_id": "523654",
"prices": [
{
"number_of_guest": 1,
"value": 100
},
{
"number_of_guest": 2,
"value": 200
}
],
"closed": 0,
"minimumstay": 1,
"maximumstay": 15,
"closedonarrival": 0,
"extraadultrate": 20,
"extrachildrate": 25,
"minimumstaythrough": 1,
"maximumstaythrough": 2,
"closedondeparture": 0
},
{
"value": "2025-05-29",
"rate_id": "BAR",
"channel_id": 19,
"roomstosell": 5,
"channel_connection_id": "523654",
"prices": [
{
"number_of_guest": 1,
"value": 100
},
{
"number_of_guest": 2,
"value": 200
}
],
"closed": 0,
"minimumstay": 1,
"maximumstay": 15,
"closedonarrival": 0,
"extraadultrate": 20,
"extrachildrate": 25,
"minimumstaythrough": 1,
"maximumstaythrough": 2,
"closedondeparture": 0
},
{
"value": "2025-05-30",
"rate_id": "BAR",
"channel_id": 19,
"roomstosell": 5,
"channel_connection_id": "523654",
"prices": [
{
"number_of_guest": 1,
"value": 100
},
{
"number_of_guest": 2,
"value": 200
}
],
"closed": 0,
"minimumstay": 1,
"maximumstay": 15,
"closedonarrival": 0,
"extraadultrate": 20,
"extrachildrate": 25,
"minimumstaythrough": 1,
"maximumstaythrough": 2,
"closedondeparture": 0
},
{
"from": "2025-06-01",
"to": "2025-06-15",
"rate_id": "BAR",
"channel_id": 19,
"roomstosell": 5,
"channel_connection_id": "523654",
"prices": [
{
"number_of_guest": 1,
"value": 100
},
{
"number_of_guest": 2,
"value": 200
}
],
"closed": 0,
"minimumstay": 1,
"maximumstay": 15,
"closedonarrival": 0,
"extraadultrate": 20,
"extrachildrate": 25,
"minimumstaythrough": 1,
"maximumstaythrough": 2,
"closedondeparture": 0
}
]
}
]
}
For multiple request with diiferent room rate and different channels:
{
"hotelid": "KC",
"rooms": [
{
"room_id": "STD",
"rates": [
{
"value": "2025-05-28",
"rate_id": "BAR",
"channel_id": 19,
"roomstosell": 5,
"channel_connection_id": "523654",
"prices": [
{
"number_of_guest": 1,
"value": 100
},
{
"number_of_guest": 2,
"value": 200
}
]
}
]
},
{
"room_id": "DLX",
"rates": [
{
"value": "2025-05-29",
"rate_id": "BreakFastOnly",
"channel_id": 189,
"roomstosell": 5,
"closed": 0,
"minimumstay": 1,
"maximumstay": 15,
"closedonarrival": 0,
"extraadultrate": 20,
"extrachildrate": 25,
"minimumstaythrough": 1,
"maximumstaythrough": 2,
"closedondeparture": 0
}
]
},
{
"room_id": "STD",
"rates": [
{
"value": "2025-05-30",
"rate_id": "BAR",
"channel_id": 19,
"roomstosell": 5,
"channel_connection_id": "523654",
"prices": [
{
"number_of_guest": 1,
"value": 100
},
{
"number_of_guest": 2,
"value": 200
}
],
"closed": 0,
"minimumstay": 1,
"maximumstay": 15,
"closedonarrival": 0,
"extraadultrate": 20,
"extrachildrate": 25,
"minimumstaythrough": 1,
"maximumstaythrough": 2,
"closedondeparture": 0
}
]
},
{
"room_id": "RoomOnly",
"rates": [
{
"from": "2025-06-01",
"to": "2025-06-15",
"rate_id": "RP",
"channel_id": 19,
"roomstosell": 5,
"channel_connection_id": "523654",
"prices": [
{
"number_of_guest": 1,
"value": 100
},
{
"number_of_guest": 2,
"value": 200
}
],
"closed": 0,
"minimumstay": 1,
"maximumstay": 15,
"closedonarrival": 0,
"extraadultrate": 20,
"extrachildrate": 25,
"minimumstaythrough": 1,
"maximumstaythrough": 2,
"closedondeparture": 0
}
]
}
]
}
Response
Attributes
Status
string
Status of the request.
TicketId
string
The ticket id if the status of the request is success.
Success Response
{
"Status":"Success",
"TicketId":"174824274798589344913"
}
Last updated
Was this helpful?