⚙ 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).
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.
| Field | Required | Description |
| accessKey | Required | Alphanumeric auth key. Wrong key returns 401. |
| channelId | Required | Identifier for the client in AxisRooms. |
| hotelId | Required | Hotel identifier in the client's PMS system. |
| hotelName | Required | Display name of the hotel. |
| city | Required | City where the hotel is located. |
| country | Required | Country where the hotel is located. |
| currency | Required | Currency code (e.g. INR, USD). |
| groupName | Optional | Hotel group or chain name. |
| brandName | Optional | Brand name associated with the hotel. |
| address | Optional | Street address. |
| state | Optional | State or province. |
| supplierName | Optional | Name of the supplier or contact person. |
| emailId | Optional | Contact email address. |
| mobile | Optional | Contact mobile number. |
| latitude / longitude | Optional | Geographic coordinates. |
| locality | Optional | Locality or neighbourhood name. |
| postalCode | Optional | Postal/ZIP code. |
| checkInTime | Optional | Standard check-in time (e.g. "12 Hour"). |
| checkOutTime | Optional | Standard check-out time (e.g. "16 Hour"). |
| roomQuantity | Optional | Total number of rooms. |
| starRating | Optional | Star rating of the hotel (1–5). |
| imageLinks | Optional | Multiple image URLs, comma-separated. |
| amenities | Optional | Comma-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
| Field | Required | Description |
| accessKey | Required | Alphanumeric authentication key. Wrong key returns 401. |
| channelId | Required | Identifier for the client in AxisRooms. |
| hotelId | Required | Hotel identifier in the client's PMS system. |
| roomId | Required | Room identifier in the client's PMS system. |
| roomName | Required | Display 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
| Field | Required | Description |
| accessKey | Required | Alphanumeric authentication key. Wrong key returns 401. |
| channelId | Required | Identifier for the client in AxisRooms. |
| hotelId | Required | Hotel identifier in the client's PMS system. |
| rateplanId | Required | Rate plan identifier in the client's PMS system. |
| rateplanName | Required | Display 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").
| Category | Amenities |
| Room Comfort | AC, TV, HDTV, Room Heater, Mini Fridge, In-Room Safe, Bath Tub, Bath Tub (Rich), Rooms with Balcony, Room View |
| Connectivity | WiFi, Free WiFi, Internet Access |
| Dining & Drinks | In-House Restaurant, In-House Restaurant (Rich), Bar, Dining Area, Breakfast |
| Services | 24-Hour Front Desk, Dry Cleaning, Laundry Service |
| Facilities | Parking Facility, Lift / Elevator, ATM, Spa, Banquet Hall, Banquet / Conference, Conference Room |
| Business | Business Benefits |
| Accessibility | Wheelchair Accessible |
| Other | Pet 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"
}
| Detail | Value |
| Key Type | Alphanumeric string |
| Provided By | AxisRooms upon integration completion |
| Scope | Separate keys per environment (staging / production) |
| On Invalid Key | HTTP 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
| Parameter | Description |
| accessKey | Alphanumeric key for authentication. A wrong key returns a 401 error. |
| channelId | The identifier for the client in AxisRooms. |
| hotelId | The hotel ID in the client's system. |
| roomId | The room ID in the client's system. |
| date | Date in yyyy-MM-dd format. |
| free | Number of available rooms for that date. |
Response Parameters
| Parameter | Description |
| status | Values: success / failure. |
| message | Description for failure. Empty or informational on success. |
| errorCode | Error 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
| Parameter | Description |
| accessKey | Alphanumeric key for authentication. A wrong key returns a 401 error. |
| channelId | The identifier for the client in AxisRooms. |
| hotelId | The hotel ID in the client's system. |
| roomId | The room ID in the client's system. |
| startDate | Start of the date range (yyyy-MM-dd). |
| endDate | End of the date range (yyyy-MM-dd). |
| availability | Number 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
| Parameter | Description |
| accessKey | Alphanumeric key for authentication provided by AxisRooms. |
| pmsId | The client identifier in AxisRooms. |
| channelId | Array of OTA IDs to block. AxisRooms provides the full OTA ID list. |
| hotelId | The hotel ID in the client system. |
| roomId | The room ID in the client system. |
| startDate | Start date of the block period (yyyy-MM-dd). |
| endDate | End 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
| Parameter | Description |
| accessKey | Alphanumeric authentication key provided by AxisRooms. |
| pmsId | The client identifier in AxisRooms. |
| channelId | Array of OTA IDs to unblock. |
| hotelId | The hotel ID in the client system. |
| roomId | The room ID in the client system. |
| startDate | Start date (yyyy-MM-dd). |
| endDate | End 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
| Parameter | Description |
| accessKey | Alphanumeric authentication key. |
| channelId | The client identifier in AxisRooms. |
| otaId | OTA ID (provided by AxisRooms in the OTA list). |
| hotelId | The hotel ID in the client system. |
| roomId | The room ID in the client system. |
| startDate | Start date (yyyy-MM-dd). |
| endDate | End 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
| Parameter | Description |
| accessKey | Alphanumeric authentication key. |
| channelId | The client identifier in AxisRooms. |
| hotelId | The hotel ID in the client system. |
| roomId | The room ID in the client system. |
| rateplanId | Rate plan ID in the client system. |
| otaIds | (Optional) Array of OTA IDs. Omit to push to all OTAs. |
| price.Double | Mandatory. Double occupancy rate. |
| price.Single | Single occupancy rate. |
| price.Triple / Quad | (Optional) Higher occupancy rates. |
| price.Extra Bed | Extra 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
| Parameter | Description |
| accessKey | Alphanumeric authentication key. |
| channelId | The client identifier in AxisRooms. |
| hotelId | The hotel ID in the client system. |
| roomId | The room ID in the client system. |
| rateplanId | Rate plan ID in the client system. |
| otaIds | (Optional) Array of OTA IDs for targeted pricing. |
| startDate | Start date of the pricing period (yyyy-MM-dd). |
| endDate | End date of the pricing period (yyyy-MM-dd). |
| price.Double | Mandatory. 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
| Parameter | Description |
| accessKey | Alphanumeric authentication key. |
| channelId | The client identifier in AxisRooms. |
| hotelId | The hotel ID in the client system. |
| roomId | The room ID in the client system. |
| otaId | OTA ID (from the AxisRooms OTA list). |
| rateplanId | Rate plan ID in the client system. |
| startDate | Start date (yyyy-MM-dd). |
| endDate | End 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
| Parameter | Description |
| accessKey | Mandatory. Authentication key provided by AxisRooms to authorize the request. |
| GuestDetails | Contains guest information for the booking. |
| title | Optional. Guest title (Mr/Mrs/Ms etc.). |
| guestName | Mandatory. Full name of the guest. |
| emailId | Mandatory. Guest email address. |
| mobileNo | Mandatory. Guest mobile number. |
| countryCode | Optional. Guest country code. |
| CheckinDetails | Contains stay details, pricing and payment information. |
| checkInDate | Mandatory. Guest check-in date. |
| checkOutDate | Mandatory. Guest check-out date. |
| totalPax | Mandatory. Total number of guests. |
| children | Mandatory. Number of children included in the booking. |
| supplierAmount | Mandatory. Net supplier amount for the booking. |
| taxes | Mandatory. Total tax amount applicable to the booking. |
| totalAmount | Mandatory. Total booking amount including taxes. |
| paid | Mandatory. Payment status (true, false, or partial). |
| isGeniusBooker | Optional. Indicates whether the booking is from the Booking.com Genius program. |
| specialRequest | Optional. List of guest special requests. |
| amountToBeCollected | Conditional. Required when paid = partial; represents the pending amount to collect. |
| isDayWisePrice | Optional. Indicates whether room rates are provided day-wise. |
| BookingDetails | Contains booking reference and source information. |
| hotelId | Mandatory. PMS hotel/property ID. |
| bookingNo | Mandatory. AxisRooms booking reference number. |
| bookingDateTime | Mandatory. Date and time when the booking was created. |
| bookedBy | Mandatory. Name of the person who created the booking. |
| ota | Optional. OTA name from which the booking originated. |
| otaRefId | Mandatory. OTA reference ID mapped in AxisRooms. |
| bookingStatus | Mandatory. Booking status (confirmed, modified, or cancelled). |
| bookingSource | Mandatory. Booking source/channel name. |
| bookingSourceRefId | Optional. External booking source reference ID. |
| gstNumber | Optional. GST number of the company/customer. |
| companyName | Optional. Company name for corporate bookings. |
| companyAddress | Optional. Company address for corporate bookings. |
| Rates | Contains room and rate details. |
| roomType | Mandatory. Array containing booked room information. |
| id | Mandatory. Room ID mapped in the client system. |
| noOfRooms | Mandatory. Number of rooms booked. |
| ratePlanId | Mandatory. Rate plan ID mapped in the client system. |
| roomWiseAdult | Mandatory. Number of adults assigned to the room. |
| roomWiseChild | Optional. Number of children assigned to the room. |
| ratePlanName | Mandatory. Name of the rate plan. |
| cityTax | Optional. City tax details. |
| vat | Optional. VAT details. |
| serviceCharge | Optional. Service charge details. |
| dayWiseDetails | Conditional. Required when isDayWisePrice = true; contains daily room rates. |
| date | Mandatory. Rate applicable date. |
| deals | Optional. Deal/discount information for the day. |
| rate | Mandatory. 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
| Requirement | Details |
| PCI DSS Certification | The PMS partner must hold a valid PCI DSS certificate. |
| Certificate Submission | Provide 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
| Parameter | Required | Description |
| key | Required | Partner-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. |
| token | Required | Card token received in the ccDetails.token field of the Booking Update payload (API 3.9). |
| referenceNumber | Required | Booking 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
| Parameter | Description |
| bookingId | OTA booking ID. |
| channelId | The client identifier in AxisRooms. |
| productId | PMS 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
| Parameter | Description |
| accessKey | Alphanumeric authentication key. |
| channelId | The client identifier in AxisRooms. |
| hotelId | The hotel ID in the client system. |
| roomId | The room ID in the client system. |
| rateplanId | The rate plan ID in the client system. |
| otaIds | Array of OTA IDs. Only Booking.com, Expedia, and GoIbibo are supported. |
| startDate | Start date (yyyy-MM-dd). |
| endDate | End date (yyyy-MM-dd). |
| minlos | Minimum length of stay. |
| maxlos | (Optional) Maximum length of stay. |
| Dow | Days 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
| Parameter | Description |
| accessKey | Unique authentication key at AxisRooms. |
| channelId | Unique channel ID at AxisRooms. |
| hotelId | Hotel ID in the client system. |
| startDate | Start date (dd/MM/yyyy). Maximum range: 10 days. |
| endDate | End 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
| Parameter | Description |
| pmsId | Unique PMS ID at AxisRooms (passed as a query parameter). |
Response Parameters
| Parameter | Description |
| channelId | OTA channel ID. |
| channelName | OTA channel name. |
| hotelId | PMS property ID. |
| hotelName | Property 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
| Parameter | Description |
| pmsId | Unique PMS ID at AxisRooms. |
| hotelId | Hotel ID string. |
| channelId | OTA channel ID (numeric). |
| channelName | OTA channel name. |
| userName | OTA login username. |
| password | OTA 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 Value | Description |
| Master | Opens or closes the rate plan on all OTAs. |
| CTA | Close to Arrival — prevents new check-ins on the specified dates. |
| CTD | Close 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
| Code | Meaning |
| 400 | Bad Request — malformed or invalid request body. |
| 401 | Unauthorized — incorrect or missing API key. |
| 403 | Forbidden — access to the resource is denied. |
| 404 | Not Found — the requested endpoint URL does not exist. |
| 500 | Internal Server Error — please retry after a short delay. |
| 503 | Service Unavailable — the server is temporarily down. |
Application Error Codes
| Code | Meaning |
| 1 | Data parsing error. |
| 2 | Channel (PMS client ID) is missing. |
| 3 | Channel (PMS client) is not mapped. |
| 4 | Authentication failed. |
| 5 | Hotel ID is not mapped. |
| 6 | Room ID is not mapped. |
| 12 | Rate plan ID is not mapped. |
Update-MLOS Specific Errors
| Scenario | Error Message |
| otaIds attribute is missing | Update mlos error. |
| MLOS update attempted for an unsupported OTA | Update mlos error: MLOS is updated only for Booking.com, Expedia, GoIbibo Channels. |
| Hotel ID is not mapped or incorrectly mapped | Update mlos error: hotelId XXX not mapped in Channel Manager. Please contact support team. |
| Room ID is wrongly mapped | Update mlos error: roomId XXX not mapped for hotelId XXX in Channel Manager. Please contact support team. |
| Rate plan ID is wrongly mapped | Update mlos error: rateplanId mapping issue for hotelId XXX. Please contact support team. |
CM-Restrictions Specific Errors
| Scenario | Error Message |
| Close/Open restriction sent for a non-supported OTA | no ota connected. |
| Rate plan not mapped or incorrectly mapped | rateplanId 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.
PMS API Integration Reference · Version 1.0 · Sandbox Integration Guide