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 Checkout → Checkout 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:
| Header | Value | Required | Description |
|---|---|---|---|
Partner-Access-Token | Base64 String | Yes | Your encrypted AES-256 time-sensitive token. |
X-Currency | Currency Code | Optional | Display currency. |
Accept-Language | Language Code | Optional | e.g. en, th, my. |
Content-Type | application/json | Yes | |
Accept | application/json | Yes |
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
| Parameter | Type | Required | Description |
|---|---|---|---|
solution_id | String | Yes | The session_id returned by Pricing. |
trip_type | String | Yes | 1 One Way, 2 Round Trip, 3 Multi City. |
contact_first_name | String | Yes | Contact person first name. |
contact_last_name | String | Yes | Contact person last name. |
contact_email | String | Yes | Valid email address. |
contact_mobile_country_code | String | Optional | Dial code, digits only, e.g. 66. |
contact_mobile_phone_number | String | Optional | Digits only. |
is_mm_nationality | Boolean | Optional | Myanmar-national fare flag. Default false. |
passengers | Array | Yes | At least one passenger. See below. |
is_b2b | Boolean | Optional | Default true. |
user_id | String | Optional | End-user identifier. |
payment_method | String | Optional | Default pay_later. |
payment_option | String | Optional | Default pay_later. |
Passenger Object
| Parameter | Type | Required | Description |
|---|---|---|---|
first_name | String | Yes | As printed in the travel document. |
last_name | String | Yes | As printed in the travel document. |
birth_date | String | Yes | Y-m-d. |
type | String | Yes | adult, child or infant. |
gender | String | Yes | male or female. |
nationality_code | String | Yes | 2-letter country code, e.g. TH. |
document_type | String | Yes | passport or nrc. |
document_number | String | Yes | Format is validated — see below. |
document_issue_place_code | String | Yes | 2-letter country code. |
document_expire_date | String | Conditional | Y-m-d. Required when document_type is passport. |
mobile_country_code | String | Optional | Digits only. |
mobile_phone_number | String | Optional | Digits only. |
ancillary | Object | Optional | { "ancillary_id": "...", "session_id": "..." }. Both keys required together. |
ancillaries | Object/Array | Optional | Multiple add-ons. See Ancillary. |
selected_seats | Array | Optional | See Seat Map. |
seat_number | String | Optional | Legacy single-seat form. |
Document number formats
document_type | Pattern | Example |
|---|---|---|
passport | 5–15 alphanumeric characters | AB1234567 |
nrc | Myanmar NRC format | 1/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
| Parameter | Type | Required | Description |
|---|---|---|---|
booking_number | String (path) | Yes | Booking 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
| Parameter | Type | Required | Description |
|---|---|---|---|
order_number | String | Yes | The flight booking number. |
out_order_number | String | Optional | External reference. |
{
"order_number": "650E23E81BFC54D8"
}
Refund Booking
Requests a refund for a ticketed booking.
- Endpoint:
/api/v1/flights/bookings/refund - Method:
POST
| Parameter | Type | Required | Description |
|---|---|---|---|
booking_number | String | Yes | The flight booking number. |
refund_type_id | Integer | Yes | See the refund type table below. |
remark | String | Optional | Free-text reason. |
file_attachments | Array | Optional | Supporting documents. |
Refund types
| Value | Description |
|---|---|
2 | Voluntary — the traveller changed or cancelled their plan. |
5 | Involuntary — airline-caused (delay, cancellation, schedule change). |
6 | Involuntary — 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
| Parameter | Type | Required | Description |
|---|---|---|---|
order_number | String (query) | Yes | The flight booking number. |
segment_index | Integer (query) | Yes | Index 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.