> For the complete documentation index, see [llms.txt](https://resources.atriptech.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://resources.atriptech.com/api-document/api-reference/booking-apis/inflow-seat-and-baggage.md).

# Seat

{% hint style="info" %}
💬 **Need help?** If you're stuck, ask Eva on ATRIP for instant diagnostics.

<a href="https://www.atriptech.com/" class="button primary" data-icon="comments">Ask Eva</a>
{% endhint %}

Use this page for the endpoint details of inflow seat lookup.

{% hint style="warning" %}
`seatAvailability.do` no longer supports independent mode.

Call it only with a valid `sessionId` from `verify.do` or `OfferId` from `getOffers.do`.

Do not call it with flight data alone.
{% endhint %}

### SeatAvailability call rules

Use `seatAvailability.do` only inside a valid booking chain.

Supported request context:

* `sessionId` returned by `verify.do`
* `OfferId` returned by `getOffers.do`

Unsupported request context:

* flight information alone

### Regional handling

#### Global customers

Keep the current flow.

Use `sessionId` or `OfferId` as before.

#### China OTA scenarios

Some upstream seat requests contain only flight information.

For this case, keep the `sessionId` returned by `verify.do`.

When the seat request arrives, match the flight to the cached `sessionId`.

If the match succeeds, call `seatAvailability.do` with that `sessionId`.

If no match exists, treat it as a pure quote request.

Atlas does not support that case.

### Why this changed

This rule keeps seat pricing and fulfillment aligned with the real booking chain.

It also reduces invalid airline-side queries.

### Related page

For baggage endpoint details, use [Baggage](/api-document/api-reference/booking-apis/baggage.md).

## Seat Availability

> \*\*Dependency:\*\*\
> Verify or getOffer function should be called in prior to this call.\
> \
> \> In a booking process, please call the 'seatAvailability' API to get seat availability information after price verification via 'verify' or 'getOffer'.\
> \> Steps:\
> \> 1. API sequence\
> \>    \* Search - Verify- seatAvailability - Order - Pay\
> \>    \* getOffer - seatAvailability - Order - Pay\
> \> 2. Pass 'offerId' in 'seatAvailability' requests:\
> \>    \* From 'verify': Use sessionId directly.\
> \>    From 'getOffer': Use its offerId.\
> \> 3. In the Order step, use the productCode to add specific seat to the ticket order.\
> \
> \*\*Endpoint:\*\*\
> <https://sandbox.atriptech.com/seatAvailability.do>

```json
{"openapi":"3.0.1","info":{"title":"Default module","version":"1.0.0"},"security":[],"paths":{"/seatAvailability.do":{"post":{"summary":"Seat Availability","deprecated":false,"description":"**Dependency:**\nVerify or getOffer function should be called in prior to this call.\n\n> In a booking process, please call the 'seatAvailability' API to get seat availability information after price verification via 'verify' or 'getOffer'.\n> Steps:\n> 1. API sequence\n>    * Search - Verify- seatAvailability - Order - Pay\n>    * getOffer - seatAvailability - Order - Pay\n> 2. Pass 'offerId' in 'seatAvailability' requests:\n>    * From 'verify': Use sessionId directly.\n>    From 'getOffer': Use its offerId.\n> 3. In the Order step, use the productCode to add specific seat to the ticket order.\n\n**Endpoint:**\nhttps://sandbox.atriptech.com/seatAvailability.do","tags":[],"parameters":[{"name":"Accept","in":"header","description":"","required":true,"schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"schema":{"type":"string"}},{"name":"Accept-Encoding","in":"header","description":"","required":true,"schema":{"type":"string"}},{"name":"x-atlas-client-id","in":"header","description":"","required":true,"schema":{"type":"string"}},{"name":"x-atlas-client-secret","in":"header","description":"","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string","description":"The`sessionId`returned by price verification api(`verify.do`). Only required in **Non-independent mode**."},"offerId":{"type":"string","description":"The`offerID`returned by get offer api(`getOffers.do`). Only required in **Non-independent mode**."},"carrier":{"type":"string","description":"The IATA code of MSC(known as Most Significant Carrier) of the itinerary."},"outboundSegments":{"type":"array","items":{"properties":{"flightNumber":{"type":"string"},"segmentIndex":{"type":"integer"},"depAirport":{"type":"string"},"arrAirport":{"type":"string"},"cabinClass":{"type":"string"},"depTime":{"type":"string"}},"$ref":"#/components/schemas/SeatMapFlight"},"description":"Outbound segments. All segments of the itinerary must be specified. Segments should be arranged in the order of takeoff.","minItems":1},"inboundSegments":{"type":"array","items":{"$ref":"#/components/schemas/SeatMapFlight"},"description":"Inbound segments. All segments of the itinerary must be specified. Segments should be arranged in the order of takeoff.","minItems":1,"nullable":true}},"required":["carrier","outboundSegments","sessionId","offerId"]}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/SeatAvailabilityResponseStatus","description":"- 214: Session ID invalid or expired.\n- 215: Segment index missing.\n- 216: Seat selection failed.\n- 217: Unknown error.\n- 218: The airline don’t support seat selection currently.\n- 219: The route don’t support seat selection currently.\n- 220: illegal request parameter.\n- 221: Fare family is empty and not configured with lowest price fare family.\n- 223: The ratio of seat quotation requests to payment orders has exceeded the allowed threshold."},"msg":{"$ref":"#/components/schemas/ResponseMessage","nullable":true},"cabins":{"type":"array","items":{"type":"object","properties":{"segmentIndex":{"type":"integer","description":"The segment index to which the cabin belongs"},"cabin":{"properties":{"deck":{"type":"string","description":"Main deck or upper deck above that, which is found on some large aircraft.","enum":["Main","Upper deck"],"default":"Main","nullable":true},"cabinClass":{"$ref":"#/components/schemas/CabinClass","description":"Service grade of the fare","nullable":true},"cabinLayout":{"properties":{"columns":{"type":"array","items":{"properties":{"designator":{"type":"string","description":"A letter used to uniquely identify the seat position in the column.\n**Typical values:** A,B,C,D,E,F"},"characteristics":{"type":"string","description":"characteristics of column:\n-`A`: column by the aisle\n-`M`: middle column\n-`W`: column by the window","nullable":true}},"required":["designator"],"type":"object"},"description":"Contains columns and seat information for seat display purposes. Returns the characteristics for each column. Provided in the order from left to right."},"rows":{"properties":{"first":{"type":"integer","description":"First-row number Row starting row position for columns A,B,C,D,E,F"},"last":{"type":"integer","description":"Last row number Row ending row position for columns A,B,C,D,E,F"}},"required":["first","last"],"description":"Contains rows and seat information for seat display purposes Returns the starting end row position for each column","type":"object"},"exitRowPositions":{"type":"array","items":{"type":"object","properties":{"first":{"type":"integer","description":"Exit seat starting row position"},"last":{"type":"integer","description":"Exit seat ending row position"}},"required":["first","last"]},"description":"Return the position of exit rows, if applicable. The row number generally starts from 1 and increases from the front to the tail of the aircraft, that is, the seats close to the cockpit (nose) have the smallest row numbers, and the closer to the tail, the larger the row numbers.","nullable":true}},"required":["columns","rows"],"description":"Used to describe the seat layout of the cabin.","type":"object"},"rows":{"type":"array","items":{"properties":{"number":{"type":"integer","description":"Seat row number","minimum":1},"seats":{"type":"array","items":{"type":"object","properties":{"column":{"type":"string","description":"The column where the seat is located"},"seatStatus":{"type":"string","description":"A flag used to indicate whether a seat is free or occupied.\n- F: Free\n- O: Occupied","enum":["F","O"]},"seatCharacteristics":{"type":"array","items":{"type":"string"},"description":"A list contains seat characteristics, typical values(but not limited to):\n-`A`: Aisle seat\n-`E`: Exit and emergency exit\n-`I`: Seat suitable for adult with an infant\n-`IE`: Seat not suitable for child\n-`L`: Leg space seat\n-`U`: Seat suitable for unaccompanied minors\n-`V`: Seat to be left vacant or offered last\n-`W`: Window seat\n\nFor more information, please refer to: [EDIFACT Standards for Seat Characteristics (9825)](https://support.travelport.com/webhelp/GWS/Content/XML_Select_Web_Service/Codes/edifact_standards_for_seating.htm).","nullable":true},"price":{"type":"number","description":"The total price of the seat, including taxes"},"currency":{"type":"string","description":"Currency of the price."},"vendorPrice":{"type":"number","description":"The total price in vendor's currency of the seat, including taxes","nullable":true},"vendorCurrency":{"type":"string","description":"Vendor's currency","nullable":true},"productCode":{"type":"string","description":"A code used to uniquely identify this seat, which needs to be used when submitting a seat selection request."},"displayCurrency":{"type":"number","description":"Display currency","nullable":true},"displayPrice":{"type":"number","description":"The total price in display currency of the seat, including taxes","nullable":true}},"required":["column","seatStatus","price","currency","productCode"]},"description":"A list of seats that make up this row"}},"required":["number","seats"],"type":"object"},"description":"A list of rows in this cabin. A cabin row has one or more seats."}},"required":["cabinLayout","rows"],"description":"An object used to describe the seat layout within a cabin.","type":"object"}},"required":["segmentIndex","cabin"]},"description":"An array containing all cabins and the seat layouts within them.","nullable":true}},"required":["status"]}}},"headers":{}}}}}},"components":{"schemas":{"SeatMapFlight":{"type":"object","properties":{"segmentIndex":{"type":"integer","description":"This is the segment number, which starts from 1 and increments in the order of takeoff of each segment.","minimum":1},"flightNumber":{"type":"string","description":"Marketing flight number(with airline code prefix)."},"depAirport":{"type":"string","description":"3-letter iata code for the airport at which the segment is scheduled to depart."},"arrAirport":{"type":"string","description":"3-letter iata code for the arrival airport at which the segment is scheduled to arrive."},"depTime":{"type":"string","description":"The datetime at which the segment is scheduled to depart, in the departure airport timezone. The format is`YYYYMMDD`."},"cabinClass":{"$ref":"#/components/schemas/CabinClass","description":"Cabin class.\n- 1: economy\n- 2: business\n- 3: first\n- 4: premium economy"}},"required":["flightNumber","segmentIndex","depAirport","arrAirport","cabinClass","depTime"]},"CabinClass":{"type":"integer","enum":[1,2,3,4],"title":""},"SeatAvailabilityResponseStatus":{"type":"integer","enum":[214,215,216,217,218,219,220,221,223]},"ResponseMessage":{"type":"string","description":"It serves as an additional description of the response result. Especially when the interface reports an error (`status` !=`0`), it is usually a human-readable error message. Note: Do not use this field in any programming scenarios. For example, do not judge whether the interface responds successfully based on this field. Instead, you should only determine it by checking whether the status is equal to`0`at any time."}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://resources.atriptech.com/api-document/api-reference/booking-apis/inflow-seat-and-baggage.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
