Skip to main content

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.

Marivela Beach Resort’s booking site showing the Ocean View King for five nights: a non-refundable and a flexible rate, each with its total and its saving from a stay-longer promotion.
ResponsePOST /api/v3/bookingsearch
{
  "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]
    }]
  }]
}
  1. The room, by name and id
  2. Every rate plan that can sell the stay
  3. 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.

  1. Searchpropertysearch

    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.

    1. Search everything, or one destination
    2. Every home that can sell the dates
    3. 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]
    }
    
    The Hollow & Ridge Mountain Homes booking site listing ten homes for 4 to 7 December, each with its town, bedrooms, bathrooms, sleeps and price per night.
    Our hosted site for a group of ten mountain homes: one search, every home that can sell the dates.
  2. Offerbookingsearchbookingsearchaddons

    Every room, every rate, and the extras

    bookingsearch returns 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. bookingsearchaddons lists the extras for the same stay, each priced its own way.

    1. Per person, per night
    2. Per person
    3. 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 Beach Resort’s extras for the stay: breakfast on the terrace at $32.00 per person per night and a half-day snorkel trip at $95.00 per person, each with a guest selector.
    Marivela’s extras for the same stay, on its hosted site.
  3. Pricebookcheck

    Price the cart before anyone pays

    Send the stay with one rate row naming the rate plan. bookcheck fills in every night’s rate, the fee and tax lines and the totals, and books nothing. Call it again whenever the cart changes.

    1. Each night against its price before the promotion
    2. The cleaning fee, as its own line
    3. 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 booking summary for five nights in the Ocean View King: room rates 1,185.00, discounts minus 177.75, fees 125.00, taxes 79.26 and a total of $1,211.51.
    The cart for the same stay: the promotion, the cleaning fee and sales tax, priced.
  4. Bookbook

    Reservation 12563307

    Book it, or be told why not

    Send exactly what bookcheck returned, 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.

    1. Where it came from: here our booking engine, for you your channel
    2. Status, totals and room type
    3. Every night’s rate and rate plan

    HTTP 200POST /api/v3/book

    {
      "successful": true,
      "messages": [],
      "reservationId": "12563307"
    }
    A reservation in the ChannelRUSH back office: its source, status, totals, guest, room and every night’s rate.
    A booking-engine reservation, as the hotel sees it. An API booking is the same record, with your channel as its source.
  5. Deliver

    Reservation 12563307

    It 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.

    1. Every channel’s bookings, side by side
    2. Bookings from our engine. Yours list the same way, under your channel
    3. History, email and PMS delivery for every booking
    Example: how your booking lists
    12563307NewChannelRUSH CRS-> Your channelMarivela Beach ResortHistory | Email | PMS
    A hotel’s reservations in the ChannelRUSH back office: bookings from Expedia, Booking.com and the booking engine, each with links to its history, email and PMS delivery.
    Seeded bookings at a demo property: Expedia and Booking.com next to our booking engine’s.
  6. Changebookcancelreservations

    Reservation 12563307

    Change it, cancel it, read it back

    To change a booking, send the whole reservation to book again with status 1. To cancel, send status 2 or call cancel; cancelling twice is safe. reservations returns one booking by id or the feed for your channel, and webhooks keep your copy current.

    1. The changed booking, as the hotel sees it
    2. 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 reservation in the ChannelRUSH back office, showing its new status, totals and room type.
    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 building

What 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 ChannelRUSH CRS channel at Marivela Beach Resort: a masked username and password, Channel Property ID 2177, and the Ocean View King mapped as room type 134 with its NRF rate plan as 2.
  1. The channel’s own credentials
  2. propertyId
  3. roomTypeId
  4. 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.

Marivela Beach Resort’s non-refundable booking policy: 100% due at booking, a card required on partner sites, a 100% cancellation fee, and notes for partner sites per language.
  1. Whether your site asks for a card
  2. What cancelling costs, worded for guests
  3. 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"

The Ocean View King on Marivela’s booking site in German, priced in euros.
German, euros

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

The same room in Spanish, priced in Mexican pesos.
Spanish, Mexican pesos

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 CRS

Two 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
See the group sites we host

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
Your channelBearer One token
  • Hotel A
  • Hotel B
  • Hotel C
Each hotel adds your channel, and your token covers every one that does.
Prefer rates and availability pushed to you? The OTA API

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

The booking sequence

  1. propertysearchsettingsFind properties and load their content
  2. bookingsearchbookingsearchaddonsShow rooms, rates and extras
  3. bookcheckPrice the cart, again on every change
  4. bookBook what was priced
  5. Saved, sent to the PMS and the hotel’s emails, availability adjusted
  6. 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.
C#reservation.services.crs.client
// 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.

  1. Your own back office

    A login to the test back office, to see the settings and inventory your calls read.

  2. The test server

    Every URL in the documentation runs on testcrs.channelrush.net.

  3. Swagger and your token

    The live reference, and the bearer token for your channel.

  4. 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
The welcome email from our sandbox tool, abridged, with every login and token masked.

From enquiry to live bookings

01

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.

02

We set up your channel and sandbox

Your own channel and token on the test server, with three demo properties in three languages.

03

Build and test

Against the test server, with Swagger, ReDoc and, if you want them, our typed client and example site.

04

Go live, hotel by hotel

Each hotel adds your channel, and your production token covers it on crs.channelrush.net.

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.

/ FAQ /

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.