Sign in to get rpoints as credits special offers and exclusive deals.
View/ Print/Cancel Your Booking without Signing in
Don't worry, it happens! Simply enter your email below and we'll send you an email with instructions for resetting your password.
Increase account security when you set a login password
Seems like your email is already linked to a rayna account. if you continue, this email will automatically be associated with your new account
This email address is already registered. please log in to your account
The purpose of this document is to provide technical details about the API's. This document outlines the business processes supported by the API and details about specifications of API’s. It assumes that reader has a technical background and is familiar with JSON, API's.
The communication with the system is performed through https connections. The following table enlists the properties of the request that must be employed:
It is recommended that at least all booking and cancellation transactions sent through the Test / Live environment should be logged and maintained by the travel agent for at least 6 months.
In order to start testing, please notify our support team via e-mail at [email protected]Please note that all transactions through the test system are simply test transactions.
Please be advised few activities are available in Test Environment, Do not compare the products with Live Environment The system functionality between the Test and Live system is exactly the same except for the fact that Bookings processed in the Test environment are not sent to the Suppliers. When you have completed your development, contact your Account Manager for the activation of the access IP address of Test/Live Server is essential for whitelisting
Once you receive your Access token, you can start the development of your application/framework. The whole process of communication consists of simple JSON messages exchange (request /response) between your application/framework and system. Each request needs to be posted (through POST method) using https protocols. For details regarding requests and answers formats please consult the dedicated area of each request. For further assistance in development process do not hesitate to contact our support team.
Every product has a default transfer type and the Below id is passed along with the specific product ids.
A:We provide the REST API, request and response is in the JSON format ( JavaScript Object Notation).
A:API Services having vast pool of UAE / Singapore / Malaysia /Thailand / Hong kong Tours to help you to distribute the product globally which contains attraction / activities.
A:We provide tours time slots & tickets availability in the apis so you can select the timeslot, transfer option & tickets for adult , child , infant.
A:Yes , we provide Sandbox environment with test booking details.
Email:[email protected]
Tel:+97142087555 Ext 253|+912066838800 Ext 253
Mobile:+919823111231
The following sections describes the Country request and response format
{ "statuscode": Status code, "error": Error description, "url": url, "count": Country Count, "result": [ { "countryId": Country Id, "countryName": Country Name } ] }
The following sections describes the City request and response format
{ "CountryId":CountryId }
{ "statuscode": Status code, "error": Error description, "url": Url, "count": City Count, "result": [ { "cityId": City Id, "cityName": City Name } ] }
The following sections describes the Tour static data request and response format
{ "countryId": Country Id, "cityId": City Id }
{ "statuscode": Status code, "error": Error description, "url": Url, "count": Tour Data Count, "result": [ { "tourId": Tour Id, "countryId": Country Id, "countryName": Country Name, "cityId": City Id, "cityName": City Name, "tourName": Tour Name, "reviewCount": Review Count, "rating": Rating, "duration": Duration, "imagePath": Tour Image Path, "imageCaptionName": Tour Image Caption, "cityTourTypeId": Tour Type Id, "cityTourType": Tour Type Name, "tourShortDescription": Tour Short Description, "cancellationPolicyName": Cancellation Policy Name, "isSlot":is Slot, "onlyChild": Only Child, "contractId": Contract Id } ] }
The following sections describes the Tour Static Data by Id request and response format
{ "countryId": Country Id, "cityId": City Id, "tourId": Tour Id, "contractId": Contract Id, "travelDate": Travel Date }
{ "statuscode": Status code, "error": Error description, "url": Url, "count": Tour Data Count, "result": [ { "tourId": tourId, "countryId": countryId, "countryName": countryName, "cityId": cityId, "cityName": cityName, "tourName": tourName, "reviewCount": reviewCount, "rating": rating, "duration": duration, "departurePoint": departurePoint, "reportingTime": reportingTime, "tourLanguage": tourLanguage, "imagePath": imagePath, "imageCaptionName": imageCaptionName, "cityTourTypeId": cityTourTypeId, "cityTourType": cityTourType, "tourDescription": tourDescription, "tourInclusion": tourInclusion, "tourShortDescription": tourShortDescription, "raynaToursAdvantage": raynaToursAdvantage, "whatsInThisTour": whatsInThisTour, "importantInformation": importantInformation, "itenararyDescription": itenararyDescription, "usefulInformation": usefulInformation, "faqDetails": faqDetails, "termsAndConditions": termsAndConditions, "cancellationPolicyName": cancellationPolicyName, "cancellationPolicyDescription": cancellationPolicyDescription, "childCancellationPolicyName": childCancellationPolicyName, "childCancellationPolicyDescription": childCancellationPolicyDescription, "childAge": childAge, "infantAge": infantAge, "infantCount": infantCount, "isSlot": isSlot, "onlyChild": onlyChild, "contractId": contractId, "tourImages": [ { "tourId": tourId, "imagePath": imagePath, "imageCaptionName": imageCaptionName, "isFrontImage": isFrontImage, "isBannerImage": isBannerImage, "isBannerRotateImage": isBannerRotateImage } ], "tourReview": [ { "id": id, "tourId": tourId, "reviewId": reviewId, "reviewTitle": reviewTitle, "reviewContent": reviewContent, "visitMonth": visitMonth, "rating": rating, "imagePath": imagePath, "guestName": guestName } ] } ] }
The following sections describes the Option Static Data request and response format
{ "tourId":tourId, "contractId":contractId }
{ "statuscode": Status code, "error": Error description, "url": Url, "count": Tour option Data Count, "result": [ "touroption": [ { "tourId": tourId, "tourOptionId": tourOptionId, "optionName": optionName, "childAge": childAge, "infantAge": infantAge, "optionDescription": optionDescription, "cancellationPolicy": cancellationPolicy, "cancellationPolicyDescription": cancellationPolicyDescription, "childPolicyDescription": childPolicyDescription, "xmlcode": xmlcode, "xmloptioncode": xmloptioncode, "countryId": countryId, "cityId": cityId, "minPax": minPax, "maxPax": maxPax, "duration": duration, "timeZone": timeZone } ], "operationdays": [ { "tourId": tourId, "tourOptionId": tourOptionId, "monday": monday, "tuesday": tuesday, "wednesday": wednesday, "thursday": thursday, "friday": friday, "saturday": saturday, "sunday": sunday } ], "specialdates": [], "transfertime": [ { "tourId": tourId, "tourOptionId": tourOptionId, "transferType": transferType, "transferTime": transferTime, "duration": duration } ] ] }
The following sections describes the Tour Price request and response format
{ "countryId": Country Id, "cityId": City Id, "travelDate": Travel Date, }
{ "statuscode": Status code, "error": Error description, "url": Url, "count": Tour Data Count, "result": [ { "tourId": tourId, "contractId": contractId, "amount": amount, "discount": discount, "sortOrder": sortOrder } ] }
The following sections describes the Tour Options request and response format
{ "tourId": tourId, "contractId": contractId, "travelDate": TravelDate, "noOfAdult": NoOfAdult, "noOfChild": NoOfChild, "noOfInfant": NoOfInfant }
{ "statuscode": Status code, "error": Error description, "url": Url, "count": Tour Option Data Count, "result": [ { "tourId": tourId, "tourOptionId": tourOptionId, "transferId": transferId, "transferName": transferName, "adultPrice": adultPrice, "childPrice": childPrice, "infantPrice": infantPrice, "withoutDiscountAmount": withoutDiscountAmount, "finalAmount": finalAmount, "startTime": startTime, "departureTime": departureTime, "disableChild": disableChild, "disableInfant": disableInfant, "allowTodaysBooking": allowTodaysBooking, "cutOff": cutOff, "isSlot": isSlot, "isDefaultTransfer": isDefaultTransfer, "rateKey": rateKey, "inventoryId": inventoryId } ] }
The following sections describes the Tour Timeslot request and response format
{ "tourId": tourId, "tourOptionId": tourOptionId, "travelDate": travelDate, "transferId":transferId, "contractId": contractId }
{ "statuscode": Status code, "error": Error description, "url": Url, "count": Timeslot Count, "result": [ { "tourOptionId": tourOptionId, "timeSlotId": timeSlotId, "timeSlot": timeSlot, "available": available, "adultPrice": adultPrice, "childPrice": childPrice, "isDynamicPrice": isDynamicPrice } ] }
The following sections describes the Tour Availability request and response format
{ "tourId": tourId, "tourOptionId": tourOptionId, "transferId": transferId, "travelDate": travelDate, "adult": adult, "child": child, "infant": infant, "contractId": contractId }
{ "statuscode": Status code, "error": Error description, "url": Url, "count": Array Count, "result": [ { "status": status, "message": message, "productType": productType } ] }
{ "tourId": tourId, "travelDate": travelDate, "startTime": startTime, "currentDate": currentDate, "contractId": contractId, "tourOptionId": tourOptionId }
{ "statuscode": Status code, "error": Error description, "currency": currency, "currencysymbol": currencysymbol, "errormessage": errormessage, "count": Arry Count, "result": [ { "tourId": tourId, "optionId": optionId, "fromDate": From date, "toDate": To date, "percentage": Percentage charge (Eg: 100%) } ] }
The following sections describes the Tour Booking request and response format
{ "uniqueNo": uniqueNo, "TourDetails": [ { "serviceUniqueId": serviceUniqueId, "tourId": tourId, "optionId": optionId, "adult": adult, "child": child, "infant": infant, "tourDate": tourDate, "timeSlotId": timeSlotId, "startTime": startTime, "transferId": transferId, "pickup": pickup, "adultRate": adultRate, "childRate": childRate, "serviceTotal": serviceTotal } ], "passengers": [ { "serviceType": serviceType, "prefix": prefix, "firstName":firstName, "lastName": lastName, "email": email, "mobile": mobile, "nationality": nationality, "message": message, "leadPassenger": leadPassenger, "paxType": paxType, "clientReferenceNo": clientReferenceNo } ] }
{ "statuscode": Status code, "error": Error description, "url": Url, "count": Array Count, "result": [ { "refernceNo": refernceNo, "status": status, "bookingId": bookingId, "downloadRequired": downloadRequired, "serviceUniqueId": serviceUniqueId, "servicetype": servicetype, "confirmationNo": confirmationNo } ] }
The following sections describes the Ticket request and response format
{ "uniqNO": Uniq NO, "referenceNo": Reference No, "bookedOption": [ { "serviceUniqueId": Service Unique Id", "bookingId": Booking Id } ] }
{ "statuscode": Status Code, "error": Error, "result": { "bookingId": Booking Id, "referenceNo": referenceNo, "BookingStatus": BookingStatus, "ticketURL": Ticket URL, "optionName":Option Name, "validity": Validity, "validityExtraDetails": Validity Extra Details, "printType": Print Type, "slot": Slot, "pnrNumber": pnrNumber, "ticketDetails": [ { "barCode": Bar Code, "type": "Type", "noOfAdult": No Of Adult, "noOfchild": No Of Child } ] } }
The following sections describes the Tour Cancellation request and response format
{ "bookingId": bookingId, "referenceNo": referenceNo, "cancellationReason": cancellationReason }
{ "statuscode": Status code, "error": Error description, "url": Url, "count": Array Count, "result": [ { } ] }
It is recommended that at least all booking and cancellation transactions sent through the Test / Live environment should be logged and maintained by the hotel agent for at least 6 months.
In order to start testing, please notify our support team via e-mail at [email protected]
When you have completed your development, contact your Account Manager for the activation of the access IP address of Test/Live Server is essential for whitelisting
Before you go live you need to share pdf sample voucher after booking.
{ "code": "NOCOUNT_ERROR", "type": "GENERAL", "description": "No availability found for given criteria try search with other criteria" }
{ "code": "INTERNAL_ERROR", "type": "API_ERROR", "description": "the server was unable to process the request due to an internal error" }
The Countries API has been designed to provide All Countries data. The following sections describe the Countries API Request and Response Format.
{ "Token": "Token" }
{ "CountryId": "ID", "Name": "name" }, Example : "CountryId": "25773", "Name": "AFGHANISTAN"
The Hotel List Search API has been designed to provide list of all Hotels with display Minimum price for particular city. The following sections describe the Hotel List Search request and response format
{ "Token": “Token”, "Request": { "CountryId": "ID" } }
{ "CityId":ID, "Name": "NAME" } Example : "CityId":26467, "Name": "KABUL"
AllCitieswithCountry API has been designed to provide list of all cities with country .The following sections describe the AllCitieswithCountry in one API call request and response format.
{ "Token": "", "Request": { "onlyhotel": 0 } }
{ "cityid": ID, "cityname": "", "countryid": ID, "countryname": "" },
AllHotelsByCity API has been designed to provide list of all Hotel details for that particular City. The following sections describe the AllHotelsByCity API request and response format.
{ "Token":"Token" , "Request": { "CityId" : ID } }
{ "HotelId": ID, "HotelName": "", "Latitude": " ", "longitude": " ", "Address": " ", "Rating": " ", "IsRecomondedHotel": false },
The AllHotelsByCityFull API has been designed to provide All hotels basic data with city wise.The following sections describe the AllHotelsByCityFull API Request and Response Format.
{ "Token":"Token" }
{ "Count": " ", "HotelList": [ { "HotelId": " ", "HotelName": " ", "Description": "", "Latitude": " ", "Longitude": " ", "Address": " ", "Rating": " ", "CountryId": " ", "CountryName": " ", "CityId": " ", "CityName": " ", "HotelFrontImage": "", "IsRecomondedHotel": "FALSE", "IsActive": "", "UpdatedDate": "" } ] }
Example :{ "HotelList": [ { "HotelId": 100530, "HotelName": "A la Carte Danang", "Description": "-", "Latitude": "16.0687593", "Longitude": "108.24506140000005", "Address": "200 Vo Nguyen Giap Street, Son Tra District, Da Nang, Vietnam", "Rating": "4", "CountryId": 43240, "CountryName": "Vietnam", "CityId": 43261, "CityName": "Da Nang", "HotelFrontImage": "https://d2lzo8rjhr36c.cloudfront.net//Images/Dubai/100530/1-ThumbNail.jpg", "IsRecomondedHotel": "FALSE", "IsActive": "active" } ], "Count": 1 }
The Availability API has been designed to provide list of all Hotels The following sections describe the hotellistsearch API request and response format. Currency set up done only once account is created and you have to use that Currency for transaction with api.
{ "Token": "", "Request": { "Rooms": [ { "RoomNo": 1, "NoofAdults": 1, "NoOfChild": 1, "ChildAge": [ 1, 0 ] } ], "CityID": 1, "CheckInDate": "", "CheckOutDate": "", "NoofNights": 1, "Nationality": "", "Filters": { "IsRecommendedOnly": 0, "IsShowRooms": 1, "IsOnlyAvailable": 0, "StarRating": { "Min":0, "Max":5 }, "HotelIDs": "" } }, "AdvancedOptions": { "CustomerIpAddress": "11.111.111.111", "Currency": "" } }
{ "AvailabilityRS": { "SearchKey": "", "Count": 1, "Currency": "", "HotelResult": [ { "StartPrice": 0, "HotelId": 0, "HotelOption": [ { "HotelOptionId": "", "MinPrice": 0, "IsCombineRoom": true, "HotelRooms": [ [ { "RoomNo": "", "RoomTypeName": "", "MealName": "", "Price": 0, "BookingStatus": "", "RoomToken": "" } ] ] } ] } ] } }
As we have both direct inventories and dynamic rates also so for some cases you will receive combined room in multiple room search ,so for easy to identify these rates we have now added new parameter in availability response IsCombined (true,false) if its true then rooms are combined to one room .for example : if search is forrooms :2room 1 : 1 adultroom 2 : 2 adultthen id IsCombined =true that means both rooms are combined in one (roomNo: "1") ;if False : then you recieve list of rooms(RoomNo:1,RoomNo:2).and when you try to book such combined room you have to pass pax details separately for both the rooms.-For Essential information you need to hit CancellationPolicy/Multi API
The AvailabilityWithCancellation API has been designed to provide list of Hotels with cancellation policy. The following sections describe the hotellistsearch API request and response format. Currency set up done only once account is created and you have to use that Currency for transaction with api.
The CancellationPolicy for Hotel API has been designed to provide Price of cancellation for particular Room. The following section describes API request and response format.
{ "Token": "", "Request": { "SearchKey": "", "HotelOptionId": "", "RoomToken": "" }, "AdvancedOptions": { "CustomerIpAddress": "11.111.111.111", "Currency": "" } }
{ "Error": [], "CancellationRS": { "Currency": "", "EssentialInformation": "", "CancellationPolicy": [ { "FromDate": "", "ToDate": "", "CancellationPrice": 0 }, { "FromDate": "", "ToDate": "", "CancellationPrice": 4 } ] } }
The CancellationPolicyMulti for Hotel API has been designed to provide Price of cancellation for multiple Room in single request. The following section describes API request and response format.
{ "Token": "", "Request": { "SearchKey": "", "HotelOption": { "HotelOptionId": "", "HotelRooms": [ { "RoomNo": "1", "RoomToken": " " }, { "RoomNo": "2", "RoomToken": " " } ] } }, "AdvancedOptions": { "CustomerIpAddress": "11.111.111.111", "Currency": "USD" } }
{ "Error": [], "Currency": "MYR", "CancellationRS": [ { "RoomNo": " ", "RoomTypeName": " ", "MealName": " ", "EssentialInformation": " ", "CancellationPolicy": [ { "FromDate": " ", "ToDate": " ", "CancellationPrice": 0 }, { "FromDate": " ", "ToDate": " ", "CancellationPrice": } ] }, { "RoomNo": "2", "RoomTypeName": " ", "MealName": " ", "EssentialInformation": " ", "CancellationPolicy": [ { "FromDate": " ", "ToDate": " ", "CancellationPrice": 0 }, { "FromDate": " ", "ToDate": " ", "CancellationPrice": 0 } ] } ] }
The PreBook API has been designed to check availability status of booking before book. This API must hit once for one booking or you will get duplication error.The following section describes API request and response format. in case of isCombineRoom= true we are going to do one change in previous response we sending price = 0 in other rooms and in roomNo=1 we giving you total price , but in new response we divide price in each room Total price will not change.only price is divided inside room.
{ "Token": "", "Request": { "SearchKey": "", "HotelOption": { "HotelOptionId": "", "HotelRooms": [ { "RoomNo": "1", "RoomToken": "" } ] } }, "AdvancedOptions": { "CustomerIpAddress": "11.111.111.111", "Currency": "" } }
{ "PreBookRS": { "HotelOption": { "HotelName": "", "Nationality": "", "BookingToken": "", "Status": "Bookable", "IsPriceChange": 0, "CheckInDate": "", "CheckOutDate": "", "TotalPrice": 0, "HotelRooms": [ { "UniqueId": 0, "RoomNo": "1", "RoomTypeName": "", "MealName": "", "Price": 0, "PriceChange": { "OldPrice": 0, "NewPrice": 0 } } ] } }, "Currency": "" }
{ "Error": [], "PreBookRS": { "HotelOption": { "HotelName": "AVANI Deira Dubai Hotel", "Nationality": "malaysia", "BookingToken": "BookingToken" , "Status": "Bookable", "IsPriceChange": 0, "CheckInDate": "01-21-2020", "CheckOutDate": "01-22-2020", "TotalPrice": 522.38, "HotelRooms": [ { "UniqueId": 158841, "RoomNo": "1", "RoomTypeName": "2 X Single room ", "MealName": "Room Only", "Price": 261.19, "PriceChange": { "OldPrice": 0, "NewPrice": 0 } }, { "UniqueId": 158842, "RoomNo": "2", "RoomTypeName": "2 X Single room ", "MealName": "Room Only", "Price": 261.19, "PriceChange": { "OldPrice": 0, "NewPrice": 0 } } ] }, "Currency": "AED" } }
The Book API has been designed to give booking details .The following section describes API request and response format. After getting response or error in book response. you have to mandatory perform booking detail api to get the actual status of booking using your internal reference or reference number from Bookresponse.
{ "Token": "", "Request": { "SearchKey": "", "BookRQ": { "BookingToken": "", "TotalPrice": 90, "InternalReference": "", "HotelRooms": [ { "UniqueId": 44144, "RoomNo": 1, "IsLead": "1", "PaxType": "Adult", "Prefix": "Mr.", "FirstName": "IOS", "LastName": "Test", "ChildAge": "0" }, { "UniqueId": 44145, "RoomNo": 2, "IsLead": "1", "PaxType": "Adult", "Prefix": "Mrs.", "FirstName": "test", "LastName": "test", "ChildAge": "0" } ] } }, "AdvancedOptions": { "CustomerIpAddress": "11.111.111.111", "Currency": "USD" } }
{ "BookRS": { "BookingId": 0, "ReferenceNo": "1577MA011900115", "InternalReference": "animesh" } , "Currency": "" , "Error": [] }
API has been designed to Generate bookingDetails .The following section describes API request and response format. Only one ID can be passed. You can get booking details using either BookigID or your internalReference
{ "Token": "", "Request": { "BookingDetailRQ": { "BookingId": "0", "InternalReference": "", "ReferenceNo": "" } }, "AdvancedOptions": { "CustomerIpAddress": "11.111.111.111", "Currency": "" } }
{ "BookingDetailRS": { "HotelOption": { "HotelName": "", "HotelId": "", "Nationality": "", "BookingId": "", "InternalReference": "", "CheckInDate": "", "CheckOutDate": "", "BookingDate": "", "LeadPaxName": "", "TotalPrice": "", "HotelRooms": [ { "RoomNo": "", "RoomTypeName": "", "MealName": "", "Price": "", "BookingStatus": "Confirmed", "CancellationPolicy": [ { "FromDate": "", "ToDate": "", "CancellationPrice": 0 } ], "Passenger": [ { "IsLead": "", "PaxType": "", "Name": "", "ChildAge": "" } ] } ] } } , "Currency": "" , "Error": [] }
{ "Token": "", "Request": { "CheckHotelCancellationChargesRQ": { "BookingId": "0", "InternalReference": "", "ReferenceNo": "1577MA011900115" } }, "AdvancedOptions": { "CustomerIpAddress": "11.111.111.111", "Currency": "USD" } }
{ "CheckHotelCancellationChargesRS": { "HotelOption": { "BookingId": "", "TotalPrice": "", "TotalCharge": 0, "TotalRefund": "", "CancelCode": "", "HotelRooms": [ { "BookingDetailId": 0, "RoomTypeName": "", "Price": "", "RefundAmount": "" } ] } } , "Currency": "" , "Error": [] }
API has been designed to cancle booking .The following section describes API request and response format.
{ "Token": "", "Request": { "CancelRQ": { "BookingId": "", "BookingDetailId": "0", "CancelCode": "", "Reason": "" "CancelAll":1 } }, "AdvancedOptions": { "CustomerIpAddress": "11.111.111.111", "Currency": "USD" } }
{ "CancelRS": { "HotelOption": { "BookingId": "", "HotelRooms": [ { "RoomTypeName": "", "Message": "Hotel Cancelled Successfully!!!", "CancelStatus": 1 } ] } } , "Currency": "" , "Error": [] }
API has been designed to Generate bookingDetails .Date range allowed 31 days. The following section describes API request and response format.
{ "Token": "", "Request": { "BookingSearchRQ": { "SearchBy": "bookingdate", {bookingdate or checkindate}, "OnlyAPI":1, "SearchCriteria": { "Dates": { "FromDate": "03-19-2019", "ToDate": "04-19-2019" } } } }, "AdvancedOptions": { "Currency": "MYR" } }
{ "Error": [], "BookingSearchRS": { "BookingList": [ { "HotelName": "J", "HotelId": "1", "BookingId": , "InternalReference": "", "ReferenceNo": "AAA", "CheckInDate": "08-14-2019", "CheckOutDate": "08-15-2019", "BookingDate": "04-01-2019", "TotalPrice": 1, "BookingStatus": "cancelled", "IsAPI":true ,false } ], "Currency": "MYR" } }
Please go through certification process in order to get live access.
To ensure what API methods you are using, flow of method calls for these methods. This will help us to verify the integration.
Here we are providing a list of test cases needs to be executed .Request / response for these cases will be required for verification .
Technical team will verify the test cases using Request / Response and suggest if there is any change required.
After completion of step 3, you have to provide test link of your integration website to verify the integration flow.
On successful completion of all the above steps, we will give sign off and provide Live access details.