Airhob API Documentation

Introduction

Airhob API provides a REST based web service over HTTPS, using JSON to encode service request and response data. We use an SSL secured channel to transmit data from client to the service

Headers

apikey – Your sandbox or production API key

mode - sandbox or production

Content-Type - application/json

Environments

There are two environments available for the developers:

a) The TESTING environment for the integration and testing purposes. It's usually slower than the LIVE environment.

b) The LIVE environment is activated after successful integration in the sandbox environment and verification of Go Live steps.

Flights API

Search API
Look API

Description

This API is used to look/price a specific flight. Using this API, you're just diving into the airline inventory and letting the airline know that you're looking at this specific flight. Nice eh?

URL

The URL endpoint is https://dev-sandbox-api.airhob.com/sandboxapi/flights/v2/look

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

See Look request here

Request Description

To form this request, you need to take some parameters from Search API's response. This table can help you taking parameters from Search API's response.

Look API Request Parameters Equivalent Search API Response Parameters
TrackId OneWayAvailabilityResponse > TrackId
ItinearyDetails > Segments > TrackId OneWayAvailabilityResponse > ItinearyDetails > Items > TrackId
ItinearyDetails > Segments > FareIds OneWayAvailabilityResponse > ItinearyDetails > Items > FareDescription > PaxFareDetails > FareId
ItinearyDetails > Segments > fareSellKey OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > SegmentKey
ItinearyDetails > Segments > ValidatingCarrier OneWayAvailabilityResponse > ItinearyDetails > Items > ValidatingCarrier
ItinearyDetails > Segments > Price OneWayAvailabilityResponse > ItinearyDetails > Items > FareDescription > PaxFareDetails[0] > OtherInfo > GrossAmount
ItinearyDetails > Segments > item > EquipmentType OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > AirEquipType
ItinearyDetails > Segments > item > Baggage OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > Baggage
ItinearyDetails > Segments > item > ArrivalDateTime OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > ArrivalDateTime
ItinearyDetails > Segments > item > Destination OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > Destination
ItinearyDetails > Segments > item > Origin OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > Origin
ItinearyDetails > Segments > item > Meal OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > MealCode > MealCode
ItinearyDetails > Segments > item > MarriageGroup OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > MarriageGroup
ItinearyDetails > Segments > item > ClassCode OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > ClassCode
ItinearyDetails > Segments > item > OrgTerminal OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > OrgTerminal
ItinearyDetails > Segments > item > DepartureDateTime OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > DepartureDateTime
ItinearyDetails > Segments > item > OperatingCarrierId OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > CarrierCode
ItinearyDetails > Segments > item > Duration OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > Duration
ItinearyDetails > Segments > item > AircraftType OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > AirCraftType
ItinearyDetails > Segments > item > DestTerminal OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > DesTerminal
ItinearyDetails > Segments > item > CarrierId OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > CarrierCode
ItinearyDetails > Segments > item > FlightID OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > FlightID
ItinearyDetails > Segments > item > FlightNum OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > FlightNum
ItinearyDetails > Segments > item > ApiProvider OneWayAvailabilityResponse > ItinearyDetails > Items > ApiProvider
ItinearyDetails > Segments > item > IsStopAirport OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > IsStopAirport
ItinearyDetails > Segments > item > MajorClassCode OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > MajorClassCode
ItinearyDetails > Segments > item > Rph OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > Rph
ItinearyDetails > Segments > item > ProviderCode OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > ProviderCode
ItinearyDetails > Segments > item > AvailabilityDisplayType OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > AvailabilityDisplayType
ItinearyDetails > Segments > item > ParticipantLevel OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > ParticipantLevel
ItinearyDetails > Segments > item > LinkAvailability OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > LinkAvailability
ItinearyDetails > Segments > item > PolledAvailabilityOption OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > PolledAvailabilityOption
ItinearyDetails > Segments > item > FareBasisCode OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > FareBasisCode
ItinearyDetails > Segments > item > BookingCode OneWayAvailabilityResponse > ItinearyDetails > Items > FlightDetails > ClassCode
Ancillaries API

Description

This API is used to fetch ancillaries made available by the airline like meals, baggage, etc.

URL

The URL endpoint is https://dev-sandbox-api.airhob.com/sandboxapi/flights/v1/ancillaries

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

{ "SellRequestId": "DEcpbvYP3mp5q91H7+7VpQ==", "PassengerRef":"ADT" }

Request Description

Parameter Type Example Value Required Description
SellRequestId string DEcpbvYP3mp5q91H7+7VpQ== REQUIRED Pass value of this parameter as it is received in the response of Look API
PassengerRef string REQUIRED Pass value of FareDescription>PaxFareDetails>PaxType parameter as it is received in the response of Look API
Seats API

Description

This API is used to fetch the seat map of the airline. Please note that you can book free and paid seats for all supported Low Cost Carriers, but only free seats for Full Service Carriers. The booking of paid seats for Full Service Carriers isn't supported yet.

URL

The URL endpoint is https://dev-sandbox-api.airhob.com/sandboxapi/flights/v1/seat

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

{ "SellRequestId": "WGIpLaKt6hxAUbrYo0nbXQ==", "Origin": "DEL", "Destination": "AMD" }

Request Description

Parameter Type Example Value Required Description
SellRequestId string WGIpLaKt6hxAUbrYo0nbXQ== REQUIRED Pass value of this parameter as it is received in the response of Look API
Origin string REQUIRED Pass value of the origin's IATA code for the sector (segment>item) you wish to fetch the seat map for.
Destination string REQUIRED Pass value of the destination's IATA code for the sector (segment>item) you wish to fetch the seat map for.
AllPassengers List OPTIONAL Includes passenger details for each passenger. This information may not be required for all airlines, but it's advised to pass in all requests.
AllPassengers > PassengerType string OPTIONAL ADT/CHD/CNN/INF (Please use the passenger type returned in the Look API response.
AllPassengers > Title string OPTIONAL Pass the title like Mr/Mrs/Ms/Miss/Mstr, etc.
AllPassengers > FirstName string OPTIONAL The first name of the passenger
AllPassengers > LastName string OPTIONAL The last name of the passenger.
Price API

Description

This API is used to store traveler details, ancillaries, and seat information. This API will also create a PNR (Passenger Name Record) in case of a full-service carrier.

URL

The URL endpoint is https://dev-sandbox-api.airhob.com/sandboxapi/flights/v2/price

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

See Price request here

Request Description

Parameter Type Example Value Required Description
sellRequestId string a6/1dz3ky170II+YoeHsag== REQUIRED Pass value of this parameter as it is received in the response of Look API
customer JSONObject REQUIRED Contains details of customers/travellers for an itinerary
PhoneNumber string 999999999 REQUIRED Phone number of lead traveller
CountryCode string 91 REQUIRED Cellular country code of lead traveller
Email string youremail@mail.com REQUIRED Email id of lead traveller
GstCity string New Delhi OPTIONAL GST city of lead traveller.
GstCompanyAddress string 7, Race Course Road OPTIONAL GST company address of lead traveller.
GstCompanyName string Airhob OPTIONAL GST company name of lead traveller.
GstEmailID string support@airhob.com OPTIONAL GST email id of lead traveller.
GstMobileNumber string 919069103251 OPTIONAL GST mobile phone number of lead traveller.
GstNo string 27AABCT6166A1ZJ OPTIONAL GST number of lead traveller.
GstPincode string 110011 OPTIONAL GST pincode of lead traveller.
GstState string Delhi OPTIONAL GST state of lead traveller.
CustomerDetails JSONArray REQUIRED Contains list of all traveller's details for an itinerary.
CustomerDetails > PassengerType string ADT / CNN / CHD / INF OPTIONAL Type of passenger. ADT for adult passengers. CNN and CHD for child passengers. INF for infant passengers
CustomerDetails > Title string Mr. / Mrs. / Ms. / Miss. / Mstr. REQUIRED Title of a traveller
CustomerDetails > FirstName string John REQUIRED First name of a traveller
CustomerDetails > LastName string Doe REQUIRED Last name of a traveller
CustomerDetails > NationalityCountry string IN REQUIRED for international journey Nationality of a traveller
CustomerDetails > DOB JSONObject REQUIRED Traveller's date of birth
DOB > Day string 23 REQUIRED Day of DOB
DOB > Month string 12 REQUIRED Month of DOB
DOB > Year string 1990 REQUIRED Year of DOB
CustomerDetails > PassportNumber string H7666777 REQUIRED for international journey Passport number of a traveller
CustomerDetails > IssueCountry string IN REQUIRED for international journey Passport issuing country
CustomerDetails > PassportExpiryMonth string 12 REQUIRED for international journey Expiry Month of passport
CustomerDetails > PassportExpiryDay string 23 REQUIRED for international journey Expiray day of a traveller's passport
CustomerDetails > PassportExpiryYear string 2030 REQUIRED for international journey Expiry year of a traveller's passport
CustomerDetails > ExtraAncillaryServices Array [] REQUIRED if ancillaries are chosen Each object will be for a unique ancillary chosen for this passenger. Please understand what values to pass in this object for below specific parameters, while for the rest of the parameters (mentioned in the Price API request sample), you can use the Ancillaries response and pass them as it is.
CustomerDetails > ExtraAncillaryServices > ServiceId string aKVFKtVqWDKA/M+MBAAAAA==$$$CKMUIRxS REQUIRED Pick from AncillaryServiceList>AncillaryServiceData>code
CustomerDetails > ExtraAncillaryServices > ServiceName string Fast Forward REQUIRED Pick from AncillaryServiceList>AncillaryServiceData>description
CustomerDetails > ExtraAncillaryServices > OfferItemId string MiFNQ0ZCUkZRLSFQ TVRVISFBTUQhUVA hNjM4MjQ5NzYwM DAwMDAwMDAwIURF TCE0NTAzISA- REQUIRED Pick from AncillaryServiceList>AncillaryServiceData>offeritemid
CustomerDetails > ExtraAncillaryServices > ServiceType string Baggage REQUIRED Pick from AncillaryServiceList>type
CustomerDetails > AssignedSeats Array [] REQUIRED if seats are chosen Each object will be for a unique seat chosen for this passenger. Please refer to the request sample, and note that all parameters are required to be passed. You can use the Seats response to understand what values to pass in this object.
Issue API

Description

This API is used for finally issuing the ticket and creating the ticket number for each traveler.

URL

The URL endpoint is https://dev-sandbox-api.airhob.com/sandboxapi/flights/v2/issue

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

{"sellRequestId":"/6KfDIH/TmET9niBEWuzuQ=="}

Request Description

Issue API Request Parameters Equivalent Look API Response Parameter
sellRequestId sellRequestId
Itinerary

Description

This API is used for retrieving the flight itinerary that has been booked. We would recommend to call this API after 'Issue API' to retrieve all details against the ticket.

URL

The URL endpoint is https://dev-sandbox-api.airhob.com/sandboxapi/flights/v1.1/itinerary?tripid=86133583

Method

The HTTP verb to be used is GET.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Response

See Itinerary response here

Response Description

Cancel API

Description

This API is used to cancel the booking

URL

The URL endpoint is https://dev-sandbox-api.airhob.com/sandboxapi/flights/v1/cancel

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

{ "SellRequestId": "E+450ql9Y++9zOE5oM2DHA==" }

Request Description

Parameter Type Example Value Required Description
SellRequestId string a6/1dz3ky170II+YoeHsag== REQUIRED Pass value of this parameter as it is received in the response of Look API
Go Live Steps

Before giving live access with production URLs, we need to verify and check if the integration is working properly. We request you to please make below bookings in the sandbox environment and share the BOOKING IDs with us.

1. Oneway flight with ApiProvider as PT with origin and destination in the same country. e.g. BOM-DEL

2. Oneway flight with ApiProvider as AB with origin and destination in the same country, with one ancillary. eg. CGK-SUB

3. Oneway flight with ApiProvider as 1AN with origin and destination in the same country, with one ancillary and seat. e.g. DEL-BLR

4. Oneway flight with ApiProvider as PT/DA with origin and destination in the different countries. e.g. DEL-DXB

5. Roundtrip flight with ApiProvider as PT with origin and destination in the different countries. e.g. DEL-DXB or KUL-DMK

6. Roundtrip flight with ApiProvider as DA with origin and destination in the different countries. e.g. SIN-JFK or DEL-SYD

7. Cancel the first three bookings.
Once we verify these use cases, we’ll get back to you with the confirmation or the problems if there are any. After these test cases are certified, our team will want to get access to your test environment for making one or two test bookings to make sure the integration is healthy.

Post this, we'll move forward with the activation of the production environment.

Important Assets

Popular Airports

Click here to get list of popular airports around the world.

Product Errors

Common Errors

Error Code Message
E_C_11 Your API key has expired
E_C_12 Your IP address doesn't match
E_C_13 Invalid apikey sent in header
E_C_14 You don't have access to flights API.
E_C_15 You don't have access to tours API.
E_C_16 You don't have access to stays API.
E_C_17 You don't have access to activities API.
E_C_18 You don't have access to europass API.
E_C_19 You don't have access to trains API.
E_C_20 Something went wrong in authenticating product rights.
E_C_21 Your endpoint is of sandbox environment but you have passed mode as 'production'. Please pass mode as 'sandbox'.
E_C_22 Incorrect mode sent in header. For Sandbox environment pass 'sandbox' and for production environment pass 'production'
E_C_23 Your account is currently inactive. Please contact Airhob support team at api@airhob.com
E_C_24 You don't have enough balance in your Airhob Wallet. If you want us to add some dummy balance in your Airhob Wallet for sandbox environment, please write an email to api@airhob.com and we’ll do the rest.
E_C_25 Incomplete Header
E_C_26 Your endpoint is of production but you have passed mode as 'sandbox'. Please pass mode as 'production'.

Flight Errors

Error Code Message
E_F_11 You can't use this API for Indian domestic round-trip flights. Pass TripType as 'O' and hit this API twice. So you'll need to use the domestic one-way API twice, once for onward flight and once for return flight. The subsequent API's below of Look, Price and Issue will also be separately called for each onward and return flight.
E_F_12 'OriginDestination' must have two elements for round-trip
E_F_13 'OriginDestination' must have one element for one-way. To search a round-trip Flight, pass TripType as 'R'.
E_F_14 Invalid 'TripType'. Kindly pass 'O' for one-way and 'R' for round-trip. Make sure it's in Upper Case.
E_F_15 Invalid 'ClassType'. Possible values for ClassType are 'Economy', 'PremiumEconomy', 'Business' and 'First'.
E_F_16 Invalid 'Currency'. Please refer the Airhob API Documentation to see our supported currencies.
E_F_17 No flights found for your search criteria. Try passing different 'Destination' or 'TravelDate' or 'Origin'.
E_F_18 You can't use this API for non-Indian domestic round-trip flights.
E_F_19 Invalid 'TripType'. Kindly pass 'R' for round-trip. Make sure it's in Upper Case.
E_F_20 TrackId is missing.
E_F_21 Invalid TrackId.
E_F_22 Your TrackId has expired.
E_F_23 Bad request.
E_F_24 ItineraryDetails is missing.
E_F_25 Segments is missing.
E_F_26 item is missing.
E_F_27 FlightID is missing.
E_F_28 CarrierId is missing.
E_F_29 Origin is missing.
E_F_30 Destination is missing.
E_F_31 DepartureDateTime is missing.
E_F_32 ArrivalDateTime is missing.
E_F_33 There's not enough balance in Airhob Wallet to price this flight. If you want us to add some dummy balance in your Airhob Wallet for sandbox environment, please write an email to api@airhob.com and we’ll do the rest.
E_F_34 SellRequestId is missing.
E_F_35 Invalid SellRequestId
E_F_36 Your SellRequestId has expired.
E_F_37 Email is missing.
E_F_38 CountryCode is missing.
E_F_39 PhoneNumber is missing.
E_F_40 CustomerDetails is missing.
E_F_41 Passenger count does not match.
E_F_42 PassengerType is missing.
E_F_43 Invalid PassengerType. It should be ADT or CNN or INF
E_F_44 Title is missing.
E_F_45 FirstName is missing.
E_F_46 FirstName can only have alphabets. Special characters and numbers are not accepted.
E_F_47 LastName is missing.
E_F_48 LastName can only have alphabets. Special characters and numbers are not accepted.
E_F_49 PassportExpiryDay is missing.
E_F_50 PassportExpiryMonth is missing.
E_F_51 PassportExpiryYear is missing.
E_F_52 PassportNumber is missing.
E_F_53 IssueCountry is missing.
E_F_54 NationalityCountry is missing.
E_F_55 Invalid IssueCountry.
E_F_56 Invalid NationalityCountry.
E_F_57 Invalid DOB passed for a passenger
E_F_58 DOB is missing.
E_F_59 Day is missing in DOB.
E_F_60 Month is missing in DOB.
E_F_61 Year is missing in DOB.
E_F_62 Infant age should be less than 2 years.
E_F_63 Child age should be greater than 1 and less than 12 years.
E_F_64 Adult age should be greater than 11 years.
E_F_65 Invalid Title. For adult paasenger, title should be Mr or Ms or Mrs
E_F_66 Invalid Title. For child or infant paasenger, title should be Miss or Mstr
E_F_67 There's not enough balance in Airhob Wallet to book this flight. If you want us to add some dummy balance in your Airhob Wallet for sandbox environment, please write an email to api@airhob.com and we’ll do the rest.
E_F_68 Something went wrong.
E_F_69 Invalid api key
E_F_70 Currency is missing.
E_F_71 NoOfInfants must be less than or equal to NoOfAdults.
E_F_72 Summation of NoOfAdults and number of NoOfChilds must be less than 10.
E_F_73 NoOfAdults is missing.
E_F_74 TripId is missing.
E_F_75 Invalid TripId.
E_F_76 Invalid passport expiry date.
E_F_77 Timeout. Couldn't get any response from airline. Please try later.
E_F_78 FirstName must have at least two letters.
E_F_79 LastName must have at least two letters.
FAQs

Please make a note that these FAQs are listed as per the most updated version of all APIs.


1. How many number of passengers can be passed in Search API at minimum and maximum?

Minimum: 1 adult
Maximum: Summation of adult and child passengers should be equal or less than 9. Number of infants should be equal or less then number of adults. If this conditions are not satisfied, then you will get no flights.


2. What are the possible values for ClassType?

"Economy"/"PremiumEconomy"/"Business"/"First"


3. How can I get the IATA codes for Origin and Destination?

Please have a look at important assets(can be found at this page only) where you can find popular airports around the world with their IATA code.


4. How would I know if an Itinerary has connecting flights?

There is an element in response of Search and Look API named as "Connection". It has all the information for connecting flights. You could also use the FlightDetails element to understand the same.


5. Can you please let me know how to get Layover information in Search API between each flight?

The layover time needs to be calculated by subtracting the departure time of upcoming flight and the arrival time of the first flight.


6. In Price API request, what are the possible titles for passenger?

For Adult Passengers: Mr / Mrs / Ms
For Child and Infant passengers: Miss / Mstr


7. An itinerary has connecting flights, then will PNR and Eticket be different for connecting flights?

No. PNR and Eticket will be same because the validating carrier(issuing carrier) for all the connecting flights will be same.


8. Some destinations don't return flights with all API Providers. Are we doing anything wrong?

No. In the test environment, not every airline and API Provider will return proper data that can be booked. If this is affecting your GoLive process, please reach out to support and they should help you find the resolution.


9. Can we get help in how to integrate the API in our application?

Our support team is available over email for any queries with respect to our API, however we won't be able to help specific to your application and are limited only to the API we provide. We please recommend reading through the documentation in detail to understand the integration process.


Stays API

API workflow

Here is booking flow of Stays API.

1. Search API.

Search API lets you search hotels. We will send you all the available hotels with the minimum price of each hotel.

2. Properties API

This API gives you detailed information of the hotel along with all the possible room rates.

3. Price API

This API is used to save the room inventory you're trying to book. For your booking flow, it's recommended that you collect the payment of your customer after Price API is success and before Issue API is called.

4. Issue API

This API confirms your booking and gives you a Airhob booking ID (for any communications with us) and supplier reference which is the main confirmation number for the hotel to identify the booking.
Please click here to access a sample voucher that you need to create after Issue API is successful. This voucher must be sent to your customer as they will show this while check-in. You need to make sure that your voucher includes all information as shown on the sample voucher, to avoid any confusions.

Search API

Description

This API is used for searching hotels based on a given city which returns basic property information along with its lowest price.

URL

The URL endpoint is https://dev-sandbox-api.airhob.com/sandboxapi/stays/v2/search

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

{"City":"Manchester","Country":"GB","FromDate":"2024-04-22","ToDate":"2024-04-23","ClientNationality":"IN","Currency":"USD","Occupancies":[{"NoOfAdults":2,"ChildrenAges":[5,7]},{"NoOfAdults":2}]}

Request Description

Parameter Type Example Value Required Description
City string Manchester REQUIRED Pass the city for which you want to fetch hotel rates. You need to make sure the city name matches with the city master data file, present under 'Important assets' below.
Country string GB REQUIRED Pass the country code against the city passed above. You need to make sure the code matches with the master data file, present under 'Important assets' below.
FromDate string 2024-06-23 REQUIRED Check-in date. Format must be yyyy/mm/dd.
ToDate string 2024-06-24 REQUIRED Check-out date. Format must be yyyy/mm/dd.
ClientNationality string IN REQUIRED Nationality of the guest. Two-letter ISO Country code.
Currency string USD REQUIRED Preferred currency for the prices in the results. Three letter ISO Currency code.
Occupancies array of occupancy elements REQUIRED Contains details of occupancies. Number of elements in this array equals to number of rooms. Each element in this array represents a room. You can add a maximum 5 rooms with each room having a maximum of 4 guests.
NoOfAdults string 1 Number of adults
ChildrenAges array of children's ages Ages of children. Number of elements in this array are equal to number of children guest.

Response

See response here

Response Description

Parameter Type Example Value Description
ErrorMessage string Holds error message, if any
Errors element Holds error information
ProductErrors > ErrorCode string E_C_13 Unique airhob error code
ProductErrors > Message string Invalid apikey sent in header Description of error
hotelData array of hotel elemets three-letter ISO currency code
HotelCode string AH_277630 Airhob unique code for a hotel
fullName string The Heart Apartments at MediaCity UK Full name of hotel
starCategory integer 4 Star category of the hotel
hotelAddresss element Contains hotel address
street string MediaCityUK Salford Quays Street of hotel
latitude string 53.4720737 Latitude data for geolocation of hotel
longitude string -2.3000156 Longitude data for geolocation of hotel
hotelFacilities array of hotel facility elements Contains falcilities provided by hotel
hotelFacilities title string dry cleaning / laundry service Name of facility
hotelImages array of hotel images Contains images of hotel
url string https://cdn.grnconnect.com/hotels/ images/eb/3f/ eb3f151dbe34f23bab229402f26f93fa0fc91017.jpg Image URL
minprice integer 365 Minimum total price including taxes
price element Contains details of price
key string 2 Don't worry about it. This is used for internal purpose.
price_details element Contains price details
GST array of GST Contains GST details
GST > name string Total Name of charge
GST > included boolean true / false ‘true’ if the charge is already included in the price.
GST > currency string USD Three-letter ISO currency code
GST > amount_type string value Defines type of amount. 'value' represents flat fee.
GST > amount integer 3 amount of charge
net array of net Net price excluding taxes
net > name string Net / CustomMarkup Name of charge. You will receive amount for both 'net' and 'CustomMarkup'. net specifies the actual net fare of the hotel, while CustomMarkup specifies your markup amount. This will only contain a value if you've added markup percentage from the dashboard. This element will also mention "included='false'" which means the CustomMarkup is not already added in the minprice. You need to add it on your own.
net > included boolean true / false ‘true’ if the charge is already included in the price.
net > currency string USD Three-letter ISO currency code
net > amount_type string value Defines type of amount. 'value' represents flat fee.
net > amount string 362 amount of charge
distance array of distance Distance between geolocation (Latitude and Longitude) passsed in request of this API and hotel geolocation. If geolocation is not passed in request of this API then by default API will grab the geolocation of City.
type string KM / MILE Distance unit measurement
distance float 5952.3 Actual distance value
distanceUnit string 0 / 1 0' for KM and '1' for MILE
hotelDescription string Description of hotel
City string Manchester City of hotel
Properties API

Description

This API is used for getting detailed rates, for the requested property, along with all the information related to the property.

URL

The URL endpoint is https://dev-sandbox-api.airhob.com/sandboxapi/stays/v2/properties

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

{"search_id":"cg5n53k7lepctl2dkd3loeze6y*BJ7rZNWL","HotelCodes":"1869723","FromDate":"2024-04-22","ToDate":"2024-04-23","Currency":"USD","Occupancies":[{"NoOfAdults":2,"ChildrenAges":[5,7]},{"NoOfAdults":2}],"ClientNationality":"IN","ProviderCode":"1G","HotelChain":"CP","Availability":"Available","HotelTransportation":"31","VendorLocationKey":"rYqrL4UqWDKA8VF2bAAAAA==","ReserveRequirement":"Guarantee"}

Request Description

Parameter Type Example Value Required Description
HotelCodes string 1869723 REQUIRED Unique code for a hotel. This is equivalent to 'hotelData > HotelCode' from the Search API response.
FromDate string 2024-06-23 REQUIRED Check-in date. Format must be yyyy/mm/dd.
ToDate string 2024-06-24 REQUIRED Check-out date. Format must be yyyy/mm/dd.
Currency string INR REQUIRED Preferred currency for prices in response. Three letter ISO Currency code.
Occupancies array of occupancy elements REQUIRED Contains details of occupancies. Number of elements in this array equals to number of rooms. Each element in this array represents a room.
NoOfAdults string 1 REQUIRED Number of adults
ChildrenAges array of children's ages REQUIRED Ages of childrens. Number of elements in this array is equal to number of children guest.
ClientNationality string IN REQUIRED Nationality of the guest. Two-letter ISO Country code.
ProviderCode string 1G REQUIRED Required for internal reference. Please pick from the parameter with same name from the search response
HotelChain string CP REQUIRED Required for internal reference. Please pick from the parameter with same name from the search response
Availability string Available REQUIRED Required for internal reference. Please pick from the parameter with same name from the search response
HotelTransportation string 31 REQUIRED Required for internal reference. Please pick from the parameter with same name from the search response
VendorLocationKey string rYqrL4UqWDKA5mmnWAAAAA== REQUIRED Required for internal reference. Please pick from the parameter with same name from the search response
ReserveRequirement string Other REQUIRED Required for internal reference. Please pick from the parameter with same name from the search response

Response

See response here

Response Description

Parameter Type Example Value Description
search_id string ub5gauftebuhrjewtem65tbvvu$3cd479ae-01ed-4 Unique ID that uniquely identifies a request. It will be expired after some minutes.
Errors element Holds error information
ProductErrors > ErrorCode string E_C_13 Unique airhob error code
ProductErrors > Message string Invalid apikey sent in header Description of error
no_of_rooms integer 2 Number of rooms
no_of_nights integer 1 Number of nights
no_of_hotels integer 0 Number of hotels
no_of_children integer 2 Number of childrens
no_of_adults integer 3 Number of adults
hotel element Contains hotel details
ratetype element Contains different type of rates
bundledRates array of bundled rates Contains bundled rates. Bundled rate shows the prices of multiple rooms combinely.
supports_cancellation boolean true / false true' if booking can be cancelled
supports_amendment boolean true' if booking can be amended
rooms array of rooms Contains room details
rooms > room_type string Apartment, 2 Bedrooms Type of room
rooms > no_of_rooms integer 1 Number of rooms
rooms > no_of_children integer 1 Number of childrens
rooms > no_of_adults integer 2 Number of adults
rooms > description string Apartment, 2 Bedrooms Description of room
rooms > children_ages array of children ages Contains ages of children
room_code string Room code representing rooms in rate
rate_type string bookable Possible values are ‘bookable’ , ‘refetch’ and ‘recheck’.
rate_key string Unique key representing rate
rate_comments string Object of dynamic key value pairs.
Eg:
{
“comments”: “Rate comments come here”,
“checkin-Instruction”: “Checking details come here”
}
promotions_details array of promotions (strings) Contains promotions, if any
price_details element
GST array of GST Contains GST details
GST > name string Total Name of charge
GST > included boolean true / false ‘true’ if the charge is already included in the price.
GST > currency string USD Three-letter ISO currency code
GST > amount_type string value Defines type of amount. 'value' represents flat fee.
GST > amount integer 3 amount of GST
net array of net Net price excluding taxes
net > name string Net / CustomMarkup Name of charge. You will receive amount for both 'net' and 'CustomMarkup'. net specifies the actual net fare of the hotel, while CustomMarkup specifies your markup amount. This will only contain a value if you've added markup percentage from the dashboard. This element will also mention "included='false'" which means the CustomMarkup is not already added in the convertedPrice. You need to add it on your own.
Netprice > included boolean true / false ‘true’ if the charge is already included in the price.
Netprice > currency string USD Three-letter ISO currency code
Netprice > amount_type string value Defines type of amount. 'value' represents flat fee.
Netprice > amount string 362 amount of net price
convertedPrice integer 365 Total price including taxes
payment_type array AT_WEB Allowed payment type. Possible Values: AT_WEB
other_inclusions array of other inclusions Contains other inclusions , if available
non_refundable boolean true / false true' if the rate is Non-refundable
no_of_rooms integer 2 Number of rooms included in this rate
includes_wifi boolean true / false true' if wi-fi is included in this rate
includes_boarding boolean true / false true' if boarding is included in this rate
group_code string wsdbjylcxn4ufdya7kiw2hw74dnkrqy Don't worry about it. This is used for internal purpose.
currency string USD Three-letter ISO currency code ofprice
currsymbol string Currency symbol of price
cancellation_policy element Cancellation policy details
under_cancellation boolean true / false true' if the booking is under cancellation,
i.e. cancellation charges will apply should a cancellation
be made later.
details array List of cancellation windows and applicable charges
details > nights integer 1 Charges in number of nights
details > converted_from string 30-09-17 Date from which the charge in this window applies
details > converted_flat_fee float 0 Charge applicable
details > currency string USD Three-letter ISO currency code
details > percent float 0 Charges in percentage
converted_cancel_by_date string 30-09-17 Last date for cancellation without charges
amount_type string nights Defines the type of value in details:
value represents amount
percent represents percentage
nights represents charges in number of nights.
For nights, in some cases, percentage is also returned.
In those cases charges have to be calculated by
taking (percentage x nights) value.
allotment integer 5 Number of rooms available for a particular room type
cancellation_policy_code string uwird5tpwf3spucqu2nwigox4xmklqfm62zorvl63i Unique ID for cancellation policy
boarding_details array of boarding details Contains boarding details, if available
apiref string NRG / BH Don't worry about it. This is used for internal purpose.
NonbundRates array of Non Bundled rates Contains details of non bundled rates. Non Bundled rate shows the prices of rooms seperately.
rateKey string Internal rate key to be used for confirmation
rateClass string NOR Values:

NOR = Normal

NRF = Non-refundable

SPE = Special

OFE = Offer

PAQ = Package

NRP = Non-refundable package
convertedNet string 3263 Total price including taxes
allotment integer 5 Number of rooms available for a particular room type
paymentType string AT_WEB Allowed payment type. Possible Values: AT_WEB
packaging boolean true / false Identifies if the rate is for packaging
boardName string BED AND BREAKFAST Board name
cancellationPolicies array of policies elements
convertedaAmount float Amount that will be charged after a certain date
convertedDate string Beginning date when the amount will be charged
rooms integer 1 Number of rooms requested with the same occupancy
adults integer 1 Number of adults for the room
children integer 1 Number of children requested
childrenAges string Children ages separated by commas
offers array of offer elements
offer element Contains offer details
offer > code integer Offer code
offer > offer float Offer amount
offer > name string Offer name
promotions array
rmcode string DBL.DX Room code
rmname string DOUBLE DELUXE Room name
apiref string NRG / BH Don't worry about it. This is used for internal purpose.
currency string INR Three-letter ISO currency code
currsymbol string Currency symbol of price
price_details element Contains price details
hotel_charges array of hotel charges Contains hotel charges
hotel_charges > name string Name of charge
hotel_charges > included boolean ‘true’ if the charge is already included in the price.
hotel_charges > currency string Three-letter ISO currency code
hotel_charges > amount_type string value Defines the type of amount. 'value' represents flat fee.
hotel_charges > amount integer amount of charge
images string Images of the hotel
hotel_code string 277630$H!0277630$0 Airhob unique code for a hotel
hotelinfo element
hotelinfo > DBId integer 277630 Don't worry about it. This is used for internal purpose.
hotelinfo > fullName string The Heart Apartments at MediaCity UK Full Name of hotel.
hotelinfo > starCategory integer 4 Star category of the hotel
hotelinfo > cityname string Manchester City of hotel
hotelinfo > country string United Kingdom Country of hotel
hotelinfo > hotelAddresss element Contains hotel address
hotelAddresss > street string Salford Quays Street of hotel
hotelAddresss > streetNumber string Street number of hotel
hotelAddresss > city string Manchester City of hotel
hotelAddresss > zipCode string M50 2TJ Zip code of hotel
hotelAddresss > country string GB Country of hotel
hotelAddresss > latitude string 53.4720737 Latitude of hotel
hotelAddresss > longitude string -2.3000156 Longitude of hotel
hotelAddresss > addresslines array of address lines Contains adress of hotel
hotelinfo > hotelContacts array of hotel contacts
hotelContacts > phone_number string Phone number of hotel
hotelinfo > hotelEmails array of hotel emails Contains hotel email details
hotelEmails > emails string reservations@theheartapartments.co.uk Email ID of hotel
hotelinfo > hotelWebs array of hotel web Cotains hotel web details
hotelWebs > web_url string http://www.theheartapartments.co.uk/ Web URL of hotel
hotelinfo > hotelDescription array of hotel descriptions Contains description of hotel
hotelDescription > description string Description of hotel
hotelFacilities array of hotel facilities Contains hotel facilities
hotelFacilities > title string check-in hour Hotel facility
hotelinfo > hotelImages array of hotel images
checkout string 2018-04-24 Check-out date. Format must be yyyy/mm/dd.
checkin string 2018-04-23 Check-in date. Format must be yyyy/mm/dd.
currCurrency string INR Searched currency
errors array of errors Contains errors, if any
error > code integer 0 Error code
error > message string Error message
Price API

Description

This API is used for pricing the hotel room.

URL

The URL endpoint is https://dev-sandbox-api.airhob.com/sandboxapi/stays/v2/price

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

{"apiref":"1G","groupcode":"xgirbylkwb6xtgj647fdssmex6nkls5j6226lvlq","rateKey":["4phfnmbw4yvc7fstusmwghos4li6hjxe6gzo3htz3zcbb67cl2yar67pibugleeqs5ffz6w4xj5rqpskxl6soo6s2grcry56v7ts7cgl46oafu2oqvrdooqwfe26mosex7bcvxtffabastvfw3dmyrhz5dd3mj7kbocunpsqrrhy3wp7aissbaa5sghgn6auppeqgxtsajisipw5xkaxnqrhvxhenz6sb3ot7buhfxqkcdgdgh7hku2sc3r2mkbw"],"search_id":"ft3eumscaistpbtswsx5f4yz4i*Sg7cPnXn$51ba5d2f-01f1-4","ProviderCode":"NRG","ParticipationLevel":"4","HotelLocation":"MAN","HotelChain":"CP","Availability":"Available","HotelTransportation":"31","VendorLocationKey":"rYqrL4UqWDKA5mmnWAAAAA==","ReserveRequirement":"Other"}

Request Description

Price API Request Parameters Equivalent Properties API Response Parameters
apiref hotel > ratetype > bundledRates/NonbundRates > apiref
groupcode hotel > ratetype > bundledRates/NonbundRates > group_code
rateKey hotel > ratetype > bundledRates/NonbundRates > rate_key
search_id search_id

Response

See response here

Response Description

Parameter Type Example Value Description
sellRequestId string qSLeB1a7wbgSnjtYf8cEPA== Sell Request ID that uniquely identifies a request. It will be expired after some minutes.
Errors element Holds error information
ProductErrors > ErrorCode string E_C_13 Unique airhob error code
ProductErrors > Message string Invalid apikey sent in header Description of error
dbstay element Contains stay details
name string Le Villé Hotel Name of hotel
currCurrency string INR Three-letter ISO currency code of price
rooms array of rooms Contains room details
roomid string ueltI2MKcWGOETKuH78pCQ== Unique ID for a room
roomname string Superior Double Room, 1 King Bed, Canal View Room name
roomcode string Don't worry about this. It is used for internal purpose.
noroom integer 1 Number of rooms
nonRefundable boolean 1 true if the rate is Non-refundable. Otherwise, cancellation policies applicable
adultCount integer 2 Number of adult guests
childCount integer 1 Number of child guests
cancellationPolicies array of canellation policy Conatins cancellation policy, if any
checkIn string 2018-04-23T00:00:00 Check-in date and time
checkOut string 2018-04-24T00:00:00 Check-out date and time
totalprice string 20857 Total fare excluding taxes
taxprice string 0 Tax price
finalprice string 20857 Total fare including taxes
exptime string 2017-08-17T07:04:08 Don't worry about this. It is used for internal purpose.
isTimevalid string true / false Don't worry about this. It is used for internal purpose.
apiref string NRG / BH Don't worry about this. It is used for internal purpose.
address string 38-42 Canal Street Manchester M1 3WD Canal Street Hotel address
city string City of hotel
customMarkup string 40 This will only contain a value if you've added markup percentage from the dashboard. This customMarkup is not already added in the finalprice. You need to add it on your own.
Issue API

Description

This API is used for finally booking the room and storing the traveler information.

URL

The URL endpoint is https://dev-sandbox-api.airhob.com/sandboxapi/stays/v2/issue

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

{"sellRequestId":"q8glbzWtPfioqa3Bd2FX2Q==","holder":{"name":"John","surname":"Doe","email":"tech@zenmer.com","countryCode":"+91","phoneNumber":"9999999999","PanNumber":"ATEST1234K"},"rooms":[{"roomid":"bVXjmXIBkNDWb8c5O2qDUA==","passengerDetails":[{"age":"28","title":"Mr.","name":"John","surname":"Doe","type":"AD","lead":1},{"age":"35","title":"Mr.","name":"Steve","surname":"Baslin","type":"AD"},{"age":"7","title":"Ms.","name":"Mike","surname":"Paul","type":"CH"},{"age":"5","title":"Mstr.","name":"Mikey","surname":"Paul","type":"CH"}]},{"roomid":"+MbTruLfl/CTuKsvtU4wGg==","passengerDetails":[{"age":"28","title":"Mr.","name":"Inacio","surname":"Lee","type":"AD"},{"age":"28","title":"Mr.","name":"George","surname":"Walker","type":"AD"}]}],"specialRequest":"adjoining rooms"}

Request Description

Parameter Type Example Value Required Description
sellRequestId string Xm86hRlEHlFvts5mUblHIw== REQUIRED Pass value of 'sellRequestId' from Price API response
holder element REQUIRED Contains Lead passenger information
holder > name string John REQUIRED First name of lead passenger
holder > surname string Doe REQUIRED Last name of lead passenger
holder > email string john@gmail.com REQUIRED Email address of lead passenger
holder > countryCode string +1 REQUIRED Cellular country code of lead passenger
holder > phoneNumber string 9999999999 REQUIRED Phone number of lead passenger
holder > PanNumber string ATEST1234K OPTIONAL Pan number of lead passenger
rooms > roomid string lyk/TrA8aIF38u0O20oOaw== REQUIRED ID of a room. Pass value of 'dbstay > rooms > roomid' from Price API response.
rooms > passengerDetails > age integer 35 REQUIRED Age of passenger
rooms > passengerDetails > title string Mr. / Mrs. REQUIRED Title of passenger. At the end of the title there has to be a dot. For example 'Mr.' and 'Mrs.' are correct but 'Mr' and 'Mrs' are incorrect.
rooms > passengerDetails > name string Steve REQUIRED First name of passenger
rooms > passengerDetails > surname string Baslin REQUIRED Last name of passenger
rooms > passengerDetails > type string AD / CH REQUIRED AD=Adult

CH=Child
rooms > passengerDetails > lead int 1 / 0 REQUIRED You need to pass at least one passenger as a lead passenger. Pass 1 to assign a passenger as a lead passenger.
specialRequest string please give adjoining rooms, next to each other OPTIONAL Optional special request to be passed along to the hotel

Response

{"bookingId":"24207064","sellRequestId":"5DG8qPZHcJIfuUMh+FUBRg==","ProductErrors":{"ErrorCode":null,"Message":null},"reference":"mBZCRpYClXZRE87E","status":"CONFIRMED","errors":[]}

Response Description

Parameter Type Example Value Description
bookingId string 70511478 Unique Booking ID for future use
sellRequestId string G4SdRL2KodAW1CtKL8HBiQ== Unique ID for internal purpose
Errors element Holds error information
ProductErrors > ErrorCode string E_C_13 Unique airhob error code
ProductErrors > Message string Invalid apikey sent in header Description of error
reference string wbpelwd6hghw3a4hs7kmccpbaq Booking reference received from the supplier that is used to identify the booking by the hotel
status string CONFIRMED / PENDING / FAILED Status of booking. You will possibly receive above 3 statuses from us. In case of pending, our support will get back to you on the status of the booking within 1 hour.
errors array errors, if any
Cancellation API

Description

This API is used to cancel a stay booking that you've previously made.

URL

The URL endpoint is https://dev-sandbox-api.airhob.com/sandboxapi/stays/v1/cancellation

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

{"sellRequestId": "4CVjYxyPnYXMBwlghKVA+A=="}

Request Description

Parameter Type Example Value Required Description
sellRequestId string REQUIRED Pass the sellRequestId received from the Price API

Response

{"ProductErrors":{"ErrorCode":null,"Message":null},"status":"CONFIRMED","cancellation_reference":"1GHKFE","cancellation_charges":{"currency":"INR","amount":500},"concancel_date":null,"booking_reference":"1039294","booking_price":{"currency":"INR","amount":5000},"booking_id":"89204822"}

Response Description

Parameter Type Example Value Description
status string CONFIRMED/FAILED Status of your cancellation request
cancellation_reference string G4SdRL2KodAW1CtKL8HBiQ== Unique ID against the cancellation request, if provided by the supplier
cancellation_charges element Holds cancellation charges, if provided by the supplier
Going Live Steps

Before giving live access with production URL’s, we need to verify and check if the integration is working fine. We request you to please share with us the BOOKING ID and booking voucher of below use cases.

1. 2 nights stay in any property with 1 room. Occupancy is 2 adults

2. 2 nights stay in any property with 2 rooms. Occupancy is 2 adults and 1 child in room 1 and 2 adults and 2 child in room 2

3. 2 nights stay in any property with 4 rooms. Occupancies as below:

Room 1 - 2 adults and 1 child
Room 2 - 2 adults and 2 child
Room 3 - 2 adults
Room 4 - 3 adults

Once we verify these use cases within 1 working day, we’ll get back to you with the confirmation or the problems if there are any.

Important Assets

City master file

Click here to get list of cities with country code that needs to be passed in the Stays Search API.

Product Errors

Common Errors

Error Code Message
E_C_11 Your API key has expired
E_C_12 Your IP address doesn't match
E_C_13 Invalid apikey sent in header
E_C_14 You don't have access to flights API.
E_C_15 You don't have access to tours API.
E_C_16 You don't have access to stays API.
E_C_17 You don't have access to activities API.
E_C_18 You don't have access to europass API.
E_C_19 You don't have access to trains API.
E_C_20 Something went wrong in authenticating product rights.
E_C_21 Your endpoint is of sandbox environment but you have passed mode as 'production'. Please pass mode as 'sandbox'.
E_C_22 Incorrect mode sent in header. For Sandbox environment pass 'sandbox' and for production environment pass 'production'
E_C_23 Your account is currently inactive. Please contact Airhob support team at api@airhob.com
E_C_24 You don't have enough balance in your Airhob Wallet. If you want us to add some dummy balance in your Airhob Wallet for sandbox environment, please write an email to api@airhob.com and we’ll do the rest.
E_C_25 Incomplete Header
E_C_26 Your endpoint is of production but you have passed mode as 'sandbox'. Please pass mode as 'production'.

Stays Errors

Error Code Message
E_S_11 No hotels found.
E_S_12 Something went wrong.
E_S_13 Bad request.
E_S_14 Missing FromDate.
E_S_15 Invalid FromDate.
E_S_16 Missing ToDate.
E_S_17 Invalid ToDate.
E_S_18 Missing Currency
E_S_19 Invalid Currency
E_S_20 Invalid ClientNationality
E_S_21 Missing Occupancies
E_S_22 Occupancies count should be less than six.
E_S_23 NoOfAdults should be greater than zero for a room.
E_S_24 A room can have a maximum of 4 guests. Summation of NoOfAdults and number of children must be less than 5.
E_S_25 Missing HotelCodes
E_S_26 Invalid HotelCodes
E_S_27 Missing FromDate.
E_S_28 Invalid FromDate.
E_S_29 Missing ToDate.
E_S_30 Invalid ToDate.
E_S_31 Missing Currency
E_S_32 Invalid Currency
E_S_33 Invalid ClientNationality
E_S_34 Invalid Occupancies
E_S_35 Occupancies count should be less than six.
E_S_36 NoOfAdults should be greater than zero for a room.
E_S_37 A room can have a maximum of 4 guests. Summation of NoOfAdults and number of children must be less than 5.
E_S_38 An error has occured.
E_S_39 search_id is missing.
E_S_40 Invalid search_id.
E_S_41 Your search_id has expired.
E_S_42 Search ID has expired
E_S_43 apiref is missing.
E_S_44 Invalid apiref.
E_S_45 rateKey is missing.
E_S_46 groupcode is missing.
E_S_47 A single rateKey is required for apiref of NRG.
E_S_48 rateKey count does not match the number of requested rooms.
E_S_49 sellRequestId is missing.
E_S_50 Invalid sellRequestId.
E_S_51 Room count doesn't match
E_S_52 Invalid sellRequestId.
E_S_53 Your sellRequestId has expired.
E_S_54 Insufficient holder details.
E_S_55 Invalid holder details.
E_S_56 Insufficient room details.
E_S_57 rooms count should be equal to or less than 5.
E_S_58 roomid is missing.
E_S_59 Invalid roomid.
E_S_60 passengerDetails is missing.
E_S_61 A room can have a maximum of 4 guests. Summation of NoOfAdults and number of children must be less than 5.
E_S_62 Wrong roomid passed.
E_S_63 Insufficient passengerDetails.
E_S_64 age is missing in one of the passenger's details.
E_S_65 type is missing in one of the passenger's details.
E_S_66 Invalid passenger type sent in one of the passenger's details. Possible values are 'AD' for adult and 'CH' for child.
E_S_67 title is missing in one of the passenger's details.
E_S_68 At the end of the title, there has to be a dot. For example, 'Mr.' and 'Mrs.' are correct but 'Mr' and 'Mrs' are incorrect.
E_S_69 name is missing in one of the passenger's details.
E_S_70 name can only have alphabets. Special characters and numbers are not accepted.
E_S_71 surname is missing in one of the passenger's details.
E_S_72 surname can only have alphabets. Special characters and numbers are not accepted.
E_S_73 Invalid Title. For child paasenger, title should be Ms. or Mstr.
E_S_74 Invalid Title. For adult paasenger, title should be Mr. or Ms. or Mrs. or Mstr.
E_S_75 Supplier error

Activities API

API workflow

Here is booking flow of Activities API.

1. Search API.

Search API lets you search activities. We will send you all the available activities with the minimum price of each activity.

2. Detail API

In response of Search API, you will get many activities. Out of many activities, you can select an activity to see it's detailed information. This API will help you see activity's detailed information.

3. Price API

This API is used for pricing the activity. For your booking flow, it's recommended that you collect the payment of your customer after Price API is success and before Issue API is called.

4. Issue API

This API confirms your booking and provide you unique booking ID.

Search API

Description

This API is used for searching activities.

URL

The URL endpoint is

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

{ "currency": "USD", "fromDate": "2018-04-23", "toDate": "2018-04-23", "itemperPage": 10, "pageNo": 1, "searchFilterItems": [ { "type": "destination", "value": "SIN" }, { "type": "segment", "value": "1" }, { "type": "priceFrom", "value": "1" }, { "type": "priceTo", "value": "200" }, { "type": "text", "value": "night" } ] }

Request Description

Parameter Type Example Value Required Description
currency string INR REQUIRED Preferred currency for the prices in the results.Three letter ISO Currency code.
fromDate string 2017-10-20 REQUIRED Beginning date of the activity. Date format must be yyyy-mm-dd.
toDate string 2017-10-21 REQUIRED End date of the activity. Date format must be yyyy-mm-dd
itemperPage integer 10 OPTIONAL Number of items per page
pageNo integer 1 OPTIONAL Number of page
searchFilterItems array of filter items REQUIRED
searchFilterItems > type string destination / text / priceFrom / priceTo / segment destination' is required. Rest all other filters are optional. Type of search filter. Here is a list of possible search filters.

1. destination
Three letter Airhob unique destination code eg. SIN

2. text
A keyword to search activities like scuba.

3. priceFrom
Minimum price for activities

4. priceTo
Maximum price for activities

5. segment
Click here to see possible values for this filter in JSON format.
searchFilterItems > value string SIN / E-U02-HOPONCUTTY / 6460 / 1260 / 203 Airhob unique destination code

Response

See response here

Response Description

Detail API

Description

This API is used for getting details of an activity, along with all the information related to an activity.

URL

The URL endpoint is

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

{ "currency": "USD", "fromDate": "2018-04-23", "toDate": "2018-04-23", "activityCode": "E-SG1-SG-MSENTO" }

Request Description

Response

{ "modalities": [ { "code": "HB-HJEN@STANDARD||", "name": "Tour and S.E.A Aquarium", "duration": { "value": 1, "metric": "DAYS" }, "destinationCode": null, "amountsFrom": [ { "paxType": "ADULT", "ageFrom": 13, "ageTo": 999, "convertedAmount": 9245, "convertedBoxOfficeAmount": 8894 }, { "paxType": "CHILD", "ageFrom": 3, "ageTo": 12, "convertedAmount": 5907, "convertedBoxOfficeAmount": 5732 } ], "cancellationPolicies": [ { "dateFrom": "2017-10-18T00:00:00.000Z", "convertedAmount": 9245 } ], "amountUnitType": null, "rates": null, "supplierInformation": null, "providerInformation": null, "questions": null, "comments": null }, { "code": "HB-HJNEN@STANDARD||", "name": "Tour", "duration": { "value": 1, "metric": "DAYS" }, "destinationCode": null, "amountsFrom": [ { "paxType": "ADULT", "ageFrom": 13, "ageTo": 999, "convertedAmount": 6420, "convertedBoxOfficeAmount": 6226 }, { "paxType": "CHILD", "ageFrom": 3, "ageTo": 12, "convertedAmount": 4238, "convertedBoxOfficeAmount": 4150 } ], "cancellationPolicies": [ { "dateFrom": "2017-10-18T00:00:00.000Z", "convertedAmount": 6420 } ], "amountUnitType": null, "rates": null, "supplierInformation": null, "providerInformation": null, "questions": null, "comments": null } ], "errors": [], "SearchReferenceId": "c9bbeb42-4407-4" }

Response Description

Price API

Description

This API is used for pricing the activity.

URL

The URL endpoint is

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

{ "code": "HB-HJEN@STANDARD||", "activityCode": "E-SG1-SG-MSENTO", "fromDate": "2018-04-23", "toDate": "2018-04-23", "oldPrice": 0, "nationality": "IN", "SearchReferenceId": "c9bbeb42-4407-4", "paxDetails": [ { "age": 25, "title": "Mr.", "name": "John", "surname": "Doe", "type": "ADULT" }, { "age": 10, "title": "Mr.", "name": "Brian", "surname": "Doe", "type": "CHILD" } ], "holder": { "name": "John", "email": "john@gmail.com", "surname": "Doe", "countryCode": "+1", "telephone": "9999999999" } }

Request Description

Response

{ "errors": [], "sellRequestId": "lJRoqMYu", "dbactivity": { "name": "A morning at Sentosa island", "modalities": { "code": null, "name": "Tour and S.E.A Aquarium", "duration": { "value": 1, "metric": "DAYS" }, "destinationCode": null }, "paxes": [], "cancellationPolicies": [ { "dateFrom": "11-10-2017", "convertedAmount": 7577 } ], "questions": [ { "code": "ARRIVHOTEL", "text": "Please advise your hotel check in date", "required": false }, { "code": "HOTEL", "text": "Please advise the name of your hotel", "required": false }, { "code": "PAX NAME", "text": "PLEASE PROVIDE FULL FIRST NAME AND SURNAME OF ALL PASSENGERS TRAVELLING", "required": false } ], "comments": [ { "type": "CONTRACT_REMARKS", "text": "VOUCHER INFORMATION\t\nActivity Type : \tExcursions with Hotel Pick up\nSupplier phone number\t6238 2672\nSupplier Language: \tEnglish \nSupplier Schedule: \tDaily\nRedeem type: \tPrinted Voucher\nRedeem point schedule: \tOn Tour Service Date\nMeeting point/ Pick-up location: \tHotel Lobby\nPick-up time: \t08:00AM \nDrop-off location: \tHotel Lobby\nDrop-off time: \t12:30PM\nOpening/ Start time: \t08:30AM\nClosing/ End time: \t12:30PM\nOpening days/period: \tDaily\nDuration: \t4 Hours\nGuide language: \tEnglish \nAlternative in case of conditions which affect the activity operation \tTour will operate on rain or shine conditions.Cable Car Rides may not operate due to bad weather. In the event of maintance, Cable car in sentosa island be replaced. Merlion may temporarily closed due to bad weather. \nDress-code: \tCasual\nID, licence, certificate, proofing documents: \tPassport is much required.\nMin. Age: \t0\nMax. Age: \t80\nVoucher validity: \t1 day\n" } ], "Datefrom": "2018-04-23T00:00:00", "totalprice": 7578, "taxprice": 0, "finalprice": 7578, "urls": { "resource": "https://media.stage.activitiesbank.com/27204/ENG/B/27204_1.jpg" }, "taxes": [] }, "IspriceChanged": true, "OldPrice": 0, "TotalPrice": 7578 }

Response Description

Issue API

Description

This API is used for finally booking the activity.

URL

The URL endpoint is

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

{ "sellRequestId": "lJRoqMYu", "answers": [ { "answer": "2018-04-23", "code": "ARRIVHOTEL" }, { "answer": "Adventure Cove Waterpark", "code": "HOTEL" }, { "answer": "John Doe", "code": "PAX NAME" } ] }

Request Description

Response

{ "bookingId": "55717796", "reference": "256-2848569", "status": "CONFIRMED", "sellRequestId": "lJRoqMYu", "errors": [], "vouchers": [] }

Response Description

Media API

Description

This API is used for getting images of an activity.

URL

The URL endpoint is

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

{ "ActCode": "E-SG1-SG-MSENTO" }

Request Description

Response

{ "images": [ { "visualizationOrder": 1, "mimeType": "image/jpeg", "urls": [ { "dpi": 72, "height": 75, "width": 100, "resource": "http://media.stage.activitiesbank.com/27204/ENG/S/27204_1.jpg", "sizeType": "SMALL" }, { "dpi": 72, "height": 768, "width": 1024, "resource": "http://media.stage.activitiesbank.com/27204/ENG/XL/27204_1.jpg", "sizeType": "XLARGE" }, { "dpi": 72, "height": 768, "width": 1024, "resource": "http://media.stage.activitiesbank.com/27204/ENG/B/27204_1.jpg", "sizeType": "RAW" }, { "dpi": 72, "height": 768, "width": 1024, "resource": "http://media.stage.activitiesbank.com/27204/ENG/LPP/27204_1.jpg", "sizeType": "RAW" }, { "dpi": 72, "height": 200, "width": 267, "resource": "http://media.stage.activitiesbank.com/27204/ENG/L/27204_1.jpg", "sizeType": "LARGE" }, { "dpi": 72, "height": 130, "width": 173, "resource": "http://media.stage.activitiesbank.com/27204/ENG/M/27204_1.jpg", "sizeType": "MEDIUM" } ] }, { "visualizationOrder": 2, "mimeType": "image/jpeg", "urls": [ { "dpi": 72, "height": 75, "width": 100, "resource": "http://media.stage.activitiesbank.com/27204/ENG/S/27204_2.jpg", "sizeType": "SMALL" }, { "dpi": 72, "height": 768, "width": 1024, "resource": "http://media.stage.activitiesbank.com/27204/ENG/XL/27204_2.jpg", "sizeType": "XLARGE" }, { "dpi": 72, "height": 768, "width": 1024, "resource": "http://media.stage.activitiesbank.com/27204/ENG/B/27204_2.jpg", "sizeType": "RAW" }, { "dpi": 72, "height": 768, "width": 1024, "resource": "http://media.stage.activitiesbank.com/27204/ENG/LPP/27204_2.jpg", "sizeType": "RAW" }, { "dpi": 72, "height": 200, "width": 267, "resource": "http://media.stage.activitiesbank.com/27204/ENG/L/27204_2.jpg", "sizeType": "LARGE" }, { "dpi": 72, "height": 130, "width": 173, "resource": "http://media.stage.activitiesbank.com/27204/ENG/M/27204_2.jpg", "sizeType": "MEDIUM" } ] }, { "visualizationOrder": 3, "mimeType": "image/jpeg", "urls": [ { "dpi": 72, "height": 75, "width": 100, "resource": "http://media.stage.activitiesbank.com/27204/ENG/S/27204_3.jpg", "sizeType": "SMALL" }, { "dpi": 72, "height": 768, "width": 1024, "resource": "http://media.stage.activitiesbank.com/27204/ENG/XL/27204_3.jpg", "sizeType": "XLARGE" }, { "dpi": 72, "height": 768, "width": 1024, "resource": "http://media.stage.activitiesbank.com/27204/ENG/B/27204_3.jpg", "sizeType": "RAW" }, { "dpi": 72, "height": 768, "width": 1024, "resource": "http://media.stage.activitiesbank.com/27204/ENG/LPP/27204_3.jpg", "sizeType": "RAW" }, { "dpi": 72, "height": 200, "width": 267, "resource": "http://media.stage.activitiesbank.com/27204/ENG/L/27204_3.jpg", "sizeType": "LARGE" }, { "dpi": 72, "height": 130, "width": 173, "resource": "http://media.stage.activitiesbank.com/27204/ENG/M/27204_3.jpg", "sizeType": "MEDIUM" } ] }, { "visualizationOrder": 4, "mimeType": "image/jpeg", "urls": [ { "dpi": 72, "height": 75, "width": 100, "resource": "http://media.stage.activitiesbank.com/27204/ENG/S/27204_4.jpg", "sizeType": "SMALL" }, { "dpi": 72, "height": 768, "width": 1024, "resource": "http://media.stage.activitiesbank.com/27204/ENG/XL/27204_4.jpg", "sizeType": "XLARGE" }, { "dpi": 72, "height": 768, "width": 1024, "resource": "http://media.stage.activitiesbank.com/27204/ENG/B/27204_4.jpg", "sizeType": "RAW" }, { "dpi": 72, "height": 768, "width": 1024, "resource": "http://media.stage.activitiesbank.com/27204/ENG/LPP/27204_4.jpg", "sizeType": "RAW" }, { "dpi": 72, "height": 200, "width": 267, "resource": "http://media.stage.activitiesbank.com/27204/ENG/L/27204_4.jpg", "sizeType": "LARGE" }, { "dpi": 72, "height": 130, "width": 173, "resource": "http://media.stage.activitiesbank.com/27204/ENG/M/27204_4.jpg", "sizeType": "MEDIUM" } ] }, { "visualizationOrder": 5, "mimeType": "image/jpeg", "urls": [ { "dpi": 72, "height": 75, "width": 100, "resource": "http://media.stage.activitiesbank.com/27204/ENG/S/27204_5.jpg", "sizeType": "SMALL" }, { "dpi": 72, "height": 768, "width": 1024, "resource": "http://media.stage.activitiesbank.com/27204/ENG/XL/27204_5.jpg", "sizeType": "XLARGE" }, { "dpi": 72, "height": 768, "width": 1024, "resource": "http://media.stage.activitiesbank.com/27204/ENG/B/27204_5.jpg", "sizeType": "RAW" }, { "dpi": 72, "height": 768, "width": 1024, "resource": "http://media.stage.activitiesbank.com/27204/ENG/LPP/27204_5.jpg", "sizeType": "RAW" }, { "dpi": 72, "height": 200, "width": 267, "resource": "http://media.stage.activitiesbank.com/27204/ENG/L/27204_5.jpg", "sizeType": "LARGE" }, { "dpi": 72, "height": 130, "width": 173, "resource": "http://media.stage.activitiesbank.com/27204/ENG/M/27204_5.jpg", "sizeType": "MEDIUM" } ] } ], "ErrorMessage": null }

Response Description

Going Live Steps

Before giving live access with production URL’s, we need to verify and check if the integration is working fine. We request you to please share with us the BOOKING ID of below use cases.

1. Any activity with 2 adults and 1 child

2. Any activity with 2 adults and 1 child that includes a special voucher. That would probably be Discovery Code in Orlando.

Once we verify these use cases within 1 working day, we’ll get back to you with the confirmation or the problems if there are any.

Product Errors

Common Errors

Error Code Message
E_C_11 Your API key has expired
E_C_12 Your IP address doesn't match
E_C_13 Invalid apikey sent in header
E_C_14 You don't have access to flights API.
E_C_15 You don't have access to tours API.
E_C_16 You don't have access to stays API.
E_C_17 You don't have access to activities API.
E_C_18 You don't have access to europass API.
E_C_19 You don't have access to trains API.
E_C_20 Something went wrong in authenticating product rights.
E_C_21 Your endpoint is of sandbox environment but you have passed mode as 'production'. Please pass mode as 'sandbox'.
E_C_22 Incorrect mode sent in header. For Sandbox environment pass 'sandbox' and for production environment pass 'production'
E_C_23 Your account is currently inactive. Please contact Airhob support team at api@airhob.com
E_C_24 You don't have enough balance in your Airhob Wallet. If you want us to add some dummy balance in your Airhob Wallet for sandbox environment, please write an email to api@airhob.com and we’ll do the rest.
E_C_25 Incomplete Header
E_C_26 Your endpoint is of production but you have passed mode as 'sandbox'. Please pass mode as 'production'.

Activities Errors

Error Code Message
E_A_11 No activities found. Try searching with different destination or text or priceFrom or priceTo or segment.
E_A_12 currency is missing.
E_A_13 Invalid currency.
E_A_14 fromDate is missing.
E_A_15 fromDate is not in correct format.
E_A_16 toDate is missing.
E_A_17 toDate is not in correct format.
E_A_18 searchFilterItems is missing.
E_A_19 The value provided for filter 'type' is not allowed. The allowed filters are: 'destination, priceFrom, priceTo, segment, text'. Please review the information provided and re-send your request.
E_A_20 value is missing.
E_A_21 destination is required and rest all other filters are optional.
E_A_22 Invalid value for segment.
E_A_23 Invalid value for destination.
E_A_24 Internal server error
E_A_25 No activities found.
E_A_26 activityCode is missing.
E_A_27 Invalid activityCode.
E_A_28 No result found for requested activity.
E_A_29 Something went wrong
E_A_30 nationality is missing
E_A_31 Invalid nationality.
E_A_32 SearchReferenceId is missing.
E_A_33 Invalid SearchReferenceId.
E_A_34 Your SearchReferenceId has expired.
E_A_35 code is missing.
E_A_36 holder is missing.
E_A_37 name is missing in holder.
E_A_38 name can only have alphabets. Special characters and numbers are not accepted.
E_A_39 surname is missing in holder.
E_A_40 surname can only have alphabets. Special characters and numbers are not accepted.
E_A_41 email is missing in holder.
E_A_42 countryCode is missing in holder.
E_A_43 telephones is missing in holder.
E_A_44 paxDetails are missing.
E_A_45 Please ensure that there is atleast one 'ADULT' passenger.
E_A_46 Holder must be one of the ADULT passengers.
E_A_47 age is missing for one of the passengers.
E_A_48 type is missing for one of the passengers.
E_A_49 Invalid type for one of the passengers. Please send 'ADULT' for Adult and 'CHILD' for child.
E_A_50 title is missing for one of the passengers.
E_A_51 surname is missing for one of the passengers.
E_A_52 name is missing for one of the passengers
E_A_53 Invalid Title. For child paasenger, title should be Ms. or Mstr.
E_A_54 Invalid Title. For adult paasenger, title should be Mr. or Ms. or Mrs. or Mstr.
E_A_55 We couldn't fetch any response.
E_A_56 sellRequestId is missing.
E_A_57 Invalid sellRequestId.
E_A_58 Your sellRequestId has expired.
E_A_59 answers are missing.
E_A_60 One or more answers are greater than questions.
E_A_61 One or more answer is missing.

Miscellaneous API's

GST Validator API

Description

We've created an API for easy format validation of the GST number. Just pass us the GST number and the API will tell if the number is in the correct format.

URL

The URL of the web method is

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

{"gstnumber":"27AABCT6166A1ZJ"}

Request Description

Response

true

Response Description

Wallet Balance API

Wallet Balance API

Description

This API gives currenct balance of your Airhob Wallet.

URL

The URL of the web method is

Method

The HTTP verb to be used is POST.

Arguments

Data is to be supplied in the body of the request as JSON encoded value.

Request

No request is needed.

Request Description

Response

[ { "Currency": "INR", "Amount": 70232 }, { "Currency": "USD", "Amount": 1894 } ]

Response Description

Release Notes

Click here to get updates that are made with each new version.