API Reference

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

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.

cabins
list
required

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.

id
string
required

Duffel's unique identifier for the seat map

Example: "sea_00003hthlsHZ8W4LxXjkzo"
segment_id
string
required

Duffel's unique identifier for the segment. It identifies the segment of an offer (i.e. the same segment across offers will have different ids).

Example: "seg_00009htYpSCXrwaB9Dn456"
slice_id
string
required

Duffel's unique identifier for the slice. It identifies the slice of an offer (i.e. the same slice across offers will have different ids.)

Example: "sli_00009htYpSCXrwaB9Dn123"

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.

Endpoint

GEThttps://api.duffel.com/air/seat_maps

Query Parameters

offer_id
string
required

Duffel's unique identifier for the offer

Example: "off_00009htYpSCXrwaB9DnUm0"

Request example

curl -X GET --compressed "https://api.duffel.com/air/seat_maps" \
-H "Accept-Encoding: gzip" \
-H "Accept: application/json" \
-H "Duffel-Version: beta" \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>"

Response example

{
"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"
}
]
}