> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://wt.hhr.systems/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://wt.hhr.systems/_mcp/server.

# Get the seat map

POST https://api.sar.worldticket.cloud/ota/v2015b/OTA#OTA_AirSeatMapRQ
Content-Type: application/json

Get the seat map for a segment so you can show the layout and pick seats. Reference the booking by its W1 record locator and describe the segment. The response returns the cabin, rows, and seats, with each seat's availability and features. To assign a seat to a passenger, send an `OTA_AirBookModifyRQ` with `modificationType` `5`.


Reference: https://wt.hhr.systems/hhr-ticketing-system-api/seats/map

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: collection
  version: 1.0.0
paths:
  /ota/v2015b/OTA#OTA_AirSeatMapRQ:
    post:
      operationId: map
      summary: Get the seat map
      description: >
        Get the seat map for a segment so you can show the layout and pick
        seats. Reference the booking by its W1 record locator and describe the
        segment. The response returns the cabin, rows, and seats, with each
        seat's availability and features. To assign a seat to a passenger, send
        an `OTA_AirBookModifyRQ` with `modificationType` `5`.
      tags:
        - Seats
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
        - name: local-name
          in: header
          description: Routes the request to the seat map operation.
          required: true
          schema:
            $ref: >-
              #/components/schemas/OtaV2015BOtaOtaAirSeatMapRqPostParametersLocalName
      responses:
        '200':
          description: The seat map for the segment.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SeatMapResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SeatMapRequest'
servers:
  - url: https://api.sar.worldticket.cloud
    description: Production
  - url: https://test-api.worldticket.net
    description: Test
components:
  schemas:
    OtaV2015BOtaOtaAirSeatMapRqPostParametersLocalName:
      type: string
      enum:
        - OTA_AirSeatMapRQ
      default: OTA_AirSeatMapRQ
      title: OtaV2015BOtaOtaAirSeatMapRqPostParametersLocalName
    RequestorID:
      type: object
      properties:
        id:
          type: string
          description: Agent identifier.
        name:
          type: string
          description: Agency name.
        type:
          type: string
          description: Requestor type.
      title: RequestorID
    BookingChannel:
      type: object
      properties:
        type:
          type: string
      title: BookingChannel
    Source:
      type: object
      properties:
        isocurrency:
          type: string
          description: ISO currency code. Always SAR.
        isoCurrency:
          type: string
          description: ISO currency code (used by the cancel operation).
        requestorID:
          $ref: '#/components/schemas/RequestorID'
        bookingChannel:
          $ref: '#/components/schemas/BookingChannel'
      title: Source
    Pos:
      type: object
      properties:
        source:
          type: array
          items:
            $ref: '#/components/schemas/Source'
      description: Point of sale. Identifies the agent and channel behind the request.
      title: Pos
    CompanyName:
      type: object
      properties:
        code:
          type: string
          description: W1 for the WorldTicket PNR, HHR for the railway locator.
      title: CompanyName
    BookingReferenceIdType:
      type: string
      enum:
        - '14'
      title: BookingReferenceIdType
    BookingReferenceID:
      type: object
      properties:
        companyName:
          $ref: '#/components/schemas/CompanyName'
        type:
          $ref: '#/components/schemas/BookingReferenceIdType'
        id:
          type: string
          description: Record locator.
      title: BookingReferenceID
    StationCode:
      type: string
      enum:
        - JED
        - JXD
        - KCX
        - MKX
        - DMX
      description: HHR station code.
      title: StationCode
    Location:
      type: object
      properties:
        locationCode:
          $ref: '#/components/schemas/StationCode'
      title: Location
    Airline:
      type: object
      properties:
        code:
          type: string
        flightNumber:
          type: string
      title: Airline
    SeatMapRequestSeatMapRequestsSeatMapRequestItemsFlightSegmentInfo:
      type: object
      properties:
        departureAirport:
          $ref: '#/components/schemas/Location'
        arrivalAirport:
          $ref: '#/components/schemas/Location'
        operatingAirline:
          $ref: '#/components/schemas/Airline'
        departureDateTime:
          type: string
      title: SeatMapRequestSeatMapRequestsSeatMapRequestItemsFlightSegmentInfo
    SeatMapRequestSeatMapRequestsSeatMapRequestItems:
      type: object
      properties:
        flightSegmentInfo:
          $ref: >-
            #/components/schemas/SeatMapRequestSeatMapRequestsSeatMapRequestItemsFlightSegmentInfo
        travelerRefNumberRPHs:
          type: array
          items:
            type: string
      title: SeatMapRequestSeatMapRequestsSeatMapRequestItems
    SeatMapRequestSeatMapRequests:
      type: object
      properties:
        seatMapRequest:
          type: array
          items:
            $ref: >-
              #/components/schemas/SeatMapRequestSeatMapRequestsSeatMapRequestItems
      title: SeatMapRequestSeatMapRequests
    SeatMapRequest:
      type: object
      properties:
        pos:
          $ref: '#/components/schemas/Pos'
        version:
          type: string
        bookingReferenceID:
          type: array
          items:
            $ref: '#/components/schemas/BookingReferenceID'
        seatMapRequests:
          $ref: '#/components/schemas/SeatMapRequestSeatMapRequests'
      required:
        - pos
        - version
        - seatMapRequests
      title: SeatMapRequest
    SeatMapResponseSuccess:
      type: object
      properties: {}
      title: SeatMapResponseSuccess
    SeatMapResponse:
      type: object
      properties:
        success:
          $ref: '#/components/schemas/SeatMapResponseSuccess'
        seatMapResponse:
          type: array
          items:
            type: object
            additionalProperties:
              description: Any type
          description: The seat map, one entry per requested segment.
      title: SeatMapResponse

```

## Examples



**Request**

```json
{
  "pos": {
    "source": [
      {
        "isoCurrency": "SAR",
        "requestorID": {
          "id": "AGENT001",
          "name": "Sample Travel",
          "type": "5"
        },
        "bookingChannel": {
          "type": "OTA"
        }
      }
    ]
  },
  "version": "2.001",
  "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"
        ]
      }
    ]
  },
  "bookingReferenceID": [
    {
      "companyName": {
        "code": "W1"
      },
      "type": "14",
      "id": "N6G2NW"
    }
  ]
}
```

**Response**

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

**SDK Code**

```python
import requests

url = "https://api.sar.worldticket.cloud/ota/v2015b/OTA#OTA_AirSeatMapRQ"

payload = {
    "pos": { "source": [
            {
                "isoCurrency": "SAR",
                "requestorID": {
                    "id": "AGENT001",
                    "name": "Sample Travel",
                    "type": "5"
                },
                "bookingChannel": { "type": "OTA" }
            }
        ] },
    "version": "2.001",
    "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"]
            }
        ] },
    "bookingReferenceID": [
        {
            "companyName": { "code": "W1" },
            "type": "14",
            "id": "N6G2NW"
        }
    ]
}
headers = {
    "local-name": "OTA_AirSeatMapRQ",
    "x-api-key": "YOUR_API_KEY",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.sar.worldticket.cloud/ota/v2015b/OTA#OTA_AirSeatMapRQ';
const options = {
  method: 'POST',
  headers: {
    'local-name': 'OTA_AirSeatMapRQ',
    'x-api-key': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: '{"pos":{"source":[{"isoCurrency":"SAR","requestorID":{"id":"AGENT001","name":"Sample Travel","type":"5"},"bookingChannel":{"type":"OTA"}}]},"version":"2.001","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"]}]},"bookingReferenceID":[{"companyName":{"code":"W1"},"type":"14","id":"N6G2NW"}]}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.sar.worldticket.cloud/ota/v2015b/OTA#OTA_AirSeatMapRQ"

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

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("local-name", "OTA_AirSeatMapRQ")
	req.Header.Add("x-api-key", "YOUR_API_KEY")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.sar.worldticket.cloud/ota/v2015b/OTA#OTA_AirSeatMapRQ")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["local-name"] = 'OTA_AirSeatMapRQ'
request["x-api-key"] = 'YOUR_API_KEY'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"pos\": {\n    \"source\": [\n      {\n        \"isoCurrency\": \"SAR\",\n        \"requestorID\": {\n          \"id\": \"AGENT001\",\n          \"name\": \"Sample Travel\",\n          \"type\": \"5\"\n        },\n        \"bookingChannel\": {\n          \"type\": \"OTA\"\n        }\n      }\n    ]\n  },\n  \"version\": \"2.001\",\n  \"seatMapRequests\": {\n    \"seatMapRequest\": [\n      {\n        \"flightSegmentInfo\": {\n          \"departureAirport\": {\n            \"locationCode\": \"JXD\"\n          },\n          \"arrivalAirport\": {\n            \"locationCode\": \"MKX\"\n          },\n          \"operatingAirline\": {\n            \"code\": \"HHR\",\n            \"flightNumber\": \"0141\"\n          },\n          \"departureDateTime\": \"2026-05-20T17:21:00.000+03:00\"\n        },\n        \"travelerRefNumberRPHs\": [\n          \"1\"\n        ]\n      }\n    ]\n  },\n  \"bookingReferenceID\": [\n    {\n      \"companyName\": {\n        \"code\": \"W1\"\n      },\n      \"type\": \"14\",\n      \"id\": \"N6G2NW\"\n    }\n  ]\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.sar.worldticket.cloud/ota/v2015b/OTA#OTA_AirSeatMapRQ")
  .header("local-name", "OTA_AirSeatMapRQ")
  .header("x-api-key", "YOUR_API_KEY")
  .header("Content-Type", "application/json")
  .body("{\n  \"pos\": {\n    \"source\": [\n      {\n        \"isoCurrency\": \"SAR\",\n        \"requestorID\": {\n          \"id\": \"AGENT001\",\n          \"name\": \"Sample Travel\",\n          \"type\": \"5\"\n        },\n        \"bookingChannel\": {\n          \"type\": \"OTA\"\n        }\n      }\n    ]\n  },\n  \"version\": \"2.001\",\n  \"seatMapRequests\": {\n    \"seatMapRequest\": [\n      {\n        \"flightSegmentInfo\": {\n          \"departureAirport\": {\n            \"locationCode\": \"JXD\"\n          },\n          \"arrivalAirport\": {\n            \"locationCode\": \"MKX\"\n          },\n          \"operatingAirline\": {\n            \"code\": \"HHR\",\n            \"flightNumber\": \"0141\"\n          },\n          \"departureDateTime\": \"2026-05-20T17:21:00.000+03:00\"\n        },\n        \"travelerRefNumberRPHs\": [\n          \"1\"\n        ]\n      }\n    ]\n  },\n  \"bookingReferenceID\": [\n    {\n      \"companyName\": {\n        \"code\": \"W1\"\n      },\n      \"type\": \"14\",\n      \"id\": \"N6G2NW\"\n    }\n  ]\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.sar.worldticket.cloud/ota/v2015b/OTA#OTA_AirSeatMapRQ', [
  'body' => '{
  "pos": {
    "source": [
      {
        "isoCurrency": "SAR",
        "requestorID": {
          "id": "AGENT001",
          "name": "Sample Travel",
          "type": "5"
        },
        "bookingChannel": {
          "type": "OTA"
        }
      }
    ]
  },
  "version": "2.001",
  "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"
        ]
      }
    ]
  },
  "bookingReferenceID": [
    {
      "companyName": {
        "code": "W1"
      },
      "type": "14",
      "id": "N6G2NW"
    }
  ]
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'local-name' => 'OTA_AirSeatMapRQ',
    'x-api-key' => 'YOUR_API_KEY',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.sar.worldticket.cloud/ota/v2015b/OTA#OTA_AirSeatMapRQ");
var request = new RestRequest(Method.POST);
request.AddHeader("local-name", "OTA_AirSeatMapRQ");
request.AddHeader("x-api-key", "YOUR_API_KEY");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"pos\": {\n    \"source\": [\n      {\n        \"isoCurrency\": \"SAR\",\n        \"requestorID\": {\n          \"id\": \"AGENT001\",\n          \"name\": \"Sample Travel\",\n          \"type\": \"5\"\n        },\n        \"bookingChannel\": {\n          \"type\": \"OTA\"\n        }\n      }\n    ]\n  },\n  \"version\": \"2.001\",\n  \"seatMapRequests\": {\n    \"seatMapRequest\": [\n      {\n        \"flightSegmentInfo\": {\n          \"departureAirport\": {\n            \"locationCode\": \"JXD\"\n          },\n          \"arrivalAirport\": {\n            \"locationCode\": \"MKX\"\n          },\n          \"operatingAirline\": {\n            \"code\": \"HHR\",\n            \"flightNumber\": \"0141\"\n          },\n          \"departureDateTime\": \"2026-05-20T17:21:00.000+03:00\"\n        },\n        \"travelerRefNumberRPHs\": [\n          \"1\"\n        ]\n      }\n    ]\n  },\n  \"bookingReferenceID\": [\n    {\n      \"companyName\": {\n        \"code\": \"W1\"\n      },\n      \"type\": \"14\",\n      \"id\": \"N6G2NW\"\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "local-name": "OTA_AirSeatMapRQ",
  "x-api-key": "YOUR_API_KEY",
  "Content-Type": "application/json"
]
let parameters = [
  "pos": ["source": [
      [
        "isoCurrency": "SAR",
        "requestorID": [
          "id": "AGENT001",
          "name": "Sample Travel",
          "type": "5"
        ],
        "bookingChannel": ["type": "OTA"]
      ]
    ]],
  "version": "2.001",
  "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"]
      ]
    ]],
  "bookingReferenceID": [
    [
      "companyName": ["code": "W1"],
      "type": "14",
      "id": "N6G2NW"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.sar.worldticket.cloud/ota/v2015b/OTA#OTA_AirSeatMapRQ")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```