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.