Seat Maps
Seat maps are used to build a rich experience for your customers so they can select a seat as part of an order.
A seat map includes the data for rendering seats in the relevant cabins, along with their total cost and other information such as disclosures.
A seat is a special kind of service in that they're not shown when getting an individual
offer with return_available_services
set to true
. They're only available through
this endpoint.
So far we support selecting seats when you create an order. This means we do not support selecting a seat after an order has already been created or cancelling a booked seat.
Display recommendations
Widths
Each seat
, empty
, and bassinet
element should be displayed with
the same static width, while other elements should ideally fill or
shrink in the available space in the section. However, displaying them
with a static width could also be appropriate.
If these elements don't fill the whole section, they should be displayed as middle-aligned by default.
Seat identifiers
We recommend showing seat letters on each seat, instead of creating a header row with letters for each column.
Seat maps themselves don't have columns per se.
There won't always be aligned columns of seats with the same letter in the seat map when seat rows have different numbers of seats.
For example, if there is one less seat in a row, the remaining seats may be shifted by half a seat and not aligning with any regular "column":
A BA
In addition, if there is less seats in a section, the letters of the window and aisle seats will always be preserved throughout the cabin. This can lead to the following seat map:
A B CA C
Schema
The list of cabins in this seat map.
Cabins are ordered by deck from lowest to highest, and then within each deck from the front to back of the aircraft.
A cabin is a physical section of an aircraft that passengers travel in. The cabin that a passenger travels in will depend on the fare they paid (for example an economy cabin versus a business class cabin).
Get seat maps
Gets seat maps by specific parameters. At the moment we only support querying by an offer ID.
A list of seat maps, one per segment, will be returned, which you can use to build a seat selection UI for your customers. This is not available for all airlines or flights, so seat maps will not always be returned.
If there are one or more passengers, you do not have to select a seat for each one. Each passenger can only select one seat per segment. Two passengers cannot select the same seat.
As with other services when creating an order, the total amount charged will be the cost of the offer and any selected services.
GET https://api.duffel.com/air/seat_maps
curl -X GET --compressed "https://api.duffel.com/air/seat_maps?offer_id=off_00009htYpSCXrwaB9DnUm0" \-H "Accept-Encoding: gzip" \-H "Accept: application/json" \-H "Duffel-Version: v2" \-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>"
{"data": [{"cabins": [{"aisles": 2,"cabin_class": "economy","deck": 0,"rows": [{"sections": [{"elements": [{"available_services": [{"id": "ase_00009UhD4ongolulWAAA1A","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "30.00","total_currency": "GBP"}],"designator": "1A","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA1B","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "30.00","total_currency": "GBP"}],"designator": "1B","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA1C","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "30.00","total_currency": "GBP"}],"designator": "1C","disclosures": [],"name": "","type": "seat"}]},{"elements": [{"available_services": [{"id": "ase_00009UhD4ongolulWAAA1D","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "30.00","total_currency": "GBP"}],"designator": "1D","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA1E","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "30.00","total_currency": "GBP"}],"designator": "1E","disclosures": [],"name": "","type": "seat"},{"available_services": [],"designator": "1F","disclosures": [],"name": "","type": "seat"},{"available_services": [],"designator": "1G","disclosures": [],"name": "","type": "seat"}]},{"elements": [{"available_services": [{"id": "ase_00009UhD4ongolulWAAA1J","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "30.00","total_currency": "GBP"}],"designator": "1H","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA1K","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "30.00","total_currency": "GBP"}],"designator": "1J","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA1K","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "30.00","total_currency": "GBP"}],"designator": "1K","disclosures": [],"name": "","type": "seat"}]}]},{"sections": [{"elements": [{"type": "exit_row"}]},{"elements": []},{"elements": [{"type": "exit_row"}]}]},{"sections": [{"elements": [{"available_services": [{"id": "ase_00009UhD4ongolulWAAA2A","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "20.00","total_currency": "GBP"}],"designator": "2A","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA2B","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "20.00","total_currency": "GBP"}],"designator": "2B","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA2C","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "20.00","total_currency": "GBP"}],"designator": "2C","disclosures": [],"name": "","type": "seat"}]},{"elements": [{"available_services": [],"designator": "2D","disclosures": [],"name": "","type": "seat"},{"available_services": [],"designator": "2E","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA2F","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "20.00","total_currency": "GBP"}],"designator": "2F","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA2G","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "20.00","total_currency": "GBP"}],"designator": "2G","disclosures": [],"name": "","type": "seat"}]},{"elements": [{"available_services": [],"designator": "2H","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA2J","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "20.00","total_currency": "GBP"}],"designator": "2J","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA2K","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "20.00","total_currency": "GBP"}],"designator": "2K","disclosures": [],"name": "","type": "seat"}]}]},{"sections": [{"elements": [{"available_services": [{"id": "ase_00009UhD4ongolulWAAA3A","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "10.00","total_currency": "GBP"}],"designator": "3A","disclosures": [],"name": "","type": "seat"},{"available_services": [],"designator": "3B","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA3C","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "10.00","total_currency": "GBP"}],"designator": "3C","disclosures": [],"name": "","type": "seat"}]},{"elements": [{"available_services": [{"id": "ase_00009UhD4ongolulWAAA3D","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "10.00","total_currency": "GBP"}],"designator": "3D","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA3E","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "10.00","total_currency": "GBP"}],"designator": "3E","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA3F","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "10.00","total_currency": "GBP"}],"designator": "3F","disclosures": [],"name": "","type": "seat"},{"available_services": [],"designator": "3G","disclosures": [],"name": "","type": "seat"}]},{"elements": [{"available_services": [{"id": "ase_00009UhD4ongolulWAAA3H","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "10.00","total_currency": "GBP"}],"designator": "3H","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA3J","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "10.00","total_currency": "GBP"}],"designator": "3J","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA3K","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "10.00","total_currency": "GBP"}],"designator": "3K","disclosures": [],"name": "","type": "seat"}]}]},{"sections": [{"elements": [{"available_services": [{"id": "ase_00009UhD4ongolulWAAA4A","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "10.00","total_currency": "GBP"}],"designator": "4A","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA4B","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "10.00","total_currency": "GBP"}],"designator": "4B","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA4C","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "10.00","total_currency": "GBP"}],"designator": "4C","disclosures": [],"name": "","type": "seat"}]},{"elements": [{"available_services": [{"id": "ase_00009UhD4ongolulWAAA4D","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "10.00","total_currency": "GBP"}],"designator": "4D","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA4E","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "10.00","total_currency": "GBP"}],"designator": "4E","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA4F","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "10.00","total_currency": "GBP"}],"designator": "4F","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA4G","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "10.00","total_currency": "GBP"}],"designator": "4G","disclosures": [],"name": "","type": "seat"}]},{"elements": [{"available_services": [],"designator": "4H","disclosures": [],"name": "","type": "seat"},{"available_services": [],"designator": "4J","disclosures": [],"name": "","type": "seat"},{"available_services": [{"id": "ase_00009UhD4ongolulWAAA4K","passenger_id": "pas_00009hj8USM7Ncg31cAAA","total_amount": "10.00","total_currency": "GBP"}],"designator": "4K","disclosures": [],"name": "","type": "seat"}]}]},{"sections": [{"elements": [{"type": "lavatory"}]},{"elements": []},{"elements": [{"type": "lavatory"}]}]},{"sections": [{"elements": [{"type": "galley"}]},{"elements": [{"type": "galley"}]},{"elements": [{"type": "galley"}]}]}],"wings": {"first_row_index": 1,"last_row_index": 2}}],"id": "sea_00003hthlsHZ8W4LxXjkzo","segment_id": "seg_00009htYpSCXrwaB9Dn456","slice_id": "sli_00009htYpSCXrwaB9Dn123"}]}