SeatAvailability
IATA_SeatAvailabilityRQ returns the seat map and priced, selectable seats for a cached offer or an existing order. It is the XML counterpart of the JSON offer ancillaries and order ancillaries seat endpoints.
POST /ndc/{version}/SeatAvailability with version one of v21.3, v24.4, or v25.4.
Post-booking, seats follow the quote-then-change pattern: SeatAvailability with an OrderID → OrderChange accepting the returned OFI-ST-* offer items.
Request
SeatAvailCoreRequest takes either an OfferRequest (pre-booking, referencing an AirShopping or OfferPrice offer) or an OrderRequest (post-booking, referencing the order ID / record locator).
For an offer
<?xml version="1.0" encoding="UTF-8"?>
<IATA_SeatAvailabilityRQ xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersMessage">
<DistributionChain>
<DistributionChainLink xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<Ordinal>1</Ordinal>
<OrgRole>Seller</OrgRole>
<ParticipatingOrg>
<OrgID>BZ</OrgID>
</ParticipatingOrg>
</DistributionChainLink>
<DistributionChainLink xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<Ordinal>2</Ordinal>
<OrgRole>Carrier</OrgRole>
<ParticipatingOrg>
<OrgID>MX</OrgID>
</ParticipatingOrg>
</DistributionChainLink>
</DistributionChain>
<Request>
<Pax xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<PaxID>ADT-1</PaxID>
<PTC>ADT</PTC>
</Pax>
<SeatAvailCoreRequest xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<OfferRequest>
<Offer>
<OfferID>OF-25a8bea9-89f5-41ea-98be-25340131a18b</OfferID>
<OfferItem>
<OfferItemID>OFI-25a8bea9-89f5-41ea-98be-25340131a18b-0</OfferItemID>
<PaxRefID>ADT-1</PaxRefID>
</OfferItem>
<OwnerCode>MX</OwnerCode>
</Offer>
</OfferRequest>
</SeatAvailCoreRequest>
</Request>
</IATA_SeatAvailabilityRQ>
For an existing order
<?xml version="1.0" encoding="UTF-8"?>
<IATA_SeatAvailabilityRQ xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersMessage">
<DistributionChain>
<DistributionChainLink xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<Ordinal>1</Ordinal>
<OrgRole>Seller</OrgRole>
<ParticipatingOrg>
<OrgID>BZ</OrgID>
</ParticipatingOrg>
</DistributionChainLink>
<DistributionChainLink xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<Ordinal>2</Ordinal>
<OrgRole>Carrier</OrgRole>
<ParticipatingOrg>
<OrgID>MX</OrgID>
</ParticipatingOrg>
</DistributionChainLink>
</DistributionChain>
<Request>
<Pax xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<PaxID>ADT-1</PaxID>
<PTC>ADT</PTC>
</Pax>
<SeatAvailCoreRequest xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<OrderRequest>
<Order>
<OrderID>ABC123</OrderID>
<OwnerCode>MX</OwnerCode>
</Order>
</OrderRequest>
</SeatAvailCoreRequest>
</Request>
</IATA_SeatAvailabilityRQ>
Response
ALaCarteOffer lists one OfferItem per assignable open seat and passenger, each with a BOO-generated OfferItemID prefixed OFI-ST-. These IDs carry identity only — segment, passenger, seat designator — never price; amounts are recomputed from live booking state when the seat is accepted. Only those generated IDs are valid inside an OrderChange AcceptSelectedQuotedOfferList.
SeatMap renders the cabin per segment: CabinCompartment → SeatRow → Seat with OccupationStatusCode (A available, U unavailable) and SeatCharacteristicCode values.
<?xml version="1.0" encoding="UTF-8"?>
<IATA_SeatAvailabilityRS xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersMessage">
<Response>
<ALaCarteOffer xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<OfferID>ALC-ST-example</OfferID>
<OfferItem>
<Eligibility>
<OfferFlightAssociations>
<PaxSegmentReferences>
<PaxSegmentRefID>SEG-example</PaxSegmentRefID>
</PaxSegmentReferences>
</OfferFlightAssociations>
<PaxRefID>ADT-1</PaxRefID>
</Eligibility>
<OfferItemID>OFI-ST-example</OfferItemID>
<Service>
<ServiceDefinitionRefID>SD-ST-example</ServiceDefinitionRefID>
<ServiceID>SVC-ST-example</ServiceID>
</Service>
<UnitPrice>
<TotalAmount CurCode="USD">25</TotalAmount>
</UnitPrice>
</OfferItem>
<!-- one OfferItem per assignable open seat and passenger -->
<OwnerCode>MX</OwnerCode>
</ALaCarteOffer>
<DataLists xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<PaxList>
<Pax>
<PaxID>ADT-1</PaxID>
<PTC>ADT</PTC>
</Pax>
</PaxList>
<PaxSegmentList>
<PaxSegment>
<DatedMarketingSegmentRefId>DMS-example</DatedMarketingSegmentRefId>
<PaxSegmentID>SEG-example</PaxSegmentID>
</PaxSegment>
</PaxSegmentList>
<ServiceDefinitionList>
<ServiceDefinition>
<Name>Seat 10A</Name>
<OwnerCode>MX</OwnerCode>
<ServiceCode>SEAT</ServiceCode>
<ServiceDefinitionID>SD-ST-example</ServiceDefinitionID>
</ServiceDefinition>
</ServiceDefinitionList>
</DataLists>
<SeatMap xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<CabinCompartment>
<CabinCompartmentID>Y</CabinCompartmentID>
<DeckCode>Main</DeckCode>
<SeatRow>
<RowNumber>10</RowNumber>
<Seat>
<ColumnID>A</ColumnID>
<OccupationStatusCode>A</OccupationStatusCode>
<RowNumber>10</RowNumber>
<SeatCharacteristicCode>WINDOW</SeatCharacteristicCode>
</Seat>
<!-- ...more Seat elements... -->
</SeatRow>
<!-- ...more SeatRow elements... -->
</CabinCompartment>
<PaxSegmentRefID>SEG-example</PaxSegmentRefID>
</SeatMap>
</Response>
</IATA_SeatAvailabilityRS>
SeatAvailability errors
| Code | HTTP status | Cause |
|---|---|---|
ERR-1000 | 400 | Malformed XML. |
ERR-1002 | 404 | Unsupported version segment in the path. |
ERR-1003 | 400 | Missing required element. |
ERR-1004 | 400 | Invalid field value. |
ERR-3000 | 404 | Referenced offer could not be found. |
ERR-3001 | 404 | Referenced offer has expired. |
ERR-3002 | 400 | One or more offer items not found on the offer. |
ERR-4000 | 404 | Referenced order not found. |
ERR-8000 | 401 | Missing or invalid API key or bearer token. |
ERR-8001 | 403 | API key not authorized for this request. |
ERR-8002 | 503 | Authentication store unavailable. |
ERR-9003 | 500 | Seat lookup failed upstream. |