Skip to main content

Seat Map Endpoint

Returns the cabin layout and per-seat pricing for every segment of an itinerary.

  • Endpoint: /api/v1/flights/seat-map
  • Method: GET

Seat Map is optional and provider-dependent:

ProviderSupport
HititFull seat map with per-seat pricing.
FlightRouteFull seat map with per-seat pricing.
FliggyNot supported — returns an empty array.

Headers

HeaderValueRequiredDescription
Partner-Access-TokenBase64 StringYesYour encrypted AES-256 time-sensitive token.
X-CurrencyCurrency CodeOptionalDisplay currency. Defaults to your partner currency, then THB.
Accept-LanguageLanguage CodeOptionale.g. en, th, my.
Acceptapplication/jsonYes

Query Parameters

ParameterTypeRequiredDescription
solution_idStringYesThe solutionId from Search.

Sample Request

GET /api/v1/flights/seat-map?solution_id=HITIT_9f2c1b7d4e8a3f6c0d5b2a91e7c48d63

Response

data is an array with one entry per flight segment.

FieldTypeDescription
segmentIdStringjourneyIndex-segmentIndex, e.g. 0-0. Use this exact value in selected_seats[].segmentId.
marketingAirlineStringAirline IATA code.
flightNumberStringFlight number.
departureAirport / arrivalAirportStringIATA codes.
map.cabinsArrayCabin sections.
session_idStringSeat pricing session. Echo it back in selected_seats[].session_id at confirm.

Cabin object

FieldTypeDescription
cabinCodeStringProvider cabin code.
cabinTypeStringCabin type label.
rowsArrayRows in this cabin.

Row object

FieldTypeDescription
rowNumberIntegerRow number.
seatsArraySeats in this row.

Seat object

FieldTypeDescription
seatNumberStringe.g. 12A. Send this in selected_seats[].seatNumber.
columnNumberIntegerColumn index within the row.
seatTypeCodeStringProvider seat type (window, aisle, exit row, …).
availableBooleanWhether the seat is sellable.
priceFloatCustomer-facing price, margin applied, display currency. Same as display_price.
display_priceFloatCustomer-facing price, display currency.
thb_priceFloatSystem price in THB, margin applied.
currencyStringDisplay currency.

:::warning Segment key convention segmentId is a positional key (journey-segment), not the provider's internal segment ID. It uses the same 0-based convention as the ancillaries map keys, so seats and add-ons on the same physical segment always share the same key. :::

Sample Response

Truncated to one segment, one cabin, one row.

{
"result": 1,
"message": "success",
"data": [
{
"segmentId": "0-0",
"marketingAirline": "TG",
"flightNumber": "TG403",
"departureAirport": "BKK",
"arrivalAirport": "SIN",
"map": {
"cabins": [
{
"cabinCode": "Y",
"cabinType": "Economy",
"rows": [
{
"rowNumber": 12,
"seats": [
{
"seatNumber": "12A",
"columnNumber": 1,
"seatTypeCode": "W",
"available": true,
"price": 450.00,
"display_price": 450.00,
"thb_price": 450.00,
"currency": "THB"
},
{
"seatNumber": "12B",
"columnNumber": 2,
"seatTypeCode": "M",
"available": false,
"price": 0,
"display_price": 0,
"thb_price": 0,
"currency": "THB"
}
]
}
]
}
]
},
"session_id": "HITIT_67f4c0d31e2b8d3a5c60f8a2"
}
]
}

Sending Selected Seats

At Checkout Confirm, attach the chosen seats to the passenger:

"selected_seats": [
{
"seatNumber": "12A",
"segmentId": "0-0",
"session_id": "HITIT_67f4c0d31e2b8d3a5c60f8a2"
}
]

One entry per segment the passenger has chosen a seat on. The seat price is re-derived server-side from session_id; any price you send is ignored.

A legacy single-seat form is also accepted:

"seat_number": "12A"

It applies to segment 0-0 only and carries no priced session, so prefer selected_seats.

Errors

MessageCause
solution_id is requiredQuery parameter missing.
Hitit flight session expired. Please search again.The cached search solution has expired. Re-run Search.

Next Step

Proceed to Checkout.