Welcome to the official documentation for the Gannet API - a simple solution for booking flight, hotel, and more.
Gannet API implements the JSON-RPC 2.0 specification, providing a robust and standardized way to handle travel-related operations. The API supports:
- 🛫 Flight bookings, scheduling, and management
- 🏨 Hotel search, booking, and reservation management
- 🔐 Secure authentication and token management
Try out the API methods directly in your browser using our Interactive API Playground.
This repository includes ready-to-use Bruno collections in the ./pub/bruno directory. Bruno provides a lightweight, fast, and modern alternative to Postman for API testing and exploration.
| Method | Description | Example |
|---|---|---|
token:create |
Generate authentication token | View Example |
| Method | Description | Example |
|---|---|---|
flight:schedule:list |
List available flights | View Example |
flight:schedule:fare |
Get flight pricing | View Example |
flight:book |
Create flight booking | View Example |
flight:sync |
Synchronize booking status | View Example |
flight:cancel |
Cancel flight booking | View Example |
flight:issue |
Issue flight tickets | View Example |
| Method | Description | Example |
|---|---|---|
hotel:destinations:list |
Search destinations | View Example |
hotel:searchby:destination |
Find hotels by location | View Example |
hotel:fetch:detail |
Get hotel details | View Example |
hotel:fetch:booking |
Get booking details | View Example |
hotel:fetch:rooms |
Get available rooms | View Example |
hotel:room:checkprice |
Verify room pricing | View Example |
hotel:book |
Create hotel booking | View Example |
hotel:cancel |
Cancel hotel booking | View Example |
hotel:issue |
Issue hotel voucher | View Example |
-
Search Phase
- Search flight schedules using
flight:schedule:list - Verify pricing with
flight:schedule:fare
- Search flight schedules using
-
Booking Phase
- Create booking using
flight:book - Monitor booking status with
flight:sync
- Create booking using
-
Completion Phase Either:
- Issue tickets using
flight:issue - Or cancel booking using
flight:cancel
- Issue tickets using
View Complete Flight Booking Example
-
Search Phase
- Find destinations using
hotel:destinations:list - Search hotels using
hotel:searchby:destination - Get detailed information with
hotel:fetch:detail - Check room availability using
hotel:fetch:rooms
- Find destinations using
-
Room Selection Understanding
roomCombinationType:FixedRoomCombination: Must select specific room combinationsFreeRoomCombination: Flexible room selectionIdenticalRoomCombination: All rooms must be same type
-
Price Verification
- Verify current room pricing using
hotel:room:checkprice - This ensures prices haven't changed before booking
- Verify current room pricing using
-
Booking Phase
- Create booking using
hotel:book - Monitor status with
hotel:fetch:booking
- Create booking using
-
Completion Phase Either:
- Issue voucher using
hotel:issue - Or cancel booking using
hotel:cancel
- Issue voucher using
View Complete Hotel Booking Example
-
Performance Optimization
- Enable HTTP compression for all requests
- Consider implementing response caching for destination lists
- Use separate requests per supplier for faster hotel searches
-
Error Handling
- Always check
result.statusin responses - Implement proper retry mechanisms for transient failures
- Always check
-
Booking Management
- Implement automatic booking synchronization
- Set up monitoring for booking deadlines
- Handle cancellation deadlines proactively
-
Token Management
- Store tokens securely
- Implement token refresh mechanism
- Never expose tokens in client-side code
-
Request Signing
- Always include proper signatures
- Use secure random generators for nonces
- Implement timestamp validation
For technical support or questions:
- Check our example implementations
- Review the full API schema
- Contact our support team (contact details in your service agreement)
For detailed schema definitions and data types, refer to the Schema Reference section below.
Consult the example folder for request and response examples.
-
Auth
- 00 - Create Auth Token
-
Flight
- 01 - Flight Schedule List
- 02 - Flight Schedule Fare
- 03 - Flight Book
- 04 - Flight Sync
- 05 - Flight Cancel
- 05 - Flight Issue
-
Hotel
- 11 - Hotel Destinations List
- 12 - Hotel Search By Destination
- 13 - Hotel Fetch Detail
- 14 - Hotel Fetch Booking
- 15 - Hotel Fetch Rooms
- 16 - Hotel Room Check Price
- 17 - Hotel Book
- 18 - Hotel Cancel
- 19 - Hotel Issue
Also see full flight booking flow and full hotel booking flow for end-to-end request and response examples.
-
Request Parameters
-
Response
result(RPCResult, required)token(string, required)
-
Request Parameters
-
Response
result(RPCResult, required)info(ScheduleInfo, required)schedules(Array ofScheduleResult, required)
-
Request Parameters
info(ScheduleFareInfoParams, required)scheduleFareDetail(ScheduleFareDetails, required)
-
Response
result(RPCResult, required)info(ScheduleFareInfo, required)scheduleFareDetail(Array ofScheduleFareDetailResult, required)
-
Request Parameters
info(FlightBookInfo, required)scheduleFareDetail(ScheduleFareDetails, required)
-
Response
result(RPCResult, required)pnrs(Array ofBookingPNR, required)
-
Request Parameters
bookingID(BookingID, required)
-
Response
result(RPCResult, required)pnrs(Array ofBookingPNR, required)
-
Request Parameters
term(Term, required) - Search term
-
Response
result(RPCResult, required)destinations(Array of Destination, required)
-
Request Parameters
destinationKey(DestinationKey, required)totalRooms(number, required)totalAdults(number, required)totalChilds(number, required)checkInDate(DateYMD, required)checkOutDate(DateYMD, required)childrenAges(ChildrenAges, required)
-
Response
result(RPCResult, required)hotelLists(Array of HotelResult, required)
-
Request Parameters
id(HotelID, required)
-
Response
result(RPCResult, required)hotel(Hotel, required)
-
Request Parameters
-
Response
result(RPCResult, required)hotelLists(Array of HotelResult, required)
-
Request Parameters
roomSelectedData(Array ofRoomSelected, required)
-
Response
result(RPCResult, required)hotelRoomCheckPriceResponse(HotelRoomCheckPriceResponse, required)
-
Request Parameters
roomSelectedData(Array ofRoomSelected, required)roomGuestData(RoomGuestData, required)clientReference(ClientReference, required)remarkList(RemarkList, required)
-
Response
result(RPCResult, required)booking(Booking, required)
-
Request Parameters
-
Response
result(RPCResult, required)booking(Booking, required)
Date in YYYY-MM-DD format
Date and time in YYYY-MM-DDTHH:mm format at local timezone
Date and time in YYYY-MM-DDTHH:mm format at UTC timezone
Agent code identifier
Array of agent codes
Booking identifier
Booking code identifier
Values: "BOOKED" | "CANCELLED" | "TICKETED"
Supplier airline code identifier
Supplier code identifier (e.g., "MGH")
Vendor code identifier (e.g., "QILIN")
result(object, required)time(ProcessTime, required)status(ResultStatus, required)errors(ResultErrors, optional)
request(number, required)response(number, required)process(number, required)unit("ms", required)
Values: "OK" | "ERROR"
Array of error messages
Encrypted search key data used for hotel room searches
Values: "OW" (One Way) | "RT" (Round Trip)
Journey identifier (e.g., "QG194HLPDPS")
Segment identifier (e.g., "QG194~~HLPDPS2025-04-01T17:052025-04-01T19:55")
Leg identifier (e.g., "HLPDPS2025-04-01T17:05~2025-04-01T19:55")
Passenger type. Values: "ADT" (Adult) | "CHD" (Child) | "INF" (Infant)
ADT(number, required) - Adult count, min: 1CHD(number, required) - Child count, min: 0INF(number, required) - Infant count, min: 0
origin(StationCode, required)destination(StationCode, required)departureDate(DateYMD, required)returnDate(DateYMD, optional)
journeyID(string, required)origin(StationCode, required)destination(StationCode, required)segmentIDS(string[], required)
segmentID(SegmentID, required)origin(Station, required)destination(Station, required)arrivalDateTime(DateTimeLocal, required)departureDateTime(DateTimeLocal, required)stopOver(number, required)operatingCarrierInfo(CarrierInfo, required)marketingCarrierInfo(CarrierInfo, required)legIDS(LegID[], required)
Used in schedule fare info response
segmentID(SegmentID, required)operatingCarrierInfo(CarrierInfo, required)marketingCarrierInfo(CarrierInfo, required)originCode(StationCode, required)destinationCode(StationCode, required)departureDateTime(DateTimeLocal, required)arrivalDateTime(DateTimeLocal, required)arrivalTz(number, optional) - Timezone offset for arrivaldepartureTz(number, optional) - Timezone offset for departure
legID(LegID, required)origin(Station, required)destination(Station, required)departureDateTime(DateTimeLocal, required)arrivalDateTime(DateTimeLocal, required)
title(string, required)firstName(string, required)lastName(string, required)phoneNumber(string, required)email(string, required)
paxType(PaxType, required)paxID(string, required)paxRefID(string, optional) - Reference ID for passenger in bookingnationality(string, required) - ISO country code (e.g., "ID")title(string, required) - e.g., "MR", "MRS", "MS"firstName(string, required)lastName(string, required)dob(DateYMD, required) - Date of birthfreeCheckinBaggage(FreeCheckinBaggage[], optional)
baggageRoute(string, required) - Route code (e.g., "HLP-DPS")baggageWeight(string, required) - Weight value (e.g., "15")baggageUnit(string, required) - Weight unit (e.g., "KG")
supplairCode(SupplairCode, required)agentCode(AgentCode, required)info(BookingInfo, required)bookingSummary(BookingFareSummary, required)bookingTimeLimit(DateTimeUTC, required)bookingDateTime(DateTimeUTC, required)scheduleFareDetail(ScheduleFareDetailResult[], required)bookingID(BookingID, required)bookingStatus(BookingStatus, required)bookingCode(BookingCode, required)
contactInfo(ContactInfo, required)paxs(Pax[], required)journeys(BookingJourney[], required)segments(SegmentResult[], required)
journeyID(JourneyID, required)originCode(StationCode, required)destinationCode(StationCode, required)segmentIDS(SegmentID[], required)
totalBaseFare(number, required)totalTax(number, required)totalFare(number, required)agentIssuedFee(number, optional)agentSellingFare(number, optional)agentServiceFee(number, optional)agentServiceFeePPN(number, optional)NTSA(number, required)totalPrepaidBaggage(number, required)totalNTA(number, required)wholesalerFee(number, required)
fareCode(string, required)fareBasisCode(string, required)fareGroupCode(FareGroupCode, required)seatAvailable(number, required)baggageFree(BaggageFree, required)canBuyAdditionalBaggage(boolean, required)currencyCode(string, required)agentOffersFare(AgentOffers[], required)
weight(string, required) - Weight value (e.g., "15")unit(string, required) - Weight unit (e.g., "KG")
Fare class codes. Values:
- "E" - Economy
- "PE" - Premium Economy
- "B" - Business
- "F" - First
- "PF" - Premium First
agentCode(AgentCode, required)supplairCode(SupplairCode, required)isSupportNKRI(boolean, optional)offers(Offer[], required)
paxType(PaxType, required)baseFare(number, required)totalTax(number, required)totalFare(number, required)agentServiceFee(number, required)agentServiceFeePPN(number, required)agentIssuedFee(number, optional)agentSellingFare(number, required)
paxType(PaxType, required)price(FarePrice, required)fareComponent(FareComponent[], optional)paxRefID(string, optional) - Reference to passenger ID
baseFare(number, required)taxs(FareTax[], required)totalTax(number, required)totalPublishFare(number, optional)agentServiceFee(number, optional)agentServiceFeePPN(number, optional)agentIssuedFee(number, optional)agentSellingFare(number, optional)
fareGroupCode(FareGroupCode, required)fareCode(string, required)fareBasisCode(string, required)segmentID(SegmentID, required)
taxCode(string, required) - Tax code (e.g., "SC", "IWJR", "PSC", "VAT", "VS")taxFare(number, required)
totalBaseFare(number, required)totalTax(number, required)totalFare(number, required)totalPrepaidBaggage(number, optional)agentServiceFee(number, optional)agentServiceFeePPN(number, optional)agentIssuedFee(number, optional)agentSellingFare(number, optional)
Special Service Request for baggage
ssrType(string, required) - Type of SSR (e.g., "BAGGAGE")ssrCode(string, required)ssrText(string, required)ssrPrice(number, required)ssrRoute(string, required)ssrWeight(string, required)ssrUnit(string, required)
segmentID(SegmentID, required)ssrs(FareSSR[], required)
journeyID(JourneyID, required)segmentFares(SegmentFare[], required)
segmentID(SegmentID, required)fares(Fare[], required)
Used in schedule fare request/booking params
fareGroupCode(FareGroupCode, required)fareCode(string, required)fareBasisCode(string, required)segmentID(SegmentID, required)
Carrier code (e.g., "QG", "GA")
Carrier/airline code identifier
Flight number (e.g., "194")
carrierCode(CarrierCode, required)flightNumber(FlightNumber, required)opSuffix(string, optional)
Array of carrier codes
code(StationCode, required)tz(number | "?", required)
Station code identifier
Hotel ID identifier (hashed/encrypted ID)
destinationName(string, required) - Destination name (e.g., "Malang")destinationText(string, required) - Full destination text (e.g., "Malang, Indonesia")destinationKey(DestinationKey, required) - Encrypted destination key for searchescountryCode(string, required) - ISO country code (e.g., "ID")
Hotel search result from hotel:searchby:destination
id(HotelID, required)name(string, required)description(string, required)address(string, required)destinationName(string, required)countryName(string, required)countryCode(string, required)star(number, required) - Hotel star rating (1-5)latitude(number, required)longitude(number, required)pictureUrl(string, nullable)agentSellingPrice(AgentSellingPrice[], required)
agentCode(AgentCode, required)vendorCode(VendorCode, required)lowestPrice(LowestPrice, required)
currencyCode(string, required) - e.g., "IDR"totalPrice(number, required)supplierCode(SupplierCode, required)typeOfRate(string, required) - e.g., "AG"
Hotel detail from hotel:fetch:detail
id(HotelID, required)name(string, required)description(string, required)address(string, required)destinationName(string, required)countryName(string, required)countryCode(string, required)star(number, required)latitude(number, required)longitude(number, required)pictureUrls(string[], required)phoneNumber(string, optional)fax(string, optional)websiteUrl(string, optional)checkinInfo(string, required) - Check-in time (e.g., "14:00:00")checkoutInfo(string, required) - Check-out time (e.g., "12:00:00")facilityList(string[], required)roomFacilityList(string[], required)amenityList(string[], required)attractionList(string[], required)locationList(string[], required)typeOfRate(string, required)supplierCode(SupplierCode, required)
Room information from hotel:fetch:rooms
hotelID(HotelID, required)agentCode(AgentCode, required)supplierCode(SupplierCode, required)checkInDate(DateYMD, required)checkOutDate(DateYMD, required)numberOfNights(number, required)totalNumberOfRooms(number, required)roomCombinationType(RoomCombinationType, required)roomIndexCombinationList(RoomIndexCombination[], required)roomInformations(RoomInformation[], required)typeOfRate(string, required)
Values:
- "FixedRoomCombination" - Must select specific room combinations
- "FreeRoomCombination" - Flexible room selection
- "IdenticalRoomCombination" - All rooms must be same type
numberOfRooms(number, required)roomNumber(number, required)roomGroup(number, required)roomIndexSequence(number[], required) - Array of valid room indices
roomIndex(number, required)roomID(string, required) - Room identifier/keyroomName(string, required)roomDescription(string, required)roomSize(string, required)roomMaxOccupancy(number, required)roomBoardCode(string, required) - e.g., "RO" (Room Only), "BDBF" (Breakfast)roomBoardInclusion(string, required) - e.g., "Room Only", "Breakfast"roomPrice(RoomPrice, required)roomBed(RoomBed, required)roomAmenities(string[], required)roomSupplementList(object[], required)roomCancellationPolicyList(RoomCancellationPolicyList, required)nightlyRates(number[], optional) - Price per night breakdown
currencyCode(string, required)totalPrice(number, required)supplierNTA(number, optional) - Supplier net amountagentServiceFee(number, optional)agentServiceFeePPN(number, optional)agentIssuedFee(number, optional)agentSellingFare(number, optional)TOPSellingFare(number, optional)platformFee(number, optional)platformFeeAmount(number, optional)discountCBD(number, optional)discountCBDAmount(number, optional)
bedCount(string, required) - Number of beds or "N/A"bedType(string, required) - Bed type or "N/A"bedText(string, required) - Bed description or "N/A"
isCancellable(boolean, required)lastCancellationDeadline(string, required) - ISO datetimedefaultPolicy(string, required)autoCancellationText(string, required)textualPolicyList(string[], required)noShowCharges(object[], required)roomCancellationCharges(RoomCancellationCharge[], required)
fromDate(string, required) - ISO datetimetoDate(string, required) - ISO datetimechargeType(string, required) - e.g., "Percentage"currencyCode(string, required)chargeAmount(number, required) - Charge percentage or amount
agentCode(AgentCode, required)hotelID(HotelID, required)roomIDS(RoomID[], required)
roomNumber(number, required) - Room number in bookingroomID(string, required) - Room identifier from room searchroomPriceKey(string, optional) - Room price key
Contact person for hotel booking
firstName(string, required)lastName(string, required)email(string, optional)phone(string, optional)
roomNumber(number, required) - Room number (1-indexed)type(RoomGuestType, required)title(string, required) - e.g., "MR", "MRS", "MS"firstName(string, required)lastName(string, required)
Values: "ADT" (Adult) | "CHD" (Child)
roomHolder(RoomHolder, required)roomGuestList(RoomGuest[], required)
supplierCode(SupplierCode, required)typeOfRate(string, required)supplierTripId(string, optional)supplierUpstreamVoucherCode(string, optional)supplierUpstreamRef(string, optional)supplierUpstreamConfirmationCode(string, optional)supplierConfirmationCode(string, optional)creationDate(string, nullable)creationUser(string, nullable)currencyCode(string, nullable)pendingAmount(number, nullable)invoiceCompany(string, nullable)modificationPolicies(object, nullable)
vendorCode(VendorCode, required)locatorCode(string, required)toSupplierRef(string, required)fromClientRef(string, required)bookedAt(string, required) - ISO datetimevoucheredAt(string, nullable)cancelledAt(string, nullable)bookingStatus(string, required) - e.g., "CONFIRMED"voucherStatus(string, nullable) - e.g., "VOUCHERED"cancelStatus(string, nullable) - e.g., "CANCELLED"
Response from hotel:book
agentCode(AgentCode, required)bookingID(BookingID, required)supplierInformation(SupplierInformation, required)vendorInformation(VendorInformation, required)hotelInformation(HotelBookingInfo, required)hotelRoomInformation(HotelBookingRoomInfo[], required)hotelRoomGuestData(RoomGuestData, required)roomCombinationType(RoomCombinationType, required)roomIndexCombinationList(RoomIndexCombination[], required)remarkList(RemarkList, required)
Hotel info in booking response
id(string, required) - Supplier hotel IDname(string, required)description(string, required)address(string, required)star(number, required)checkInDate(DateYMD, required)checkInInfo(string, required)checkOutDate(DateYMD, required)checkOutInfo(string, required)countryCode(string, required)countryName(string, required)destinationName(string, required)latitude(number, required)longitude(number, required)pictureUrl(string, required)norms(string[], required)
roomIndex(number, required)roomID(string, required)roomName(string, required)roomBoardInclusion(string, required)roomSupplementList(object[], nullable)roomPrice(RoomPrice, required)roomNote(string, nullable)numberOfRooms(number, required)numberOfAdults(number, required)numberOfChildrens(number, required)numberOfInfants(number, required)roomCancellationPolicyList(RoomCancellationPolicyList, required)
Response from hotel:room:checkprice
hotelID(object, required)supplierCode(SupplierCode, required)hotelID(string, required) - Supplier hotel ID
agentCode(AgentCode, required)supplierCode(SupplierCode, required)checkInDate(DateYMD, required)checkOutDate(DateYMD, required)numberOfNights(number, required)totalNumberOfRooms(number, required)roomCombinationType(RoomCombinationType, required)roomIndexCombinationList(RoomIndexCombination[], required)roomInformations(RoomInformation[], required)
Client reference identifier
Array of children ages
Array of remarks
Search term
Destination key identifier
Api credentials username
Api credentials password
Api credentials computed signature md5(username + password + pre-shared-key)
journeys(Journey[], required)segments(Segment[], required)legs(Leg[], required)
journeyType(JourneyType, required)journeyIDS(JourneyID[], required)segmentIDS(SegmentID[], required)currencyCode(string, optional)journeySegmentFares(JourneySegmentFare[], required)
totalPaxs(PaxCount, required)
totalPaxs(PaxCount, required)segments(SegmentResult[], required)journeys(BookingJourney[], optional)
journeyIDS(JourneyID[], required)segmentIDS(SegmentID[], required)agentCode(AgentCode, required)journeySegmentFares(JourneySegmentFareSelection[], required)isCombinedJourneys(boolean, required)
Used in schedule fare request
journeyID(JourneyID, required)segmentFares(SegmentFareSelection[], required)
journeyIDS(JourneyID[], required)segmentIDS(SegmentID[], required)agentCode(AgentCode, required)supplairCode(SupplairCode, required)fareDetails(FareDetail[], required)fareSummary(FareSummary, required)segmentSSRS(FareSegmentSSR[], optional)
contactInfo(ContactInfo, required)paxs(Pax[], required)