{
"propertyId": "2177",
"roomTypes": [{
"roomTypeName": "Ocean View King",
"ratePlans": [{
"ratePlanName": "Non-refundable saver",
"rates": [{
"date": "2026-11-16",
"rate": 187.00,
"ratePrePromo": 220.00
}, …4 more nights]
}]
}]
}
Central Reservation System API
Your booking experience. Our reservation engine.
For hotel groups and rental managers building their own sites, apps and reservation desks, and for the booking channels that sell their rooms. One API searches the portfolio, prices the stay in the guest’s language and currency, and books it into the same back office as every OTA booking.

- The room, by name and id
- Every rate plan that can sell the stay
- The price before the promotion, so you can show the saving
Our hosted booking site for Marivela Beach Resort, on the same engine as the API. The response is the documented shape, with the values on the screen.
The CRS API in five facts
- 10 endpoints, JSON over HTTPS
- One token for every property on your channel
- The engine our own booking engine runs on
- Content in each guest’s language, prices in their currency
- $0 integration fees
One booking, from the first search to the hotel’s PMS
Your site, app or desk asks. Our engine answers with live offers, checks them again at booking, then delivers the booking like any other. Six steps, one reservation.
Search
propertysearchSearch the whole portfolio in one call
Send dates, a currency and a language, and narrow by organization, a place and radius, or a property name. Every property that can sell those dates comes back with its rooms and rates, in the same shape as a single-property offer. Leave the dates out for the property list.
- Search everything, or one destination
- Every home that can sell the dates
- Each result carries its rates
RequestPOST /api/v3/propertysearch { "arrivalDate": "2026-12-04", "departureDate": "2026-12-07", "numberOfAdults": 4, "currencyCode": "USD", "language": "en", "orgIds": [7009] }
Our hosted site for a group of ten mountain homes: one search, every home that can sell the dates. Offer
bookingsearchbookingsearchaddonsEvery room, every rate, and the extras
bookingsearchreturns each room type with every rate plan that can sell the stay: each night’s rate, the price before any promotion, fees, taxes and the booking policy.bookingsearchaddonslists the extras for the same stay, each priced its own way.- Per person, per night
- Per person
- Chosen by guests or quantity
ResponsePOST /api/v3/bookingsearchaddons { "successful": true, "addOns": [{ "addOnName": "Breakfast on the terrace", "rate": 32.00, "rateType": 4 }, { "addOnName": "Half-day snorkel trip with sea turtles", "rate": 95.00, "rateType": 3 }, …] }
Marivela’s extras for the same stay, on its hosted site. Price
bookcheckPrice the cart before anyone pays
Send the stay with one rate row naming the rate plan.
bookcheckfills in every night’s rate, the fee and tax lines and the totals, and books nothing. Call it again whenever the cart changes.- Each night against its price before the promotion
- The cleaning fee, as its own line
- The totals, before and after tax
ResponsePOST /api/v3/bookcheck { "successful": true, "reservation": { "roomTypes": [{ "rates": [{ "ratePlanId": "2", "date": "2026-11-16", "rate": 187.00, "ratePrePromo": 220.00 }, …4 more nights], "addOns": [{ "name": "Cleaning Fee", "type": 2, "rate": 25.00, "quantity": 5 }] }], "addOns": [{ "name": "Sales Tax", "type": 1, "rate": 79.26 }], "totalBeforeTax": 1132.25, "totalAfterTax": 1211.51 } }
The cart for the same stay: the promotion, the cleaning fee and sales tax, priced. Book
bookReservation
12563307Book it, or be told why not
Send exactly what
bookcheckreturned, with the guest. The engine checks availability, rates and restrictions again and re-totals the stay. If someone else took the last room or the price moved, it refuses with code 3 instead of overselling, and nothing is booked.- Where it came from: here our booking engine, for you your channel
- Status, totals and room type
- Every night’s rate and rate plan
HTTP 200POST /api/v3/book
{ "successful": true, "messages": [], "reservationId": "12563307" }HTTP 200POST /api/v3/book
{ "successful": false, "reservationId": "", "messages": [{ "code": "3", "message": "BookingAvailabilityChanged", "messageType": "Error" }] }
A booking-engine reservation, as the hotel sees it. An API booking is the same record, with your channel as its source. Deliver
Reservation
12563307It lands where the hotel already works
The booking appears in the property’s reservations next to Booking.com, Expedia and every other channel. ChannelRUSH sends it to the hotel’s PMS and its reservation emails, with a delivery status the hotel can check and resend. The room comes off every other channel, and the portfolio reports count the booking.
- Every channel’s bookings, side by side
- Bookings from our engine. Yours list the same way, under your channel
- History, email and PMS delivery for every booking
Example: how your booking lists 12563307NewChannelRUSH CRS-> Your channelMarivela Beach ResortHistory | Email | PMS
Seeded bookings at a demo property: Expedia and Booking.com next to our booking engine’s. Change
bookcancelreservationsReservation
12563307Change it, cancel it, read it back
To change a booking, send the whole reservation to
bookagain with status 1. To cancel, send status 2 or callcancel; cancelling twice is safe.reservationsreturns one booking by id or the feed for your channel, and webhooks keep your copy current.- The changed booking, as the hotel sees it
- Its status: modification
ChangePOST /api/v3/book { "reservation": { "reservationId": "12563307", "status": 1, …the whole reservation, as changed } }CancelGET /api/v3/cancel/2177/12563307
A modified booking-engine reservation: the hotel sees the new version.
Documented request and response shapes, not live captures, with the values on the screens. The screens are our hosted booking sites and the ChannelRUSH back office, on the same engine as the API.
Tell us what you’re buildingWhat your API reads, the hotel sets once
Rooms, rates, policies, promotions and content live in the CRS back office. Your site reads them through the API, and the hotel’s own booking engine and every channel read the same settings.
Read bybookingsearchbookcheckbook
Your ids, on the hotel’s CRS channel
propertyId, roomTypeId and ratePlanId are ChannelRUSH’s ids. The hotel sees them on its CRS channel, with the channel’s own credentials and, if it wants one, a markup for that channel.

- The channel’s own credentials
- propertyId
- roomTypeId
- ratePlanId
Read bysettings
The terms partner sites read
Each rate plan’s booking policy comes with settings: what is due when, what cancelling costs, whether to ask for a card, and the hotel’s own notes for partner sites, per language.

- Whether your site asks for a card
- What cancelling costs, worded for guests
- The hotel’s notes for partner sites, per language
Every guest’s language and currency
settings and every search take a language and return the content the Hotel CMS manages for it. Send the guest’s currency and the prices come back converted.
GET /api/v3/settings/2177/de"currencyCode": "EUR"

GET /api/v3/settings/2177/es"currencyCode": "MXN"

And the rest of the back office: portfolio reports count every API booking, the AI assistant answers questions about any reservation, and guest messaging and reviews sit in the same login.
See the whole CRSTwo ways in
Build for your own portfolio, or sell rooms at hotels that work with you.
Hotel groups and rental managers
Your own booking, across the portfolio
A brand or group site with search across every property, a mobile app, a reservations desk, a site for one destination or sub-brand.
- Before
- A booking engine per property, a group site that links out, and a call centre typing bookings into each hotel’s system.
- With ChannelRUSH
- One API answers for every property in every language, and every booking lands in the same back office as the OTAs’.
- Search the whole portfolio in one call
- The same rates, policies and promotions as the hotels’ own booking engine
- Every booking in the hotel’s reservations and PMS
Booking channels and points of sale
You generate bookings
Agencies, wholesalers, travel and metasearch sites and corporate booking tools: sell rooms at hotels that work with you, with live rates and availability.
- Before
- Rates by email, availability by phone, bookings typed in at the front desk.
- With ChannelRUSH
- Your own channel and token. Each hotel adds you, and your bookings go straight into its system, Powered by ChannelRUSH.
- Content in each language you sell in
- The hotel’s rates, or its own rates for your channel
- Your name on every booking in the hotel’s back office
Bearer One token- Hotel A
- Hotel B
- Hotel C
The API reference
JSON over HTTPS, camelCase, with enums as numbers. Ten endpoints in four groups, on a test server with its own live reference, and on production at crs.channelrush.net.
Ten endpoints
Settings & content
- GET
/api/v3/connectioncheck - Check your token and connection
- GET
/api/v3/settings/{propertyId}/{language} - A property’s content, rooms, rate plans, policies, fees and taxes, in one language
Availability
- POST
/api/v3/ari - Rates, availability and restrictions by day, for your own cache or calendar
Booking
- POST
/api/v3/propertysearch - Search the portfolio for a stay, or list its properties
- POST
/api/v3/bookingsearch - Every room and rate plan that can sell a stay at one property
- POST
/api/v3/bookingsearchaddons - The extras for a stay
- POST
/api/v3/bookcheck - Price a cart without booking it
- POST
/api/v3/book - Create, change (status 1) or cancel (status 2) a reservation
- GET
/api/v3/cancel/{propertyId}/{reservationId} - Cancel a reservation by id
Reservations
- POST
/api/v3/reservations - One reservation by id, or the feed for your channel
- One token per channel
- Your token covers every property that adds your channel. Send it as a bearer token from your server: the API is server-to-server only.
- Success is in the body
- A business outcome is HTTP 200 with successful and messages. Code 3 means availability or price changed, so price the cart again.
- Your part as the point of sale
- Ask for the last name and postal code before showing a booking, show the API’s numbers, and handle code 3.
Specs and tools
- CRS API guide (help center)
- Interactive reference on the test server (Swagger UI)Choose V3 in its definition list.
- The same reference in ReDoc
The booking sequence
propertysearchsettingsFind properties and load their contentbookingsearchbookingsearchaddonsShow rooms, rates and extrasbookcheckPrice the cart, again on every changebookBook what was priced- Saved, sent to the PMS and the hotel’s emails, availability adjusted
reservationsRead it back by id, or from the feed
A developer kit, not just a spec
- A typed .NET client: booking in four calls, with card helpers.
- A complete example booking site on the API: search to confirmation, change, cancel and find my booking.
// 1. What can be sold?
BookingSearchResponse available = await crs.BookingsearchAsync(new BookingSearchRequest
{
PropertyId = "2177", ArrivalDate = arrival, DepartureDate = departure,
NumberOfAdults = 2, NumberOfRooms = 1, CurrencyCode = "USD", Language = "en"
});
// 2. Describe the stay. One rate row naming the rate plan is enough.
Res res = new Res { PropertyId = "2177", Status = ReservationStatus.New, CurrencyCode = "USD" };
ResRoomType room = new ResRoomType(roomTypeId, arrival, departure) { NumberOfAdults = 2 };
room.Rates.Add(new ResRoomTypeRate { RatePlanId = ratePlanId, Date = arrival });
res.RoomTypes.Add(room);
// 3. bookcheck prices it: nightly rates, fee and tax lines, TotalBeforeTax / TotalAfterTax.
BookCheckResponse priced = await crs.BookcheckAsync(new BookCheckRequest { Reservation = res });
// 4. book exactly what bookcheck returned.
BookResponse booked = await crs.BookAsync(new BookRequest { Reservation = priced.Reservation });
Both are shared as source with partners. Ask for them in your enquiry.
Day one: a sandbox in your inbox
We set up a test account on the test server with copies of our three demo properties, in English, German and Spanish, and email you everything you need for the first call.
Your own back office
A login to the test back office, to see the settings and inventory your calls read.
The test server
Every URL in the documentation runs on testcrs.channelrush.net.
Swagger and your token
The live reference, and the bearer token for your channel.
Your first call
Read one property’s settings in English, then search it.
From: ChannelRUSH Support <support@channelrush.com>
Subject: ChannelRUSH API Test Account Info - Your Company
Greetings,
We have set up your ChannelRUSH CRS API Test Account.
ChannelRUSH Extranet Login Info
https://test.channelrush.net u: you@yourcompany.example p: •••••••• o: ••••
Documentation
testcrs.channelrush.net https://testcrs.channelrush.net/api/v3/connectioncheck
Documentation - Swagger
https://testcrs.channelrush.net/index.html Authorization: Bearer ••••••••
Next Steps
GET https://testcrs.channelrush.net/api/v3/settings/••••/en
From enquiry to live bookings
Tell us what you’re building
A brand site, an app, a reservations desk or a booking channel: the enquiry below goes to our integration team.
We set up your channel and sandbox
Your own channel and token on the test server, with three demo properties in three languages.
Build and test
Against the test server, with Swagger, ReDoc and, if you want them, our typed client and example site.
Go live, hotel by hotel
Each hotel adds your channel, and your production token covers it on crs.channelrush.net.
Ready to start?
For hotel groups, developers and booking channels
Tell us what you’re building.
A group site, an app, a reservations desk or a channel that sells rooms: tell us what you have in mind and how many properties it covers. We’ll reply with the next steps and a time for a technical call.

Frequently Asked Questions
Each point of sale is its own channel with one bearer token. The token covers every property that has added your channel, so one token serves the whole portfolio. Send it in the Authorization header from your server: the API is server-to-server only.
Your own bookings come back from book with their reservation id. The reservations call returns one booking by id or the feed for your channel, and webhooks keep your system in step with changes made at the hotel.
No. The API passes the card details, or a token you already hold, to the property as the booking’s guarantee. Card data passes through your systems, so they are in PCI scope for it. If you’d rather not handle cards, the hotel’s hosted booking engine charges through its payment gateway.
You do. The hotel gets its reservation emails and the booking in its PMS; your site or app confirms to the guest in your own voice.
Yes. Send the whole reservation to book again with status 1 to change it, or status 2 (or the cancel call) to cancel it; cancelling twice is safe. Each rate plan’s policy comes with settings, and your site applies it before it changes or cancels.
Every language a property has content in: settings lists them, and you ask for one per call. Send the guest’s currency and prices come back converted when it differs from the property’s own.
Yes. We set up the channel with its own credentials and token. Each hotel adds it and decides whether it sells the CRS rates or its own rates and availability for that channel, and its content is mapped per language. Bookings arrive in the hotel’s reservations under the channel’s name.
Your site or app is yours, front to back. Behind it, bookings show in the hotel’s back office under your channel’s name and the OTAs connect to ChannelRUSH: a booking experience Powered by ChannelRUSH.

