REST API reference
SiteMinder API
12 endpoints for SiteMinder. Each one is a POST with a JSON body, called with your API key.
- Base URL
- https://cotlet.dev/api/v1/siteminder
- Connects with
- Your own SiteMinder Platform account (Admin or a General user with access to the areas you use)
- Integration page
- SiteMinder
| Endpoint | Access | Description |
|---|---|---|
| list_room_rates | read | Room types and their room rates, with derived rates and the channels each one is mapped to. |
| list_channels | read | Connected booking channels with status and the data each channel rate supports. |
| get_inventory | read | The inventory grid for a date range: rates, availability and restrictions per room rate and channel. |
| list_reservations | read | Reservations with channel, status, dates, room and total. Searches the last 548 days. |
| get_reservation | read | One reservation: stay, rooms, rate plan, channel, status history and payment summary. No guest contact or card numbers. |
| get_booking_performance | read | Room and total revenue, reservations, room nights, ADR, ALOS, lead time and cancellations, split by channel, market, room or rate. |
| get_pace_report | read | Reservations, revenue, room nights and ADR for a period, compared with the same period last year. |
| get_rate_parity | read | Your rates on Agoda, Booking.com, Expedia, HRS and Direct Booking by stay date. Needs SiteMinder Plus. |
| update_rates | write | Set the rate for room rates or channel rates over a date range. Goes live on mapped channels. |
| update_availability | write | Set the number of rooms to sell per room type over a date range, for all channels. |
| update_restrictions | write | Set stop sell, minimum or maximum length of stay, closed to arrival or closed to departure. |
| close_dates | write | Stop sell the room rates you pick, or a whole channel, for a date range. |
List room rates
readPOST https://cotlet.dev/api/v1/siteminder/list_room_rates
Returns every room type with its room rates. A derived rate shows the base rate it follows; SiteMinder does not let you set derived rates by hand. Use the IDs from here in get_inventory and the update tools.
Parameters
No parameters.
Request
curl -X POST https://cotlet.dev/api/v1/siteminder/list_room_rates \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("siteminder", "list_room_rates") const result = await cotlet.call('siteminder', 'list_room_rates'); cotlet call siteminder list_room_rates Example response
{
"room_types": [
{
"room_type_id": "rt_1021",
"name": "Standard Double",
"room_rates": [
{
"room_rate_id": "rr_48210",
"name": "Standard Double Flexible",
"type": "base",
"channels": [
"Booking.com",
"Expedia",
"Direct Booking"
]
}
]
},
{
"room_type_id": "rt_1022",
"name": "Deluxe King",
"room_rates": [
{
"room_rate_id": "rr_48213",
"name": "Deluxe King Flexible",
"type": "base",
"channels": [
"Booking.com",
"Expedia",
"Agoda",
"Direct Booking"
]
},
{
"room_rate_id": "rr_48214",
"name": "Deluxe King Non-refundable",
"type": "derived",
"derived_from": "rr_48213",
"channels": [
"Booking.com",
"Expedia"
]
}
]
}
]
} List channels
readPOST https://cotlet.dev/api/v1/siteminder/list_channels
Returns the channels connected to the property, including Direct Booking, with their status. For each channel rate it lists the data SiteMinder can send: rates, availability and the restrictions. Not every channel rate supports every type, so check here before a restriction change.
Parameters
No parameters.
Request
curl -X POST https://cotlet.dev/api/v1/siteminder/list_channels \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("siteminder", "list_channels") const result = await cotlet.call('siteminder', 'list_channels'); cotlet call siteminder list_channels Example response
{
"channels": [
{
"channel": "Booking.com",
"status": "enabled",
"supports": [
"rates",
"availability",
"stop_sell",
"min_los",
"max_los",
"cta",
"ctd"
]
},
{
"channel": "Agoda",
"status": "enabled",
"supports": [
"rates",
"availability",
"stop_sell",
"min_los"
]
},
{
"channel": "Direct Booking",
"status": "enabled",
"supports": [
"rates",
"availability",
"stop_sell",
"min_los",
"max_los",
"cta",
"ctd"
]
}
]
} Get inventory
readPOST https://cotlet.dev/api/v1/siteminder/get_inventory
Returns what the inventory grid shows, one row per date: rate, availability and restrictions for each room rate. Pass channel to see the values sent to one channel instead. SiteMinder shows only today and future dates here. A dash in the grid, returned as null, means the channel rate does not support that data.
Parameters
| Name | Type | Description |
|---|---|---|
| from required | date | First date of the range. Today or later. |
| to required | date | Last date of the range. |
| room_type_ids | string[] | Only these room types. Default: all. |
| channel | string | Show channel rates for one channel. Default: room rates. |
Request
curl -X POST https://cotlet.dev/api/v1/siteminder/get_inventory \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"from":"2026-10-01","to":"2026-10-01"}' result = client.call("siteminder", "get_inventory", {"from":"2026-10-01","to":"2026-10-01"}) const result = await cotlet.call('siteminder', 'get_inventory', {"from":"2026-10-01","to":"2026-10-01"}); cotlet call siteminder get_inventory --data '{"from":"2026-10-01","to":"2026-10-01"}' Example response
{
"room_rate_id": "rr_48213",
"channel": null,
"dates": [
{
"date": "2026-12-04",
"rate": "159.00",
"availability": 4,
"stop_sell": false,
"min_los": 1,
"cta": false,
"ctd": false
},
{
"date": "2026-12-05",
"rate": "159.00",
"availability": 2,
"stop_sell": false,
"min_los": 2,
"cta": false,
"ctd": false
}
]
} List reservations
readPOST https://cotlet.dev/api/v1/siteminder/list_reservations
Returns reservations that match your filters, with booking reference, channel, status, stay dates, room and total. SiteMinder searches only reservations created or checked out within the last 548 days. Guest email, phone and card details are not returned. Pass booking_reference to get_reservation for the full record.
Parameters
| Name | Type | Description |
|---|---|---|
| date_type | enum | booked_on, check_in, check_out or cancelled_on. Default: booked_on. |
| from | date | Start of the date range. |
| to | date | End of the date range. |
| status | enum | booked, modified or cancelled. Default: all. |
| channel | string | Only reservations from this channel. |
| guest_last_name | string | Guest last name. |
| pms_delivery_status | enum | pending, delivered or failed. Default: all. |
| limit | integer | Page size. Default: 50. |
| cursor | string | Next page cursor from the previous call. |
Request
curl -X POST https://cotlet.dev/api/v1/siteminder/list_reservations \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("siteminder", "list_reservations") const result = await cotlet.call('siteminder', 'list_reservations'); cotlet call siteminder list_reservations Example response
{
"reservations": [
{
"booking_reference": "4830217655",
"channel": "Booking.com",
"status": "booked",
"check_in": "2026-10-12",
"check_out": "2026-10-14",
"nights": 2,
"room_type": "Standard Double",
"guests": 2,
"total": {
"amount": "318.00",
"currency": "EUR"
},
"guest_last_name": "Rossi",
"pms_delivery": "delivered"
},
{
"booking_reference": "BBN-BB0000412907",
"channel": "Direct Booking",
"status": "booked",
"check_in": "2026-10-12",
"check_out": "2026-10-13",
"nights": 1,
"room_type": "Deluxe King",
"guests": 1,
"total": {
"amount": "172.00",
"currency": "EUR"
},
"guest_last_name": "Lindqvist",
"pms_delivery": "pending"
}
],
"next_cursor": null
} Get reservation
readPOST https://cotlet.dev/api/v1/siteminder/get_reservation
Returns one reservation by booking reference: status and the time it last changed, stay dates and length, estimated arrival time, room and number of guests, rate plan, total rate and the channel, with the secondary source such as Hotels.com via Expedia where SiteMinder shows one. SiteMinder shows guest email, phone and card details only on a trusted device, so they are not returned.
Parameters
| Name | Type | Description |
|---|---|---|
| booking_reference required | string | Booking reference from list_reservations. |
Request
curl -X POST https://cotlet.dev/api/v1/siteminder/get_reservation \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"booking_reference":"booking reference"}' result = client.call("siteminder", "get_reservation", {"booking_reference":"booking reference"}) const result = await cotlet.call('siteminder', 'get_reservation', {"booking_reference":"booking reference"}); cotlet call siteminder get_reservation --data '{"booking_reference":"booking reference"}' Example response
{
"booking_reference": "4830217655",
"channel": "Booking.com",
"status": "booked",
"status_changed_at": "2026-10-02T14:20:00Z",
"check_in": "2026-10-12",
"check_out": "2026-10-14",
"nights": 2,
"estimated_arrival": "15:00",
"rooms": [
{
"room_type": "Standard Double",
"room_rate": "Standard Double Flexible",
"guests": 2
}
],
"total": {
"amount": "318.00",
"currency": "EUR"
},
"pms_delivery": "delivered"
} POST https://cotlet.dev/api/v1/siteminder/get_booking_performance
Returns the Insights > Booking performance numbers for a period: room revenue, total revenue, reservations after cancellations, room nights, average lead time, ADR, average length of stay and cancelled reservations, plus the breakdown you ask for. Revenue in other currencies is converted to your default currency at xe.com rates. With date_basis stay_date, total revenue is not returned and room nights count only the chosen period.
Parameters
| Name | Type | Description |
|---|---|---|
| from required | date | First date of the range. Today or later. |
| to required | date | Last date of the range. |
| date_basis | enum | booked_on or stay_date. Default: booked_on. |
| breakdown | enum | channel_mix, source_market, room_types or rate_plans. Default: channel_mix. |
Request
curl -X POST https://cotlet.dev/api/v1/siteminder/get_booking_performance \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"from":"2026-10-05","to":"2026-10-11","date_basis":"booked_on","breakdown":"channel_mix"}' result = client.call("siteminder", "get_booking_performance", {"from":"2026-10-05","to":"2026-10-11","date_basis":"booked_on","breakdown":"channel_mix"}) const result = await cotlet.call('siteminder', 'get_booking_performance', {"from":"2026-10-05","to":"2026-10-11","date_basis":"booked_on","breakdown":"channel_mix"}); cotlet call siteminder get_booking_performance --data '{"from":"2026-10-05","to":"2026-10-11","date_basis":"booked_on","breakdown":"channel_mix"}' Example response
{
"from": "2026-09-01",
"to": "2026-09-30",
"date_basis": "booked_on",
"currency": "EUR",
"room_revenue": "42500.00",
"total_revenue": "45000.00",
"reservations": 212,
"cancelled_reservations": 18,
"room_nights": 500,
"avg_lead_time_days": 21.4,
"adr": "90.00",
"alos": 2.36,
"channel_mix": [
{
"channel": "Booking.com",
"reservations": 95,
"room_nights": 225,
"room_revenue": "19500.00"
},
{
"channel": "Expedia",
"reservations": 55,
"room_nights": 135,
"room_revenue": "11500.00"
},
{
"channel": "Direct Booking",
"reservations": 45,
"room_nights": 105,
"room_revenue": "9000.00"
},
{
"channel": "Agoda",
"reservations": 17,
"room_nights": 35,
"room_revenue": "2500.00"
}
]
} Get pace report
readPOST https://cotlet.dev/api/v1/siteminder/get_pace_report
Returns the Insights > Pace numbers: reservations, reservation revenue (nightly room rates, without extras and card surcharges), room nights and ADR for the period and for last year, with the change in percent. The default period is the next 30 days; SiteMinder shows one year of forward-looking pace data. Source markets are included.
Parameters
| Name | Type | Description |
|---|---|---|
| from | date | Start of the period. Default: today. |
| to | date | End of the period. Default: 30 days from today. |
Request
curl -X POST https://cotlet.dev/api/v1/siteminder/get_pace_report \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("siteminder", "get_pace_report") const result = await cotlet.call('siteminder', 'get_pace_report'); cotlet call siteminder get_pace_report Example response
{
"from": "2026-10-12",
"to": "2026-11-10",
"currency": "EUR",
"this_year": {
"reservations": 148,
"revenue": "28400.00",
"room_nights": 341,
"adr": "83.28"
},
"last_year": {
"reservations": 131,
"revenue": "25100.00",
"room_nights": 302,
"adr": "83.11"
},
"change_percent": {
"reservations": 13,
"revenue": 13.1,
"room_nights": 12.9,
"adr": 0.2
},
"source_markets": [
{
"country": "DE",
"room_nights": 96
},
{
"country": "GB",
"room_nights": 74
}
]
} Get rate parity
readPOST https://cotlet.dev/api/v1/siteminder/get_rate_parity
Returns the Insights > Rate parity grid: your rate on each of the five channels for each stay date, with a flag for channels below your Direct Booking rate. A cell can hold MLOS (a minimum stay applies), SOLD (no availability) or N/A instead of a rate. Dates reach 30 days ahead, or 90 with Dynamic Revenue Plus. A refresh times out after about two minutes; call again for dates that did not load. Without SiteMinder Plus the call fails with a plan error.
Parameters
| Name | Type | Description |
|---|---|---|
| from required | date | First date of the range. Today or later. |
| to required | date | Last date of the range. |
| nights | integer | 1 to 7. Default: 1. |
| guests | integer | 1 or 2. Default: 2. |
| include_taxes | boolean | Fully inclusive rates instead of base rates. Default: false. |
Request
curl -X POST https://cotlet.dev/api/v1/siteminder/get_rate_parity \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"from":"2026-10-01","to":"2026-10-01"}' result = client.call("siteminder", "get_rate_parity", {"from":"2026-10-01","to":"2026-10-01"}) const result = await cotlet.call('siteminder', 'get_rate_parity', {"from":"2026-10-01","to":"2026-10-01"}); cotlet call siteminder get_rate_parity --data '{"from":"2026-10-01","to":"2026-10-01"}' Example response
{
"nights": 1,
"guests": 2,
"include_taxes": false,
"currency": "EUR",
"dates": [
{
"date": "2026-10-17",
"rates": {
"Agoda": "142.00",
"Booking.com": "142.00",
"Expedia": "138.00",
"HRS": "142.00",
"Direct Booking": "142.00"
},
"below_direct": [
"Expedia"
]
},
{
"date": "2026-10-18",
"rates": {
"Agoda": "149.00",
"Booking.com": "149.00",
"Expedia": "MLOS",
"HRS": "149.00",
"Direct Booking": "149.00"
},
"below_direct": []
}
]
} POST https://cotlet.dev/api/v1/siteminder/update_rates
Sets one nightly rate for the room rates you list, on all mapped channels or only the channels you name. Derived rates cannot be set; they follow their base rate by their own rules. Channels receive updates only inside their maximum update period. If a two-way PMS, RMS or CRS sends rates to SiteMinder, it overwrites this change. Large updates can take a few minutes. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| room_rate_ids required | string[] | Room rate IDs from list_room_rates. |
| from required | date | First date of the range. Today or later. |
| to required | date | Last date of the range. |
| rate required | string | New nightly rate, as a decimal in the property currency. |
| channels | string[] | Only these channels. Default: the room rate for all mapped channels. |
| days_of_week | string[] | Only these weekdays (mon, tue, wed, thu, fri, sat, sun). Default: all days. |
Request
curl -X POST https://cotlet.dev/api/v1/siteminder/update_rates \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"room_rate_ids":["rr_48213"],"from":"2026-12-05","to":"2026-12-07","rate":"236.00","days_of_week":["fri"]}' result = client.call("siteminder", "update_rates", {"room_rate_ids":["rr_48213"],"from":"2026-12-05","to":"2026-12-07","rate":"236.00","days_of_week":["fri"]}) const result = await cotlet.call('siteminder', 'update_rates', {"room_rate_ids":["rr_48213"],"from":"2026-12-05","to":"2026-12-07","rate":"236.00","days_of_week":["fri"]}); cotlet call siteminder update_rates --data '{"room_rate_ids":["rr_48213"],"from":"2026-12-05","to":"2026-12-07","rate":"236.00","days_of_week":["fri"]}' Example response
{
"status": "updated",
"room_rates": 1,
"dates": 8,
"channels": [
"Booking.com",
"Expedia",
"Agoda",
"Direct Booking"
],
"derived_rates_updated": 1,
"skipped": []
} POST https://cotlet.dev/api/v1/siteminder/update_availability
Sets rooms available per night for a room type. SiteMinder manages availability at room type level, so it applies to every channel; to limit one channel, use close_dates or update_restrictions. Availability 0 closes the whole room type and all its rates. If a two-way PMS, RMS or CRS sends availability to SiteMinder, it overwrites this change. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| room_type_ids required | string[] | Room type IDs from list_room_rates. |
| from required | date | First date of the range. Today or later. |
| to required | date | Last date of the range. |
| rooms required | integer | Rooms available per night. |
| days_of_week | string[] | Only these weekdays (mon, tue, wed, thu, fri, sat, sun). Default: all days. |
Request
curl -X POST https://cotlet.dev/api/v1/siteminder/update_availability \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"room_type_ids":["room type ids"],"from":"2026-10-01","to":"2026-10-01","rooms":1}' result = client.call("siteminder", "update_availability", {"room_type_ids":["room type ids"],"from":"2026-10-01","to":"2026-10-01","rooms":1}) const result = await cotlet.call('siteminder', 'update_availability', {"room_type_ids":["room type ids"],"from":"2026-10-01","to":"2026-10-01","rooms":1}); cotlet call siteminder update_availability --data '{"room_type_ids":["room type ids"],"from":"2026-10-01","to":"2026-10-01","rooms":1}' Example response
{
"status": "updated",
"room_types": 1,
"dates": 14,
"rooms": 6,
"channels": "all"
} POST https://cotlet.dev/api/v1/siteminder/update_restrictions
Sets the restrictions you pass for the room rates and dates you give, on all mapped channels or only the channels you name. Set stop_sell, cta or ctd to false to remove them. Not every channel rate supports every restriction; unsupported ones are listed under skipped. A connected two-way PMS, RMS or CRS overwrites restrictions set in SiteMinder. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| room_rate_ids required | string[] | Room rate IDs from list_room_rates. |
| from required | date | First date of the range. Today or later. |
| to required | date | Last date of the range. |
| restrictions required | object | Any of stop_sell, cta, ctd (boolean), min_los, max_los (integer). |
| channels | string[] | Only these channels. Default: all mapped channels. |
| days_of_week | string[] | Only these weekdays (mon, tue, wed, thu, fri, sat, sun). Default: all days. |
Request
curl -X POST https://cotlet.dev/api/v1/siteminder/update_restrictions \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"room_rate_ids":["rr_48213","rr_48214"],"from":"2026-12-24","to":"2026-12-26","restrictions":{"cta":true,"min_los":3}}' result = client.call("siteminder", "update_restrictions", {"room_rate_ids":["rr_48213","rr_48214"],"from":"2026-12-24","to":"2026-12-26","restrictions":{"cta":True,"min_los":3}}) const result = await cotlet.call('siteminder', 'update_restrictions', {"room_rate_ids":["rr_48213","rr_48214"],"from":"2026-12-24","to":"2026-12-26","restrictions":{"cta":true,"min_los":3}}); cotlet call siteminder update_restrictions --data '{"room_rate_ids":["rr_48213","rr_48214"],"from":"2026-12-24","to":"2026-12-26","restrictions":{"cta":true,"min_los":3}}' Example response
{
"status": "updated",
"room_rates": 2,
"dates": 3,
"channels": [
"Booking.com",
"Expedia",
"Direct Booking"
],
"skipped": [
{
"channel": "Agoda",
"reason": "CTA not supported by this channel rate"
}
]
} POST https://cotlet.dev/api/v1/siteminder/close_dates
Applies a stop sell for the dates you give: to every room rate, to the room rates you pick (all their channel rates close), or to one channel. Other rates and channels stay open. To reopen, call update_restrictions with stop_sell set to false. A connected two-way PMS, RMS or CRS overwrites stop sells set in SiteMinder. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| from required | date | First date of the range. Today or later. |
| to required | date | Last date of the range. |
| room_rate_ids | string[] | Only these room rates. Default: all. |
| channels | string[] | Close only these channels. Default: all mapped channels. |
Request
curl -X POST https://cotlet.dev/api/v1/siteminder/close_dates \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"from":"2026-10-01","to":"2026-10-01"}' result = client.call("siteminder", "close_dates", {"from":"2026-10-01","to":"2026-10-01"}) const result = await cotlet.call('siteminder', 'close_dates', {"from":"2026-10-01","to":"2026-10-01"}); cotlet call siteminder close_dates --data '{"from":"2026-10-01","to":"2026-10-01"}' Example response
{
"status": "closed",
"room_rates": 2,
"dates": 8,
"channels": [
"Booking.com",
"Expedia",
"Direct Booking"
]
}