Seat maps

Show the seat layout and assign seats
View as Markdown

Call OTA_AirSeatMapRQ to get the seat map for a segment. Use it to show travelers the layout, see which seats are free, and pick seats. To put a passenger in a seat, you send a seat change on the booking.

Seat changes apply to issued tickets only

Seat changes apply only to issued tickets. Once payment is complete and passenger information is set, the ticket is issued and you can assign or change seats.

Get the map

Reference the booking by its W1 record locator for an issued ticket booking, and describe the segment you want the map for.

{
"version": "2.001",
"pos": {
"source": [
{
"isoCurrency": "SAR",
"requestorID": { "id": "AGENT001", "name": "Sample Travel", "type": "5" },
"bookingChannel": { "type": "OTA" }
}
]
},
"bookingReferenceID": [
{ "companyName": { "code": "W1" }, "type": "14", "id": "N6G2NW" }
],
"seatMapRequests": {
"seatMapRequest": [
{
"flightSegmentInfo": {
"departureAirport": { "locationCode": "JXD" },
"arrivalAirport": { "locationCode": "MKX" },
"operatingAirline": { "code": "HHR", "flightNumber": "0141" },
"departureDateTime": "2026-05-20T17:21:00.000+03:00"
},
"travelerRefNumberRPHs": ["1"]
}
]
}
}

Read the map

The response returns the cabin, its rows, and the seats in each row. Every seat carries a number, its availability, and its features.

{
"success": {},
"seatMapResponse": [
{
"seatMapDetails": [
{
"cabinClass": [
{
"zone": { "code": "006", "totalSeatQty": 38 },
"rowInfo": [
{
"seatInfo": [
{
"summary": { "seatNumber": "142", "rowNumber": 2, "columnNumber": 4 },
"availability": { "value": "SEAT_OCCUPIED" },
"features": [{ "value": "WINDOW" }],
"status": [{ "value": "BOOKED" }]
},
{
"summary": { "seatNumber": "143", "rowNumber": 2, "columnNumber": 5 },
"availability": { "value": "SEAT_AVAILABLE" },
"features": [{ "value": "AISLE" }],
"status": [{ "value": "FREE" }]
}
]
}
]
}
]
}
]
}
]
}

A seat with availability of SEAT_AVAILABLE is free to take. features tells you whether it is a window or aisle seat.

Change a seat

Picking a seat is a change to the booking, not part of the seat map call. Send an OTA_AirBookModifyRQ with modificationType 5. Put the seat request in travelerInfo.specialReqDetails, and pass the current booking in airReservation (read it back first with OTA_ReadRQ).

{
"version": "2.001",
"pos": {
"source": [
{
"isoCurrency": "SAR",
"requestorID": { "id": "AGENT001", "name": "Sample Travel", "type": "5" },
"bookingChannel": { "type": "OTA" }
}
]
},
"airReservation": {
"bookingReferenceID": [
{ "companyName": { "code": "W1" }, "type": "14", "id": "N6G2NW" },
{ "companyName": { "code": "HHR" }, "type": "14", "id": "CB0255134" }
]
},
"airBookModifyRQ": {
"modificationType": "5",
"travelerInfo": {
"specialReqDetails": [
{
"seatRequests": {
"seatRequest": [
{
"flightRefNumberRPHList": ["1"],
"travelerRefNumberRPHList": ["1"],
"seatNumber": "143"
}
]
}
}
]
}
}
}

Each seatRequest names the segment, the traveler, and the seat:

FieldWhat it points at
flightRefNumberRPHListThe segment to change the seat on.
travelerRefNumberRPHListThe traveler getting the seat.
seatNumberThe seat you chose from the map.

The response returns the reservation with the seat set. airReservation here is the booking you get back from reading it; send that object as-is with your seat request added.

For the full seat-change payload, see the GO7 seat map and modify-booking pages. Updating other passenger details works the same way, through Updating passengers.