⚙ Property Setup APIs

Property Setup — PMS → Channel Manager

Before transactional updates can begin, each property must be registered in the AxisRooms Channel Manager. These setup APIs push Hotels, Rooms, and Rateplans from the PMS into the Channel Manager, mapping each to the corresponding PMS ID.

Sandbox Base URL for property setup: https://sandbox-pms.axisrooms.com (different from transactional endpoints).
#API NameMethodEndpointPurpose
P1Create Hotel APIPOST/api/hotel/createCreate hotels & map with PMS
P2Create Room APIPOST/api/room/createCreate room categories
P3Create Rateplan APIPOST/api/rateplan/createCreate rate plans
P.1

Create Hotel API

The PMS calls this API to register a hotel in the Channel Manager and map it with the corresponding PMS property. This must be completed before rooms or rateplans can be created. Multiple hotels can be submitted in a single request.

ExplanationThis API creates a new hotel profile inside the AxisRooms Channel Manager and links it to the corresponding property in your PMS using the hotelId. It is the first and mandatory step — rooms and rate plans cannot be created for a hotel until it has been registered here. Multiple hotels can be onboarded in a single API call.
POSThttps://sandbox-pms.axisrooms.com/api/hotel/create

Request JSON

{
  "channelId": "AxisRoomsClientId",
  "accessKey": "clientAPIKey",
  "data": [
    {
      "hotelId":      "S50010",
      "hotelName":    "Hotel 1806 Stay",
      "city":         "Shimla",
      "country":      "India",
      "currency":     "INR",
      "groupName":    "Hotel Group",
      "brandName":    "Brand Hotel",
      "address":      "Lower Kaithu, Shimla",
      "state":        "Himachal Pradesh",
      "supplierName": "Rama",
      "emailId":      "rama.ota@hotels.com",
      "mobile":       9313931393,
      "latitude":     32.112746,
      "longitude":    17.16375,
      "locality":     "Chungi Khana",
      "postalCode":   171006,
      "checkInTime":  "12 Hour",
      "checkOutTime": "16 Hour",
      "roomQuantity": 4,
      "starRating":   5,
      "imageLinks":   "http://g.co/1.jpg,http://g.co/2.jpg",
      "amenities":    "Bar,Spa,AC,ATM"
    }
  ]
}

Response JSON

{
  "status":    "Success / Error",
  "message":   "Property Id 1234 already exist.",
  "errorCode": ""
}

Field Reference

Highlighted rows are mandatory fields required in every request.
FieldRequiredDescription
accessKeyRequiredAlphanumeric auth key. Wrong key returns 401.
channelIdRequiredIdentifier for the client in AxisRooms.
hotelIdRequiredHotel identifier in the client's PMS system.
hotelNameRequiredDisplay name of the hotel.
cityRequiredCity where the hotel is located.
countryRequiredCountry where the hotel is located.
currencyRequiredCurrency code (e.g. INR, USD).
groupNameOptionalHotel group or chain name.
brandNameOptionalBrand name associated with the hotel.
addressOptionalStreet address.
stateOptionalState or province.
supplierNameOptionalName of the supplier or contact person.
emailIdOptionalContact email address.
mobileOptionalContact mobile number.
latitude / longitudeOptionalGeographic coordinates.
localityOptionalLocality or neighbourhood name.
postalCodeOptionalPostal/ZIP code.
checkInTimeOptionalStandard check-in time (e.g. "12 Hour").
checkOutTimeOptionalStandard check-out time (e.g. "16 Hour").
roomQuantityOptionalTotal number of rooms.
starRatingOptionalStar rating of the hotel (1–5).
imageLinksOptionalMultiple image URLs, comma-separated.
amenitiesOptionalComma-separated amenity names. See Appendix A.
P.2

Create Room API

The PMS calls this API to push room categories into the Channel Manager for a hotel already registered via the Create Hotel API. Supports multiple rooms across multiple hotels in a single call.

ExplanationThis API adds room categories (room types) to an already registered hotel in the Channel Manager, mapping each room to its corresponding roomId in the PMS. Multiple room types for multiple hotels can be submitted in a single call. Rooms must be created before inventory or pricing can be pushed for them.
POSThttps://sandbox-pms.axisrooms.com/api/room/create

Request JSON

{
  "channelId": "AxisRoomsClientId",
  "accessKey": "clientAPIKey",
  "data": [
    { "hotelId": "H123", "roomId": 111, "roomName": "Single Room" },
    { "hotelId": "H123", "roomId": 222, "roomName": "Double Room" },
    { "hotelId": "H124", "roomId": 222, "roomName": "Standard Room" }
  ]
}

Response JSON

{ "status": "Success / Error", "message": "", "errorCode": "" }

Field Reference

FieldRequiredDescription
accessKeyRequiredAlphanumeric authentication key. Wrong key returns 401.
channelIdRequiredIdentifier for the client in AxisRooms.
hotelIdRequiredHotel identifier in the client's PMS system.
roomIdRequiredRoom identifier in the client's PMS system.
roomNameRequiredDisplay name for the room category in Channel Manager.
P.3

Create Rateplan API

The PMS calls this API to push rate plans (e.g. CP, EP, MAP) into the Channel Manager for a specific hotel. Supports multiple rate plans across multiple hotels in a single call.

ExplanationThis API registers rate plans (such as CP – Continental Plan, EP – European Plan, MAP – Modified American Plan) in the Channel Manager and maps them to their corresponding rateplanId in the PMS. Rate plans must be created before pricing can be pushed against them. Multiple rate plans across multiple hotels can be submitted in one call.
POSThttps://sandbox-pms.axisrooms.com/api/rateplan/create

Request JSON

{
  "channelId": "AxisRoomsClientId",
  "accessKey": "clientAPIKey",
  "data": [
    { "hotelId": "SHM497", "rateplanId": 1, "rateplanName": "CP" },
    { "hotelId": "SHM498", "rateplanId": 1, "rateplanName": "CP" },
    { "hotelId": "SHM498", "rateplanId": 2, "rateplanName": "EP" },
    { "hotelId": "SHM498", "rateplanId": 3, "rateplanName": "MAP" },
    { "hotelId": "SHM499", "rateplanId": 1, "rateplanName": "CP" }
  ]
}

Response JSON

{ "status": "Success / Error", "message": "", "errorCode": "" }

Field Reference

FieldRequiredDescription
accessKeyRequiredAlphanumeric authentication key. Wrong key returns 401.
channelIdRequiredIdentifier for the client in AxisRooms.
hotelIdRequiredHotel identifier in the client's PMS system.
rateplanIdRequiredRate plan identifier in the client's PMS system.
rateplanNameRequiredDisplay name for the rate plan in Channel Manager.
Appendix A

Supported Amenities

Pass amenity names comma-separated in the amenities field of the Create Hotel request (e.g. "Bar,Spa,AC,WiFi").

CategoryAmenities
Room ComfortAC, TV, HDTV, Room Heater, Mini Fridge, In-Room Safe, Bath Tub, Bath Tub (Rich), Rooms with Balcony, Room View
ConnectivityWiFi, Free WiFi, Internet Access
Dining & DrinksIn-House Restaurant, In-House Restaurant (Rich), Bar, Dining Area, Breakfast
Services24-Hour Front Desk, Dry Cleaning, Laundry Service
FacilitiesParking Facility, Lift / Elevator, ATM, Spa, Banquet Hall, Banquet / Conference, Conference Room
BusinessBusiness Benefits
AccessibilityWheelchair Accessible
OtherPet Friendly, Extra Beds or Mattress, Recreational & Entertainment
▶ Getting Started

1. Introduction

Welcome to the AxisRooms PMS API. This reference covers the complete API suite for integrating your Property Management System (PMS) with the AxisRooms Channel Manager (CM). Once integrated, you can push inventory and rate updates, and receive booking notifications directly from OTA platforms.

Integration Overview

  • Property SetupSend property, room, and rate plan data to AxisRooms via CSV upload (contact AxisRooms for the CSV format). OTA connectivity can be configured once the property is set up.
  • Inventory UpdatesUse API 3.1 (day-wise) or API 3.2 (bulk) to push inventory counts.
  • Rate UpdatesUse API 3.6 (day-wise) or API 3.7 (bulk) to push room rates.
  • Booking SyncImplement API 3.9 endpoint on your system to receive booking notifications from AxisRooms.
💡Begin by sending test property data in the CSV format provided by AxisRooms. Once set up in the staging environment, proceed with inventory and rate testing before enabling OTA connectivity.

2. Authentication

AxisRooms uses API access keys for authentication. Every request must include the accessKey field in the JSON body.

Authentication (included in every request)

{
  "accessKey": "clientAPIKey"
}
DetailValue
Key TypeAlphanumeric string
Provided ByAxisRooms upon integration completion
ScopeSeparate keys per environment (staging / production)
On Invalid KeyHTTP 401 Unauthorized
The clientAPIKey will be issued after the integration process is complete. Different keys are used for different sandbox environments — contact the AxisRooms technical team for environment-specific credentials.
📦 Inventory

3.1 Inventory Update (Day-Wise)

Updates availability counts per date for specific rooms. Use this API to send granular, date-level inventory to the Channel Manager.

ExplanationThis option allows you to set the number of rooms available for sale on individual dates rather than applying the same inventory to a continuous date range.
POSThttps://sandboxE.axisrooms.com/api/daywiseInventoryE = env number
Replace E in the URL with your assigned environment number (e.g. 1, 2, 3). Contact the AxisRooms tech team for your number.

Request JSON

{
  "accessKey": "clientAPIKey",
  "channelId": "AxisRoomsClientId",
  "hotels": [
    {
      "hotelId": "H-01",
      "rooms": [
        {
          "roomId": "DLX",
          "availability": [
            { "date": "2018-04-13", "free": 1 },
            { "date": "2018-04-14", "free": 1 },
            { "date": "2018-04-15", "free": 1 }
          ]
        },
        {
          "roomId": "SPD",
          "availability": [
            { "date": "2018-04-13", "free": 1 }
          ]
        }
      ]
    }
  ]
}

Response JSON

{ "status": "Success/Error", "message": "", "errorCode": "" }

Request Parameters

ParameterDescription
accessKeyAlphanumeric key for authentication. A wrong key returns a 401 error.
channelIdThe identifier for the client in AxisRooms.
hotelIdThe hotel ID in the client's system.
roomIdThe room ID in the client's system.
dateDate in yyyy-MM-dd format.
freeNumber of available rooms for that date.

Response Parameters

ParameterDescription
statusValues: success / failure.
messageDescription for failure. Empty or informational on success.
errorCodeError code reference (see Error Codes).

3.2 Bulk Inventory Update

Updates room availability for a date range with a single count value. Useful for pushing the same inventory level across a span of dates.

ExplanationThis option allows you to set the same inventory count for multiple consecutive dates in one action. The specified availability value will be applied uniformly to every date within the selected date range.
POSThttp://sandboxE.axisrooms.com/api/inventoryE = env number

Request JSON

{
  "accessKey": "clientAPIKey",
  "channelId": "AxisRoomsClientId",
  "hotels": [
    {
      "hotelId": "HT-01",
      "rooms": [
        {
          "roomId": "DLX",
          "startDate": "2018-04-30",
          "endDate":   "2018-12-31",
          "availability": 5
        }
      ]
    }
  ]
}

Response JSON

{ "status": "Success/Error", "message": "", "errorCode": "" }

Request Parameters

ParameterDescription
accessKeyAlphanumeric key for authentication. A wrong key returns a 401 error.
channelIdThe identifier for the client in AxisRooms.
hotelIdThe hotel ID in the client's system.
roomIdThe room ID in the client's system.
startDateStart of the date range (yyyy-MM-dd).
endDateEnd of the date range (yyyy-MM-dd).
availabilityNumber of available rooms to set for the entire date range.

3.3 Block Channel Inventory

Blocks inventory for specific OTA channels, preventing new bookings during the specified date range for that room.

ExplanationThis option allows you to stop selling a room type on selected OTA channels for a specific period while keeping it available on other channels if required. During the blocked period, the room inventory will not be available for booking on the selected OTA(s).
POSThttp://sandboxE.axisrooms.com/api/blockChannelE = env number

Request JSON

{
  "accessKey": "clientAPIKey",
  "pmsId":     "AxisRoomsClientId",
  "channelId": [1, 9, 12],
  "hotelId":   "HT-01",
  "startDate": "2018-04-30",
  "endDate":   "2018-06-25",
  "roomId":    "DLX"
}

Response JSON

{ "status": "Success/Error", "message": "Error Message" }

Request Parameters

ParameterDescription
accessKeyAlphanumeric key for authentication provided by AxisRooms.
pmsIdThe client identifier in AxisRooms.
channelIdArray of OTA IDs to block. AxisRooms provides the full OTA ID list.
hotelIdThe hotel ID in the client system.
roomIdThe room ID in the client system.
startDateStart date of the block period (yyyy-MM-dd).
endDateEnd date of the block period (yyyy-MM-dd).

3.4 Unblock Channel Inventory

Removes a previously applied block on inventory for specific OTA channels.

ExplanationThis option allows you to reopen room inventory on selected OTA channels after it has been blocked. Once unblocked, the rooms will become available for sale and guests can make bookings through the selected OTA(s).
POSThttp://sandboxE.axisrooms.com/api/unblockChannelE = env number

Request JSON

{
  "accessKey": "clientAPIKey",
  "pmsId":     "AxisRoomsClientId",
  "channelId": [1],
  "hotelId":   "HT-01",
  "startDate": "2018-04-30",
  "endDate":   "2018-06-25",
  "roomId":    "DLX"
}

Response JSON

{ "status": "Success/Error", "message": "Error Message" }

Request Parameters

ParameterDescription
accessKeyAlphanumeric authentication key provided by AxisRooms.
pmsIdThe client identifier in AxisRooms.
channelIdArray of OTA IDs to unblock.
hotelIdThe hotel ID in the client system.
roomIdThe room ID in the client system.
startDateStart date (yyyy-MM-dd).
endDateEnd date (yyyy-MM-dd).

3.5 Fetch Inventory (OTA-Wise)

Retrieves current availability for a specific room and OTA over a date range. Useful for verifying inventory updates on the AxisRooms system.

ExplanationThis option allows you to view the inventory currently available on a particular OTA for a selected room type and date range. It is useful for validating inventory updates, troubleshooting discrepancies and ensuring that the OTA reflects the expected availability.
POSThttps://sandboxE.axisrooms.com/api/otaAvailabilityE = env number

Request JSON

{
  "accessKey": "clientAPIKey",
  "channelId": "AxisRoomsClientId",
  "otaId":     "2",
  "hotelId":   "HT-01",
  "roomId":    "DLX",
  "startDate": "2018-04-23",
  "endDate":   "2018-04-25"
}

Response JSON

{
  "status":   "Success/Failure",
  "message":  "",
  "hotelId":  "HT-01",
  "roomId":   "DLX",
  "otaId":    "2",
  "availability": [
    { "date": "2018-04-23", "free": 1 },
    { "date": "2018-04-24", "free": 1 },
    { "date": "2018-04-25", "free": 1 }
  ]
}

Request Parameters

ParameterDescription
accessKeyAlphanumeric authentication key.
channelIdThe client identifier in AxisRooms.
otaIdOTA ID (provided by AxisRooms in the OTA list).
hotelIdThe hotel ID in the client system.
roomIdThe room ID in the client system.
startDateStart date (yyyy-MM-dd).
endDateEnd date (yyyy-MM-dd).
💰 Pricing

3.6 Price Update (Day-Wise)

Updates room rates per date for specific rooms and rate plans. Supports targeting specific OTAs via otaIds.

ExplanationThis operation is used when room rates vary from one day to another. Instead of applying the same price across a date range, you can define individual rates for each date. The system updates the specified room rates in AxisRooms and distributes them to the selected OTA channels (if provided).
POSThttps://sandboxE.axisrooms.com/api/daywisePriceE = env number
Double Occupancy price is mandatory for all rate submissions to AxisRooms.

Request JSON

{
  "accessKey": "clientAPIKey",
  "channelId": "AxisRoomsClientId",
  "hotels": [
    {
      "hotelId": "HT-01",
      "rooms": [
        {
          "roomId": "DLX",
          "rateplans": [
            {
              "rateplanId": "RP-1",
              "priceDetails": [
                {
                  "date":   "2018-04-25",
                  "otaIds": [2, 5],
                  "price": {
                    "Double":      2000,
                    "Single":      2000,
                    "Triple":      2500,
                    "Extra Bed":   500,
                    "Extra Child": 200,
                    "Extra Adult": 500
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

Response JSON

{ "status": "Success/Error", "message": "" }

Request Parameters

ParameterDescription
accessKeyAlphanumeric authentication key.
channelIdThe client identifier in AxisRooms.
hotelIdThe hotel ID in the client system.
roomIdThe room ID in the client system.
rateplanIdRate plan ID in the client system.
otaIds(Optional) Array of OTA IDs. Omit to push to all OTAs.
price.DoubleMandatory. Double occupancy rate.
price.SingleSingle occupancy rate.
price.Triple / Quad(Optional) Higher occupancy rates.
price.Extra BedExtra bed charge.
price.Extra Child / Adult(Optional) Additional guest charges.

3.7 Bulk Price Update

Updates room rates for a date range with a single set of prices. Supports multiple room types and hotels in one call. Omit otaIds to push the same price to all connected OTAs.

ExplanationThis option allows you to apply the same set of prices across a continuous date range in a single API call. It is suitable when prices do not vary day-by-day within the period. You can target specific OTAs by providing otaIds, or leave it empty to push rates to all connected OTAs simultaneously.
POSThttp://sandboxE.axisrooms.com/api/bulkPriceUpdateE = env number
Double Occupancy price is mandatory for all rate submissions to AxisRooms.

Request JSON

{
  "accessKey": "clientAPIKey",
  "channelId": "AxisRoomsClientId",
  "hotels": [
    {
      "hotelId": "HT-01",
      "rooms": [
        {
          "roomId": "DLX",
          "rateplans": [
            {
              "rateplanId": "RP-1",
              "otaIds": [9, 2, 3],
              "priceDetails": [
                {
                  "startDate": "2018-04-30",
                  "endDate":   "2018-08-28",
                  "price": {
                    "Double":    2500,
                    "Single":    2000,
                    "Extra Bed": 500
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

Response JSON

{ "status": "Success/Error", "message": "" }

Request Parameters

ParameterDescription
accessKeyAlphanumeric authentication key.
channelIdThe client identifier in AxisRooms.
hotelIdThe hotel ID in the client system.
roomIdThe room ID in the client system.
rateplanIdRate plan ID in the client system.
otaIds(Optional) Array of OTA IDs for targeted pricing.
startDateStart date of the pricing period (yyyy-MM-dd).
endDateEnd date of the pricing period (yyyy-MM-dd).
price.DoubleMandatory. Double occupancy rate.

3.8 Fetch Price (OTA-Wise)

Retrieves current rates for a specific room, rate plan, and OTA over a date range. Useful for verifying rate updates on the AxisRooms system.

ExplanationThis option allows you to fetch the rates currently loaded on AxisRooms for a specific room type, rate plan, and OTA channel over a given date range. It is primarily used to verify that price updates have been applied correctly and to troubleshoot any rate discrepancies between the PMS and the OTA.
POSThttp://sandboxE.axisrooms.com/api/otaRatesE = env number

Request JSON

{
  "accessKey":  "clientAPIKey",
  "channelId":  "AxisRoomsClientId",
  "otaId":      "2",
  "hotelId":    "HT-01",
  "roomId":     "DLX",
  "rateplanId": "RP-1",
  "startDate":  "2018-04-25",
  "endDate":    "2018-04-26"
}

Response JSON

{
  "status":     "Success/Failure",
  "message":    "",
  "hotelId":    "SV",
  "roomId":     "SV_CO",
  "rateplanId": "CP",
  "otaId":      "2",
  "priceDetails": [
    {
      "date":  "2018-04-25",
      "price": { "Double": 2300, "Single": 2000, "Triple": 2500 }
    }
  ]
}

Request Parameters

ParameterDescription
accessKeyAlphanumeric authentication key.
channelIdThe client identifier in AxisRooms.
hotelIdThe hotel ID in the client system.
roomIdThe room ID in the client system.
otaIdOTA ID (from the AxisRooms OTA list).
rateplanIdRate plan ID in the client system.
startDateStart date (yyyy-MM-dd).
endDateEnd date (yyyy-MM-dd).
📋 Bookings

3.9 Bookings / Reservation

This endpoint must be built and hosted by the partner (PMS) system. AxisRooms will call this API to push booking notifications — including new bookings, modifications, and cancellations — received from OTA channels.

ExplanationThis is a webhook-style endpoint that the PMS must implement and expose. AxisRooms will call this endpoint in real time whenever a new booking is received, an existing booking is modified, or a booking is cancelled on any connected OTA. The PMS is expected to process the payload and return a success acknowledgement. The structure may be customised to meet specific integration requirements.
POST<Endpoint hosted by Client System>
This is a sample API structure and may be customised based on the integration partner's specific requirements. Data under the roomType array is OTA-specific and may be set to 'NA' if not provided by the OTA.

Request JSON (sent by AxisRooms)

{
   "accessKey": "XXXXXXXXXXXXXXXXXXX",
   "GuestDetails": {
       "title": "",
       "guestName": "Rohith Kumar",
       "emailId": "info@indicholidays.com",
       "mobileNo": "918000003879",
       "countryCode": ""
   },
   "CheckinDetails": {
       "checkInDate": "2023-12-28",
       "checkOutDate": "2023-12-29",
       "totalPax": "6",
       "children": "1",
       "supplierAmount": "45105.76",
       "taxes": "8568.0",
       "totalAmount": "56168.0",
       "paid": "true",
       "isGeniusBooker": false,
       "specialRequest": [],
       "amountToBeCollected": "0.0",
       "isDayWisePrice": true
   },
   "BookingDetails": {
       "hotelId": "184151",
       "bookingNo": "0113196584",
       "bookingDateTime": "2023-12-07 18:58:47",
       "bookedBy": "Rohith Kumar",
       "ota": "Go-MMT",
       "otaRefId": "23",
       "bookingStatus": "confirmed",
       "bookingSource": "Go-MMT",
       "bookingSourceRefId": "NH21051295691386",
       "gstNumber": "24AAKFI0281R1ZY",
       "companyName": "INDIC HOLIDAYS AND HOSPITALITY",
       "companyAddress": "AHMEDABAD"
   },
   "Rates": {
       "roomType": [
           {
               "id": "308493",
               "noOfRooms": "1",
               "ratePlanId": "248866",
               "roomWiseAdult": "3",
               "roomWiseChild": "0",
               "ratePlanName": "AP",
               "cityTax": "NA",
               "vat": "NA",
               "serviceCharge": "NA",
               "dayWiseDetails": [
                   {
                       "date": "2023-12-28",
                       "deals": "NA",
                       "rate": "19000.0"
                   }
               ]
           },
           {
               "id": "308493",
               "noOfRooms": "1",
               "ratePlanId": "248866",
               "roomWiseAdult": "2",
               "roomWiseChild": "1",
               "ratePlanName": "AP",
               "cityTax": "NA",
               "vat": "NA",
               "serviceCharge": "NA",
               "dayWiseDetails": [
                   {
                       "date": "2023-12-28",
                       "deals": "NA",
                       "rate": "19000.0"
                   }
               ]
           }
       ]
   }
}

Response JSON (expected from Client)

{ "status": "success", "message": "Booking Update Received" }

Request Parameters

ParameterDescription
accessKeyMandatory. Authentication key provided by AxisRooms to authorize the request.
GuestDetailsContains guest information for the booking.
titleOptional. Guest title (Mr/Mrs/Ms etc.).
guestNameMandatory. Full name of the guest.
emailIdMandatory. Guest email address.
mobileNoMandatory. Guest mobile number.
countryCodeOptional. Guest country code.
CheckinDetailsContains stay details, pricing and payment information.
checkInDateMandatory. Guest check-in date.
checkOutDateMandatory. Guest check-out date.
totalPaxMandatory. Total number of guests.
childrenMandatory. Number of children included in the booking.
supplierAmountMandatory. Net supplier amount for the booking.
taxesMandatory. Total tax amount applicable to the booking.
totalAmountMandatory. Total booking amount including taxes.
paidMandatory. Payment status (true, false, or partial).
isGeniusBookerOptional. Indicates whether the booking is from the Booking.com Genius program.
specialRequestOptional. List of guest special requests.
amountToBeCollectedConditional. Required when paid = partial; represents the pending amount to collect.
isDayWisePriceOptional. Indicates whether room rates are provided day-wise.
BookingDetailsContains booking reference and source information.
hotelIdMandatory. PMS hotel/property ID.
bookingNoMandatory. AxisRooms booking reference number.
bookingDateTimeMandatory. Date and time when the booking was created.
bookedByMandatory. Name of the person who created the booking.
otaOptional. OTA name from which the booking originated.
otaRefIdMandatory. OTA reference ID mapped in AxisRooms.
bookingStatusMandatory. Booking status (confirmed, modified, or cancelled).
bookingSourceMandatory. Booking source/channel name.
bookingSourceRefIdOptional. External booking source reference ID.
gstNumberOptional. GST number of the company/customer.
companyNameOptional. Company name for corporate bookings.
companyAddressOptional. Company address for corporate bookings.
RatesContains room and rate details.
roomTypeMandatory. Array containing booked room information.
idMandatory. Room ID mapped in the client system.
noOfRoomsMandatory. Number of rooms booked.
ratePlanIdMandatory. Rate plan ID mapped in the client system.
roomWiseAdultMandatory. Number of adults assigned to the room.
roomWiseChildOptional. Number of children assigned to the room.
ratePlanNameMandatory. Name of the rate plan.
cityTaxOptional. City tax details.
vatOptional. VAT details.
serviceChargeOptional. Service charge details.
dayWiseDetailsConditional. Required when isDayWisePrice = true; contains daily room rates.
dateMandatory. Rate applicable date.
dealsOptional. Deal/discount information for the day.
rateMandatory. Room rate for the specified date.

3.9a Credit Card Details & PCI DSS Detokenization

When a booking includes credit card (CC) details, AxisRooms stores card data in an encrypted format and a secure token is generated. Pass this token to the PMS partner inside the Booking Update payload (API 3.9). The PMS partner can then exchange the token for actual card details via the detokenization API.

ExplanationWhen a booking carries guest credit card information, AxisRooms does not transmit raw card data directly. Instead, the card details are encrypted and replaced with a secure token. The PMS partner receives this token via the Booking Update payload and can exchange it for the actual card details by calling the detokenization endpoint. This flow is only available to PMS partners who hold a valid PCI DSS certificate, which must be submitted to AxisRooms before the feature is enabled.
🔒PCI DSS Compliance Required. To receive CC details, the PMS partner must be PCI DSS certified and provide their latest valid certificate to AxisRooms for verification. IPs must be whitelisted.

Prerequisites

RequirementDetails
PCI DSS CertificationThe PMS partner must hold a valid PCI DSS certificate.
Certificate SubmissionProvide the latest PCI DSS certificate to AxisRooms integration team for verification before CC pass-through is enabled.

Additional CC Field in Booking Update (API 3.9)

Once enabled, the Booking Update payload will include an additional ccDetails object:

{
  /* ... existing booking fields ... */
  "ccDetails": {
    "token":           "e6815eb6-8844-4408-9492-55ee3901b8a5",
    "referenceNumber": "270-2914910"
  }
}

Detokenization API

Use the token and reference number from the booking payload to retrieve actual card details from the AxisRooms PCI vault.

POSThttps://pci.axisrooms.com/v1/cardSovereign/detokenize

Request JSON

{
  "key":             "Yeh5uXCi5TdYC2SX1MbcPA==",
  "token":           "e6815eb6-8844-4408-9492-55ee3901b8a5",
  "referenceNumber": "270-2914910"
}

Request Parameters

ParameterRequiredDescription
keyRequiredPartner-specific API key for PCI vault access. Provided by AxisRooms upon PCI DSS certification approval. Handle as a sensitive credential — never expose in logs or client-side code.
tokenRequiredCard token received in the ccDetails.token field of the Booking Update payload (API 3.9).
referenceNumberRequiredBooking reference number received in ccDetails.referenceNumber of the Booking Update payload.
🔐Security: The key parameter is a sensitive credential. Detokenization calls must be made exclusively from your server-side backend over HTTPS. Card data retrieved via this API is subject to your PCI DSS compliance obligations.

3.10 No Show Enable for Booking.com

Enables the no-show flag on a Booking.com booking. This API is specific to the Booking.com OTA channel.

ExplanationThis API is used to mark a Booking.com reservation as a no-show when a guest fails to arrive. It is specific to the Booking.com channel and triggers the appropriate no-show handling on that platform. The booking reference and property ID must be provided to correctly identify and flag the reservation.
POSThttp://sandboxE.axisrooms.com/api/bookingNoShowEnableE = env number

Request JSON

{
  "bookingId": "XXXXXXX",
  "channelId": "AxisRoomsClientId",
  "productId": "HT-01"
}

Response JSON

{
  "message":   "Request Process Successfully : Booking Id : XXXXXX",
  "status":    "Success/failure",
  "errorCode": ""
}

Request Parameters

ParameterDescription
bookingIdOTA booking ID.
channelIdThe client identifier in AxisRooms.
productIdPMS hotel ID.
🔒 Restrictions

3.11 Update MLOS

Sets the Minimum and Maximum Length of Stay (MLOS/MaxLOS) restrictions for MLOS-supported OTAs (Booking.com, Expedia, GoIbibo). Day-of-week targeting is supported via the Dow field (1 = Monday through 7 = Sunday).

ExplanationThis API allows you to define the minimum and maximum number of nights a guest must book for a given room, rate plan, and date range. Restrictions can be targeted to specific OTAs (Booking.com, Expedia, GoIbibo) and to specific days of the week using the Dow field. This is useful for managing demand during peak or off-peak periods by controlling the shortest and longest bookable stay.
POSThttp://sandboxE.axisrooms.com/api/updateMlosE = env number

Request JSON

{
  "accessKey": "clientAPIKey",
  "channelId": "AxisRoomsClientId",
  "hotels": [
    {
      "hotelId": "HT-01",
      "rooms": [
        {
          "roomId": "DLX",
          "rateplans": [
            {
              "rateplanId": "RP-1",
              "mlosDetails": [
                {
                  "startDate": "2018-04-03",
                  "endDate":   "2018-04-05",
                  "otaIds":    [9],
                  "minlos":    "1",
                  "maxlos":    "2",
                  "Dow":       [1,2,3,4,5,6,7]
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

Response JSON

{ "status": "Success/Error", "message": "", "errorCode": "" }

Request Parameters

ParameterDescription
accessKeyAlphanumeric authentication key.
channelIdThe client identifier in AxisRooms.
hotelIdThe hotel ID in the client system.
roomIdThe room ID in the client system.
rateplanIdThe rate plan ID in the client system.
otaIdsArray of OTA IDs. Only Booking.com, Expedia, and GoIbibo are supported.
startDateStart date (yyyy-MM-dd).
endDateEnd date (yyyy-MM-dd).
minlosMinimum length of stay.
maxlos(Optional) Maximum length of stay.
DowDays of week: 1 (Mon) to 7 (Sun). Omit to apply to all days.

3.12 Pull Booking from AxisRooms

Fetches bookings from AxisRooms for a given hotel and date range. The date range is limited to 10 days per request.

ExplanationThis API allows the PMS to proactively pull booking data from AxisRooms for a specified hotel and check-in date range, rather than waiting for AxisRooms to push it via the Booking Update webhook (API 3.9). It is useful for reconciliation, catching missed notifications, or initial data sync. Each request is limited to a maximum range of 10 days.
POSThttp://sandboxE.axisrooms.com/api/pullBookingE = env number

Request JSON

{
  "accessKey": "clientAPIKey",
  "channelId": "AxisRoomsClientId",
  "hotelId":   "HT-01",
  "startDate": "21/03/2018",
  "endDate":   "30/03/2018"
}

Response JSON

{
  "BookingDetails": {
    "bookedBy":      "XYZ",
    "bookingDate":   "23/03/2018 07:19:12",
    "bookingNo":     "1701248481",
    "bookingStatus": "confirmed/modified/cancelled",
    "hotelId":       "77",
    "ota":           "Booking.com",
    "otaRefId":      "9"
  },
  "CheckinDetails": {
    "amount":           "1189.15",
    "checkInDateTime":  "06/04/2018",
    "checkOutDateTime": "07/04/2018",
    "children":         "0",
    "paid":             "false/true/partial",
    "taxes":            "100.86",
    "totalAmount":      "1399.0",
    "totalPax":         "2"
  },
  "GuestDetails": {
    "guestName": "XYZ ABC",
    "emailId":   "xyz@guest.booking.com",
    "mobileNo":  "+66 97 016 2349"
  },
  "Rates": {
    "roomType": [
      { "id": "CLBC", "noOfRooms": "1", "ratePlanId": "RP-1", "ratePlanName": "EP" }
    ]
  }
}

Request Parameters

ParameterDescription
accessKeyUnique authentication key at AxisRooms.
channelIdUnique channel ID at AxisRooms.
hotelIdHotel ID in the client system.
startDateStart date (dd/MM/yyyy). Maximum range: 10 days.
endDateEnd date (dd/MM/yyyy).
🔧 Configuration

3.13 Get Connected OTAs

Retrieves all OTAs connected to a property, identified by the PMS Channel ID.

ExplanationThis API returns a list of all OTA channels currently connected and active for a given property in AxisRooms. The response includes each channel's ID and name, which are required when targeting specific OTAs in inventory, pricing, and restriction update calls.
GEThttps://sandboxE.axisrooms.com/api/getConnectedChannel?pmsId=XYZE = env number

Response JSON

[
  {
    "channels": [
      { "channelId": 1,  "channelName": "AxisRooms" },
      { "channelId": 59, "channelName": "Goomo" }
    ],
    "hotelId":   "XYZ",
    "hotelName": "Hotel Name"
  }
]

Request Parameters

ParameterDescription
pmsIdUnique PMS ID at AxisRooms (passed as a query parameter).

Response Parameters

ParameterDescription
channelIdOTA channel ID.
channelNameOTA channel name.
hotelIdPMS property ID.
hotelNameProperty name in AxisRooms.

3.14 Update OTA Credentials

Updates OTA login credentials (username and password) for a property mapped in AxisRooms.

ExplanationThis API allows the PMS to update the OTA login credentials (username and password) stored in AxisRooms for a specific property and channel. This is required when an OTA partner changes their login details or when new credentials are issued. Keeping credentials up to date ensures uninterrupted connectivity between AxisRooms and the OTA.
POSThttp://sandboxE.axisrooms.com/api/updateOTACredentialsE = env number

Request JSON

{
  "hotelList": [
    {
      "channelList": [
        {
          "channelId":   47,
          "channelName": "CHANNEL NAME",
          "password":    "XYZ",
          "userName":    "abc"
        }
      ],
      "hotelId": "9876"
    }
  ],
  "pmsId": "XYZ"
}

Response JSON

{ "message": "credentials updated successfully", "success": "true" }

Request Parameters

ParameterDescription
pmsIdUnique PMS ID at AxisRooms.
hotelIdHotel ID string.
channelIdOTA channel ID (numeric).
channelNameOTA channel name.
userNameOTA login username.
passwordOTA login password.
🔒 Restrictions

3.15 Update OTA Restrictions (MLOS | CTA | CTD | Open/Close)

Sets restrictions on inventory availability. Supports MLOS (Minimum Length of Stay), CTA (Close to Arrival), CTD (Close to Departure), and open/close controls — all with optional OTA targeting and day-of-week filtering.

ExplanationThis API allows you to apply availability restrictions to a room and rate plan for a given date range. Supported restriction types are: Master (open or close the rate plan across all OTAs), CTA – Close to Arrival (prevent new check-ins on specified dates), and CTD – Close to Departure (prevent check-outs on specified dates). Restrictions can be targeted to specific OTAs via otaIds and to specific days of the week using the Dow field. If otaIds is omitted, the restriction applies to all connected OTAs.
POSThttp://sandboxE.axisrooms.com/api/cm-restrictionsE = env number

Request JSON

{
  "accessKey": "clientAPIKey",
  "channelId": "AxisRoomsClientId",
  "hotels": [
    {
      "hotelId": "HT-01",
      "rooms": [
        {
          "roomId": "DLX",
          "rateplans": [
            {
              "rateplanId": "RP-1",
              "mlosDetails": [
                {
                  "startDate": "2018-04-03",
                  "endDate":   "2018-04-05",
                  "otaIds":    [9],
                  "minlos":    "1",
                  "maxlos":    "2",
                  "Dow":       [1,2,3,4,5,6,7]
                }
              ],
              "restrictions": [
                {
                  "startDate": "2018-04-03",
                  "endDate":   "2018-04-05",
                  "otaIds":    [9],
                  "resType":   "Master/CTA/CTD",
                  "reStatus":  "close/open",
                  "Dow":       [1,2,3,4,5,6,7]
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

Response JSON

{ "status": "Success/Error", "message": "", "errorCode": "" }

Restriction Types

resType ValueDescription
MasterOpens or closes the rate plan on all OTAs.
CTAClose to Arrival — prevents new check-ins on the specified dates.
CTDClose to Departure — prevents check-outs on the specified dates.
otaIds is optional in restrictions. Omitting it applies the restriction to all connected OTAs. Dow (day of week) defaults to all days if not specified.
📚 Reference

4. Error Codes

The following HTTP and application-level error codes are used across all AxisRooms PMS APIs.

HTTP Error Codes

CodeMeaning
400Bad Request — malformed or invalid request body.
401Unauthorized — incorrect or missing API key.
403Forbidden — access to the resource is denied.
404Not Found — the requested endpoint URL does not exist.
500Internal Server Error — please retry after a short delay.
503Service Unavailable — the server is temporarily down.

Application Error Codes

CodeMeaning
1Data parsing error.
2Channel (PMS client ID) is missing.
3Channel (PMS client) is not mapped.
4Authentication failed.
5Hotel ID is not mapped.
6Room ID is not mapped.
12Rate plan ID is not mapped.

Update-MLOS Specific Errors

ScenarioError Message
otaIds attribute is missingUpdate mlos error.
MLOS update attempted for an unsupported OTAUpdate mlos error: MLOS is updated only for Booking.com, Expedia, GoIbibo Channels.
Hotel ID is not mapped or incorrectly mappedUpdate mlos error: hotelId XXX not mapped in Channel Manager. Please contact support team.
Room ID is wrongly mappedUpdate mlos error: roomId XXX not mapped for hotelId XXX in Channel Manager. Please contact support team.
Rate plan ID is wrongly mappedUpdate mlos error: rateplanId mapping issue for hotelId XXX. Please contact support team.

CM-Restrictions Specific Errors

ScenarioError Message
Close/Open restriction sent for a non-supported OTAno ota connected.
Rate plan not mapped or incorrectly mappedrateplanId mapping issue occurred. Please contact support team.

5. Endpoint Summary

All transactional endpoints use Base URL: https://sandboxE.axisrooms.com/api/ (replace E with your environment number). Property setup endpoints use https://sandbox-pms.axisrooms.com.

#NameMethodEndpoint Path
P1Create Hotel APIPOST/api/hotel/create
P2Create Room APIPOST/api/room/create
P3Create Rateplan APIPOST/api/rateplan/create
3.1Inventory Update (Day-Wise)POST/api/daywiseInventory
3.2Bulk Inventory UpdatePOST/api/inventory
3.3Block Channel InventoryPOST/api/blockChannel
3.4Unblock Channel InventoryPOST/api/unblockChannel
3.5Fetch Inventory (OTA-Wise)POST/api/otaAvailability
3.6Price Update (Day-Wise)POST/api/daywisePrice
3.7Bulk Price UpdatePOST/api/bulkPriceUpdate
3.8Fetch Price (OTA-Wise)POST/api/otaRates
3.9Bookings / ReservationPOST<client-hosted endpoint>
3.9aCC Details & PCI DSS DetokenizationPOSThttps://pci.axisrooms.com/v1/cardSovereign/detokenize
3.10No Show Enable (BCOM)POST/api/bookingNoShowEnable
3.11Update MLOSPOST/api/updateMlos
3.12Pull Booking from AxisRoomsPOST/api/pullBooking
3.13Get Connected OTAsGET/api/getConnectedChannel
3.14Update OTA CredentialsPOST/api/updateOTACredentials
3.15Update OTA RestrictionsPOST/api/cm-restrictions
AxisRooms
PMS API Integration Reference  ·  Version 1.0  ·  Sandbox Integration Guide