Skip to main content

Flight Booking Endpoints

Direct flight-only booking operations. These create and manage a PNR without going through the shared cart.

:::tip Which flow should I use? For a normal customer purchase use CheckoutCheckout Confirm. That path creates the booking, handles payment, issues confirmation email and gives you one booking number shared with any other products in the cart.

Use make-order only when you need a flight-only booking outside the unified cart. Note it routes FlightRoute solutions through the Fliggy booking path, so it is not a drop-in replacement for all three providers. :::

All endpoints share the standard headers:

HeaderValueRequiredDescription
Partner-Access-TokenBase64 StringYesYour encrypted AES-256 time-sensitive token.
X-CurrencyCurrency CodeOptionalDisplay currency.
Accept-LanguageLanguage CodeOptionale.g. en, th, my.
Content-Typeapplication/jsonYes
Acceptapplication/jsonYes

Make Order

Creates the booking (PNR) directly with the provider.

  • Endpoint: /api/v1/flights/bookings/make-order
  • Method: POST
  • Rate limit: 10 requests per minute.

Payload Parameters

ParameterTypeRequiredDescription
solution_idStringYesThe session_id returned by Pricing.
trip_typeStringYes1 One Way, 2 Round Trip, 3 Multi City.
contact_first_nameStringYesContact person first name.
contact_last_nameStringYesContact person last name.
contact_emailStringYesValid email address.
contact_mobile_country_codeStringOptionalDial code, digits only, e.g. 66.
contact_mobile_phone_numberStringOptionalDigits only.
is_mm_nationalityBooleanOptionalMyanmar-national fare flag. Default false.
passengersArrayYesAt least one passenger. See below.
is_b2bBooleanOptionalDefault true.
user_idStringOptionalEnd-user identifier.
payment_methodStringOptionalDefault pay_later.
payment_optionStringOptionalDefault pay_later.

Passenger Object

ParameterTypeRequiredDescription
first_nameStringYesAs printed in the travel document.
last_nameStringYesAs printed in the travel document.
birth_dateStringYesY-m-d.
typeStringYesadult, child or infant.
genderStringYesmale or female.
nationality_codeStringYes2-letter country code, e.g. TH.
document_typeStringYespassport or nrc.
document_numberStringYesFormat is validated — see below.
document_issue_place_codeStringYes2-letter country code.
document_expire_dateStringConditionalY-m-d. Required when document_type is passport.
mobile_country_codeStringOptionalDigits only.
mobile_phone_numberStringOptionalDigits only.
ancillaryObjectOptional{ "ancillary_id": "...", "session_id": "..." }. Both keys required together.
ancillariesObject/ArrayOptionalMultiple add-ons. See Ancillary.
selected_seatsArrayOptionalSee Seat Map.
seat_numberStringOptionalLegacy single-seat form.

Document number formats

document_typePatternExample
passport5–15 alphanumeric charactersAB1234567
nrcMyanmar NRC format1/AhGaYa(N)123456

Sample Payload

{
"solution_id": "HITIT_67f4c0a91e2b8d3a5c60f7b4",
"trip_type": "1",
"contact_first_name": "Alex",
"contact_last_name": "Doe",
"contact_email": "buyer@example.com",
"contact_mobile_country_code": "66",
"contact_mobile_phone_number": "800000001",
"passengers": [
{
"first_name": "John",
"last_name": "Doe",
"birth_date": "1990-05-14",
"type": "adult",
"gender": "male",
"nationality_code": "TH",
"document_type": "passport",
"document_number": "AB1234567",
"document_issue_place_code": "TH",
"document_expire_date": "2030-01-31",
"mobile_country_code": "66",
"mobile_phone_number": "800000000"
}
],
"payment_method": "pay_later",
"payment_option": "pay_later"
}

Sample Response

{
"result": 1,
"message": "success",
"data": {
"booking_number": "650E23E81BFC54D8",
"pnr_code": "XY7Z2Q"
}
}

Issue Ticket

Issues the ticket for an existing PNR.

  • Endpoint: /api/v1/flights/bookings/{booking_number}/issue-ticket
  • Method: POST
ParameterTypeRequiredDescription
booking_numberString (path)YesBooking number returned by make-order or checkout confirm.

The provider is resolved automatically from the booking number.


Cancel Booking

Cancels an un-ticketed flight booking with the provider.

  • Endpoint: /api/v1/flights/bookings/cancel
  • Method: POST
ParameterTypeRequiredDescription
order_numberStringYesThe flight booking number.
out_order_numberStringOptionalExternal reference.
{
"order_number": "650E23E81BFC54D8"
}

Refund Booking

Requests a refund for a ticketed booking.

  • Endpoint: /api/v1/flights/bookings/refund
  • Method: POST
ParameterTypeRequiredDescription
booking_numberStringYesThe flight booking number.
refund_type_idIntegerYesSee the refund type table below.
remarkStringOptionalFree-text reason.
file_attachmentsArrayOptionalSupporting documents.

Refund types

ValueDescription
2Voluntary — the traveller changed or cancelled their plan.
5Involuntary — airline-caused (delay, cancellation, schedule change).
6Involuntary — health reasons, with a hospital certificate.

Attachments are not mandatory but materially improve the success rate of involuntary refunds.

Refunds are supported for Fliggy and Hitit bookings.


Change Detail

Fetches rebooking options for a segment.

  • Endpoint: /api/v1/flights/bookings/change-detail
  • Method: GET
ParameterTypeRequiredDescription
order_numberString (query)YesThe flight booking number.
segment_indexInteger (query)YesIndex of the segment to change.

Supported for Fliggy bookings only. Hitit returns Change detail not supported for this provider.


Next Step

For the recommended purchase path, see Checkout.