Skip to main content

My Bookings Endpoint

Returns the authenticated customer's bookings, newest first, paginated. Flight bookings are returned inline with full itinerary and passenger detail.

  • Endpoint: /api/v1/bookings
  • Method: GET or POST

Results are scoped to the logged-in customer and your partner account. A booking placed under a different partner is never returned.

Headers

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

Parameters

Accepted as query string (GET) or JSON body (POST).

ParameterTypeRequiredDescription
pageIntegerYesPage number, minimum 1.
limitIntegerOptionalResults per page. Minimum 1, maximum 100. Default 10.
keywordsStringOptionalPartial match against booking_number or payment_ref.
payment_statusStringOptionalExact match. See values below.

Payment status values

ValueLabel
pendingPending
paidPaid
unpaidUnpaid
rejectedRejected
cancelledCancelled
failedFailed
refund_processingRefund Processing
refundedRefunded
timeoutTimeout

Sample Request

GET /api/v1/bookings?page=1&limit=10&payment_status=paid
{
"page": 1,
"limit": 10,
"keywords": "650E23E8",
"payment_status": "paid"
}

Response

Note the nesting: pagination and rows both live inside data.

FieldTypeDescription
data.meta.current_pageIntegerCurrent page.
data.meta.last_pageIntegerTotal pages.
data.meta.per_pageIntegerPage size.
data.meta.totalIntegerTotal bookings matching the filter.
data.dataArrayBooking rows.

Booking row

FieldTypeDescription
idIntegerInternal booking ID.
booking_numberStringBooking number. Use it with Booking Detail.
payment_refStringPayment reference.
currencyStringDisplay currency.
exchange_rateFloatTHB → display currency rate.
sub_totalFloatTotal before bank fee, display currency.
grand_totalFloatTotal including bank fee, display currency.
payment_statusStringSee table above.
payment_method / payment_optionStringPayment used.
remarkString|nullInternal note.
buyer_infoObjectBuyer details, nationality resolved to a country name.
bank_fee_type / bank_fee_amount / bank_fee_priceMixedBank fee breakdown.
booked_atString|nullBooking timestamp.
coupon / campaignObject|nullCoupon and campaign, when used.
discount_amountFloatDiscount applied.
created_atStringCreation timestamp.
expired_atStringPayment hold expiry — 30 minutes after creation.
itemsArrayProducts in this booking.

Flight item (pd9)

Each flight item carries product_type, booking_number, pnr_code, booking_summary, contact_details, passengers, flight_details, journey_list, pricing_details, baggage_info, cancellation_policy, ancillary_details and booking_detail_link. The fields are identical to the flight item described in Booking Result.

:::note Key casing Unlike the /unified-booking/* endpoints, /bookings* responses are not snake-cased. Nested provider payloads such as solution keep their original camelCase keys (solutionId, journeyList, segmentList). :::

:::info Empty items A booking whose items cannot be resolved is filtered out of the list rather than returned with an empty items array. A page can therefore contain fewer rows than per_page even when last_page is higher. :::

Sample Response

Truncated.

{
"result": 1,
"message": "success",
"data": {
"meta": {
"current_page": 1,
"last_page": 3,
"per_page": 10,
"total": 24
},
"data": [
{
"id": 10482,
"booking_number": "650E23E81BFC54D8",
"payment_ref": "7992370634757",
"currency": "THB",
"exchange_rate": 1,
"sub_total": 9830.00,
"grand_total": 10124.90,
"payment_status": "paid",
"payment_method": "two_c2p",
"payment_option": "card_payment",
"buyer_info": {
"first_name": "Alex",
"last_name": "Doe",
"email": "buyer@example.com",
"nationality": "Myanmar",
"nationality_code": "MM",
"phone_code": "66",
"phone_number": "800000001"
},
"bank_fee_type": "percentage",
"bank_fee_amount": 3,
"bank_fee_price": 294.90,
"discount_amount": 0,
"booked_at": "2026-08-26 09:02:11",
"created_at": "2026-08-26T09:02:11.000000Z",
"expired_at": "2026-08-26T09:32:11.000000Z",
"items": [
{
"product_type": "pd9",
"booking_number": "650E23E81BFC54D8",
"pnr_code": "XY7Z2Q",
"booking_summary": {
"booking_status": "completed",
"payment_status": "paid",
"trip_type": "1",
"adult_quantity": 1,
"grand_total": 10124.90,
"currency_code": "THB"
},
"passengers": [ ],
"journey_list": [ ],
"flight_details": [ ]
}
]
}
]
}
}

Errors

HTTPCause
401Missing or invalid Authorization bearer token.
422page missing or not a positive integer, or limit above 100.

Next Step

Open a single booking with Booking Detail.