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:
| Provider | Support |
|---|---|
| Hitit | Full seat map with per-seat pricing. |
| FlightRoute | Full seat map with per-seat pricing. |
| Fliggy | Not supported — returns an empty array. |
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. Defaults to your partner currency, then THB. |
Accept-Language | Language Code | Optional | e.g. en, th, my. |
Accept | application/json | Yes |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
solution_id | String | Yes | The 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.
| Field | Type | Description |
|---|---|---|
segmentId | String | journeyIndex-segmentIndex, e.g. 0-0. Use this exact value in selected_seats[].segmentId. |
marketingAirline | String | Airline IATA code. |
flightNumber | String | Flight number. |
departureAirport / arrivalAirport | String | IATA codes. |
map.cabins | Array | Cabin sections. |
session_id | String | Seat pricing session. Echo it back in selected_seats[].session_id at confirm. |
Cabin object
| Field | Type | Description |
|---|---|---|
cabinCode | String | Provider cabin code. |
cabinType | String | Cabin type label. |
rows | Array | Rows in this cabin. |
Row object
| Field | Type | Description |
|---|---|---|
rowNumber | Integer | Row number. |
seats | Array | Seats in this row. |
Seat object
| Field | Type | Description |
|---|---|---|
seatNumber | String | e.g. 12A. Send this in selected_seats[].seatNumber. |
columnNumber | Integer | Column index within the row. |
seatTypeCode | String | Provider seat type (window, aisle, exit row, …). |
available | Boolean | Whether the seat is sellable. |
price | Float | Customer-facing price, margin applied, display currency. Same as display_price. |
display_price | Float | Customer-facing price, display currency. |
thb_price | Float | System price in THB, margin applied. |
currency | String | Display 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
| Message | Cause |
|---|---|
solution_id is required | Query parameter missing. |
Hitit flight session expired. Please search again. | The cached search solution has expired. Re-run Search. |
Next Step
Proceed to Checkout.