> 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.

# Create a group booking

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

Create a booking when the names are not known yet. Send passenger counts and one CTC contact passenger. The response returns a `quoteID` and the W1 record locator. Add the passengers and issue tickets no later than 72 hours before departure, or the booking is released.


Reference: https://wt.hhr.systems/hhr-ticketing-system-api/booking/create-group

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: collection
  version: 1.0.0
paths:
  /ota/v2015b/OTA#OTA_AirPriceRQ:
    post:
      operationId: createGroup
      summary: Create a group booking
      description: >
        Create a booking when the names are not known yet. Send passenger counts
        and one CTC contact passenger. The response returns a `quoteID` and the
        W1 record locator. Add the passengers and issue tickets no later than 72
        hours before departure, or the booking is released.
      tags:
        - Booking
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
        - name: local-name
          in: header
          description: Routes the request to the group booking operation.
          required: true
          schema:
            $ref: >-
              #/components/schemas/OtaV2015BOtaOtaAirPriceRqPostParametersLocalName
      responses:
        '200':
          description: The held booking, with a quote ID and time limits.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirPriceResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AirPriceRequest'
servers:
  - url: https://api.sar.worldticket.cloud
    description: Production
  - url: https://test-api.worldticket.net
    description: Test
components:
  schemas:
    OtaV2015BOtaOtaAirPriceRqPostParametersLocalName:
      type: string
      enum:
        - OTA_AirPriceRQ
      default: OTA_AirPriceRQ
      title: OtaV2015BOtaOtaAirPriceRqPostParametersLocalName
    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
    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
    BookingClass:
      type: string
      enum:
        - 'Y'
        - C
      description: Booking class. Y is Economy (HHR class T), C is Business (HHR class P).
      title: BookingClass
    FlightSegment:
      type: object
      properties:
        rph:
          type: string
          description: Reference placeholder for this segment.
        status:
          type: string
        flightNumber:
          type: string
        fareBasisCode:
          type: string
        departureAirport:
          $ref: '#/components/schemas/Location'
        arrivalAirport:
          $ref: '#/components/schemas/Location'
        departureDateTime:
          type: string
        arrivalDateTime:
          type: string
        marketingAirline:
          $ref: '#/components/schemas/Airline'
        operatingAirline:
          $ref: '#/components/schemas/Airline'
        resBookDesigCode:
          $ref: '#/components/schemas/BookingClass'
      title: FlightSegment
    AirItineraryOriginDestinationOptionsOriginDestinationOptionItems:
      type: object
      properties:
        rph:
          type: string
        flightSegment:
          type: array
          items:
            $ref: '#/components/schemas/FlightSegment'
      title: AirItineraryOriginDestinationOptionsOriginDestinationOptionItems
    AirItineraryOriginDestinationOptions:
      type: object
      properties:
        originDestinationOption:
          type: array
          items:
            $ref: >-
              #/components/schemas/AirItineraryOriginDestinationOptionsOriginDestinationOptionItems
      title: AirItineraryOriginDestinationOptions
    AirItinerary:
      type: object
      properties:
        originDestinationOptions:
          $ref: '#/components/schemas/AirItineraryOriginDestinationOptions'
      title: AirItinerary
    AirPriceRequestTravelerInfoSummaryPricingPrefItems:
      type: object
      properties:
        qualifier:
          type: string
      title: AirPriceRequestTravelerInfoSummaryPricingPrefItems
    PassengerTypeCode:
      type: string
      enum:
        - ADT
        - CHD
        - INF
        - CTC
      description: >
        Passenger type. ADT, CHD and INF map to HHR codes 1, 2 and 3. CTC marks
        the required contact passenger.
      title: PassengerTypeCode
    PassengerTypeQuantity:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/PassengerTypeCode'
        quantity:
          type: integer
      title: PassengerTypeQuantity
    PersonName:
      type: object
      properties:
        surname:
          type: string
        givenName:
          type: array
          items:
            type: string
        middleName:
          type: array
          items:
            type: string
        namePrefix:
          type: array
          items:
            type: string
      title: PersonName
    Email:
      type: object
      properties:
        value:
          type: string
      title: Email
    Telephone:
      type: object
      properties:
        countryAccessCode:
          type: string
        phoneNumber:
          type: string
      title: Telephone
    TravelerDocumentDocType:
      type: string
      enum:
        - '2'
        - '5'
      description: Document type. 2 is Passport, 5 is National ID.
      title: TravelerDocumentDocType
    TravelerDocument:
      type: object
      properties:
        docID:
          type: string
        docType:
          $ref: '#/components/schemas/TravelerDocumentDocType'
          description: Document type. 2 is Passport, 5 is National ID.
        birthDate:
          type: string
        expireDate:
          type: string
        docHolderNationality:
          type: string
      title: TravelerDocument
    AirTravelerFlightSegmentRpHs:
      type: object
      properties:
        flightSegmentRPH:
          type: array
          items:
            type: string
      title: AirTravelerFlightSegmentRpHs
    AirTravelerTravelerRefNumber:
      type: object
      properties:
        rph:
          type: string
      title: AirTravelerTravelerRefNumber
    AirTraveler:
      type: object
      properties:
        passengerTypeCode:
          $ref: '#/components/schemas/PassengerTypeCode'
        gender:
          type: string
        personName:
          $ref: '#/components/schemas/PersonName'
        email:
          type: array
          items:
            $ref: '#/components/schemas/Email'
        telephone:
          type: array
          items:
            $ref: '#/components/schemas/Telephone'
        document:
          type: array
          items:
            $ref: '#/components/schemas/TravelerDocument'
        flightSegmentRPHs:
          $ref: '#/components/schemas/AirTravelerFlightSegmentRpHs'
        travelerRefNumber:
          $ref: '#/components/schemas/AirTravelerTravelerRefNumber'
      title: AirTraveler
    AirPriceRequestTravelerInfoSummaryAirTravelerAvailItems:
      type: object
      properties:
        passengerTypeQuantity:
          type: array
          items:
            $ref: '#/components/schemas/PassengerTypeQuantity'
        airTraveler:
          $ref: '#/components/schemas/AirTraveler'
      title: AirPriceRequestTravelerInfoSummaryAirTravelerAvailItems
    AirPriceRequestTravelerInfoSummary:
      type: object
      properties:
        pricingPref:
          type: array
          items:
            $ref: >-
              #/components/schemas/AirPriceRequestTravelerInfoSummaryPricingPrefItems
        airTravelerAvail:
          type: array
          items:
            $ref: >-
              #/components/schemas/AirPriceRequestTravelerInfoSummaryAirTravelerAvailItems
      description: Passenger counts plus one CTC contact passenger.
      title: AirPriceRequestTravelerInfoSummary
    AirPriceRequest:
      type: object
      properties:
        pos:
          $ref: '#/components/schemas/Pos'
        version:
          type: string
        airItinerary:
          $ref: '#/components/schemas/AirItinerary'
        travelerInfoSummary:
          $ref: '#/components/schemas/AirPriceRequestTravelerInfoSummary'
          description: Passenger counts plus one CTC contact passenger.
      required:
        - pos
        - version
        - airItinerary
        - travelerInfoSummary
      title: AirPriceRequest
    AirPriceResponseSuccess:
      type: object
      properties: {}
      title: AirPriceResponseSuccess
    AirPriceResponse:
      type: object
      properties:
        success:
          $ref: '#/components/schemas/AirPriceResponseSuccess'
        bookingReferenceID:
          type: object
          additionalProperties:
            description: Any type
          description: The W1 record locator for the held booking.
        pricedItineraries:
          type: object
          additionalProperties:
            description: Any type
          description: Priced itinerary carrying the quoteID and time limits.
        timeStamp:
          type: string
        version:
          type: number
          format: double
      title: AirPriceResponse

```

## Examples



**Request**

```json
{
  "pos": {
    "source": [
      {
        "isocurrency": "SAR",
        "requestorID": {
          "id": "AGENT001",
          "name": "Sample Travel",
          "type": "5"
        },
        "bookingChannel": {
          "type": "OTA"
        }
      }
    ]
  },
  "version": "2.001",
  "airItinerary": {
    "originDestinationOptions": {
      "originDestinationOption": [
        {
          "flightSegment": [
            {
              "rph": "1",
              "status": "30",
              "flightNumber": "0141",
              "fareBasisCode": "ECOUMINOW",
              "departureAirport": {
                "locationCode": "JXD"
              },
              "arrivalAirport": {
                "locationCode": "MKX"
              },
              "departureDateTime": "2026-05-20T17:21:00.000+03:00",
              "arrivalDateTime": "2026-05-20T17:55:00.000+03:00",
              "marketingAirline": {
                "code": "HHR"
              },
              "operatingAirline": {
                "code": "HHR",
                "flightNumber": "0141"
              },
              "resBookDesigCode": "Y"
            }
          ]
        }
      ]
    }
  },
  "travelerInfoSummary": {
    "pricingPref": [
      {
        "qualifier": "4"
      }
    ],
    "airTravelerAvail": [
      {
        "passengerTypeQuantity": [
          {
            "code": "ADT",
            "quantity": 2
          },
          {
            "code": "CHD",
            "quantity": 1
          },
          {
            "code": "INF",
            "quantity": 0
          }
        ]
      },
      {
        "airTraveler": {
          "passengerTypeCode": "CTC",
          "personName": {
            "surname": "TESTER",
            "givenName": [
              "TEST"
            ]
          },
          "email": [
            {
              "value": "group-contact@example.com"
            }
          ]
        }
      }
    ]
  }
}
```

**Response**

```json
{
  "success": {},
  "bookingReferenceID": {
    "companyName": {
      "code": "W1"
    },
    "id": "N6G2NW",
    "type": "14"
  },
  "pricedItineraries": {
    "pricedItinerary": [
      {
        "airItineraryPricingInfo": {
          "fareInfos": {
            "fareInfo": [
              {
                "ruleInfo": {
                  "tpaextensions": {
                    "confirmationTimeLimit": "2026-05-17T10:49:00Z",
                    "updateTravellersTimeLimit": "2026-05-17T10:20:00Z"
                  }
                }
              }
            ]
          },
          "quoteID": "N6G2NW"
        }
      }
    ]
  },
  "timeStamp": "2026-05-01T09:25:41.117Z",
  "version": 2.001
}
```

**SDK Code**

```python
import requests

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

payload = {
    "pos": { "source": [
            {
                "isocurrency": "SAR",
                "requestorID": {
                    "id": "AGENT001",
                    "name": "Sample Travel",
                    "type": "5"
                },
                "bookingChannel": { "type": "OTA" }
            }
        ] },
    "version": "2.001",
    "airItinerary": { "originDestinationOptions": { "originDestinationOption": [{ "flightSegment": [
                        {
                            "rph": "1",
                            "status": "30",
                            "flightNumber": "0141",
                            "fareBasisCode": "ECOUMINOW",
                            "departureAirport": { "locationCode": "JXD" },
                            "arrivalAirport": { "locationCode": "MKX" },
                            "departureDateTime": "2026-05-20T17:21:00.000+03:00",
                            "arrivalDateTime": "2026-05-20T17:55:00.000+03:00",
                            "marketingAirline": { "code": "HHR" },
                            "operatingAirline": {
                                "code": "HHR",
                                "flightNumber": "0141"
                            },
                            "resBookDesigCode": "Y"
                        }
                    ] }] } },
    "travelerInfoSummary": {
        "pricingPref": [{ "qualifier": "4" }],
        "airTravelerAvail": [{ "passengerTypeQuantity": [
                    {
                        "code": "ADT",
                        "quantity": 2
                    },
                    {
                        "code": "CHD",
                        "quantity": 1
                    },
                    {
                        "code": "INF",
                        "quantity": 0
                    }
                ] }, { "airTraveler": {
                    "passengerTypeCode": "CTC",
                    "personName": {
                        "surname": "TESTER",
                        "givenName": ["TEST"]
                    },
                    "email": [{ "value": "group-contact@example.com" }]
                } }]
    }
}
headers = {
    "local-name": "OTA_AirPriceRQ",
    "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_AirPriceRQ';
const options = {
  method: 'POST',
  headers: {
    'local-name': 'OTA_AirPriceRQ',
    '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","airItinerary":{"originDestinationOptions":{"originDestinationOption":[{"flightSegment":[{"rph":"1","status":"30","flightNumber":"0141","fareBasisCode":"ECOUMINOW","departureAirport":{"locationCode":"JXD"},"arrivalAirport":{"locationCode":"MKX"},"departureDateTime":"2026-05-20T17:21:00.000+03:00","arrivalDateTime":"2026-05-20T17:55:00.000+03:00","marketingAirline":{"code":"HHR"},"operatingAirline":{"code":"HHR","flightNumber":"0141"},"resBookDesigCode":"Y"}]}]}},"travelerInfoSummary":{"pricingPref":[{"qualifier":"4"}],"airTravelerAvail":[{"passengerTypeQuantity":[{"code":"ADT","quantity":2},{"code":"CHD","quantity":1},{"code":"INF","quantity":0}]},{"airTraveler":{"passengerTypeCode":"CTC","personName":{"surname":"TESTER","givenName":["TEST"]},"email":[{"value":"group-contact@example.com"}]}}]}}'
};

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_AirPriceRQ"

	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  \"airItinerary\": {\n    \"originDestinationOptions\": {\n      \"originDestinationOption\": [\n        {\n          \"flightSegment\": [\n            {\n              \"rph\": \"1\",\n              \"status\": \"30\",\n              \"flightNumber\": \"0141\",\n              \"fareBasisCode\": \"ECOUMINOW\",\n              \"departureAirport\": {\n                \"locationCode\": \"JXD\"\n              },\n              \"arrivalAirport\": {\n                \"locationCode\": \"MKX\"\n              },\n              \"departureDateTime\": \"2026-05-20T17:21:00.000+03:00\",\n              \"arrivalDateTime\": \"2026-05-20T17:55:00.000+03:00\",\n              \"marketingAirline\": {\n                \"code\": \"HHR\"\n              },\n              \"operatingAirline\": {\n                \"code\": \"HHR\",\n                \"flightNumber\": \"0141\"\n              },\n              \"resBookDesigCode\": \"Y\"\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"travelerInfoSummary\": {\n    \"pricingPref\": [\n      {\n        \"qualifier\": \"4\"\n      }\n    ],\n    \"airTravelerAvail\": [\n      {\n        \"passengerTypeQuantity\": [\n          {\n            \"code\": \"ADT\",\n            \"quantity\": 2\n          },\n          {\n            \"code\": \"CHD\",\n            \"quantity\": 1\n          },\n          {\n            \"code\": \"INF\",\n            \"quantity\": 0\n          }\n        ]\n      },\n      {\n        \"airTraveler\": {\n          \"passengerTypeCode\": \"CTC\",\n          \"personName\": {\n            \"surname\": \"TESTER\",\n            \"givenName\": [\n              \"TEST\"\n            ]\n          },\n          \"email\": [\n            {\n              \"value\": \"group-contact@example.com\"\n            }\n          ]\n        }\n      }\n    ]\n  }\n}")

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

	req.Header.Add("local-name", "OTA_AirPriceRQ")
	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_AirPriceRQ")

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

request = Net::HTTP::Post.new(url)
request["local-name"] = 'OTA_AirPriceRQ'
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  \"airItinerary\": {\n    \"originDestinationOptions\": {\n      \"originDestinationOption\": [\n        {\n          \"flightSegment\": [\n            {\n              \"rph\": \"1\",\n              \"status\": \"30\",\n              \"flightNumber\": \"0141\",\n              \"fareBasisCode\": \"ECOUMINOW\",\n              \"departureAirport\": {\n                \"locationCode\": \"JXD\"\n              },\n              \"arrivalAirport\": {\n                \"locationCode\": \"MKX\"\n              },\n              \"departureDateTime\": \"2026-05-20T17:21:00.000+03:00\",\n              \"arrivalDateTime\": \"2026-05-20T17:55:00.000+03:00\",\n              \"marketingAirline\": {\n                \"code\": \"HHR\"\n              },\n              \"operatingAirline\": {\n                \"code\": \"HHR\",\n                \"flightNumber\": \"0141\"\n              },\n              \"resBookDesigCode\": \"Y\"\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"travelerInfoSummary\": {\n    \"pricingPref\": [\n      {\n        \"qualifier\": \"4\"\n      }\n    ],\n    \"airTravelerAvail\": [\n      {\n        \"passengerTypeQuantity\": [\n          {\n            \"code\": \"ADT\",\n            \"quantity\": 2\n          },\n          {\n            \"code\": \"CHD\",\n            \"quantity\": 1\n          },\n          {\n            \"code\": \"INF\",\n            \"quantity\": 0\n          }\n        ]\n      },\n      {\n        \"airTraveler\": {\n          \"passengerTypeCode\": \"CTC\",\n          \"personName\": {\n            \"surname\": \"TESTER\",\n            \"givenName\": [\n              \"TEST\"\n            ]\n          },\n          \"email\": [\n            {\n              \"value\": \"group-contact@example.com\"\n            }\n          ]\n        }\n      }\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_AirPriceRQ")
  .header("local-name", "OTA_AirPriceRQ")
  .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  \"airItinerary\": {\n    \"originDestinationOptions\": {\n      \"originDestinationOption\": [\n        {\n          \"flightSegment\": [\n            {\n              \"rph\": \"1\",\n              \"status\": \"30\",\n              \"flightNumber\": \"0141\",\n              \"fareBasisCode\": \"ECOUMINOW\",\n              \"departureAirport\": {\n                \"locationCode\": \"JXD\"\n              },\n              \"arrivalAirport\": {\n                \"locationCode\": \"MKX\"\n              },\n              \"departureDateTime\": \"2026-05-20T17:21:00.000+03:00\",\n              \"arrivalDateTime\": \"2026-05-20T17:55:00.000+03:00\",\n              \"marketingAirline\": {\n                \"code\": \"HHR\"\n              },\n              \"operatingAirline\": {\n                \"code\": \"HHR\",\n                \"flightNumber\": \"0141\"\n              },\n              \"resBookDesigCode\": \"Y\"\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"travelerInfoSummary\": {\n    \"pricingPref\": [\n      {\n        \"qualifier\": \"4\"\n      }\n    ],\n    \"airTravelerAvail\": [\n      {\n        \"passengerTypeQuantity\": [\n          {\n            \"code\": \"ADT\",\n            \"quantity\": 2\n          },\n          {\n            \"code\": \"CHD\",\n            \"quantity\": 1\n          },\n          {\n            \"code\": \"INF\",\n            \"quantity\": 0\n          }\n        ]\n      },\n      {\n        \"airTraveler\": {\n          \"passengerTypeCode\": \"CTC\",\n          \"personName\": {\n            \"surname\": \"TESTER\",\n            \"givenName\": [\n              \"TEST\"\n            ]\n          },\n          \"email\": [\n            {\n              \"value\": \"group-contact@example.com\"\n            }\n          ]\n        }\n      }\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_AirPriceRQ', [
  'body' => '{
  "pos": {
    "source": [
      {
        "isocurrency": "SAR",
        "requestorID": {
          "id": "AGENT001",
          "name": "Sample Travel",
          "type": "5"
        },
        "bookingChannel": {
          "type": "OTA"
        }
      }
    ]
  },
  "version": "2.001",
  "airItinerary": {
    "originDestinationOptions": {
      "originDestinationOption": [
        {
          "flightSegment": [
            {
              "rph": "1",
              "status": "30",
              "flightNumber": "0141",
              "fareBasisCode": "ECOUMINOW",
              "departureAirport": {
                "locationCode": "JXD"
              },
              "arrivalAirport": {
                "locationCode": "MKX"
              },
              "departureDateTime": "2026-05-20T17:21:00.000+03:00",
              "arrivalDateTime": "2026-05-20T17:55:00.000+03:00",
              "marketingAirline": {
                "code": "HHR"
              },
              "operatingAirline": {
                "code": "HHR",
                "flightNumber": "0141"
              },
              "resBookDesigCode": "Y"
            }
          ]
        }
      ]
    }
  },
  "travelerInfoSummary": {
    "pricingPref": [
      {
        "qualifier": "4"
      }
    ],
    "airTravelerAvail": [
      {
        "passengerTypeQuantity": [
          {
            "code": "ADT",
            "quantity": 2
          },
          {
            "code": "CHD",
            "quantity": 1
          },
          {
            "code": "INF",
            "quantity": 0
          }
        ]
      },
      {
        "airTraveler": {
          "passengerTypeCode": "CTC",
          "personName": {
            "surname": "TESTER",
            "givenName": [
              "TEST"
            ]
          },
          "email": [
            {
              "value": "group-contact@example.com"
            }
          ]
        }
      }
    ]
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'local-name' => 'OTA_AirPriceRQ',
    '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_AirPriceRQ");
var request = new RestRequest(Method.POST);
request.AddHeader("local-name", "OTA_AirPriceRQ");
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  \"airItinerary\": {\n    \"originDestinationOptions\": {\n      \"originDestinationOption\": [\n        {\n          \"flightSegment\": [\n            {\n              \"rph\": \"1\",\n              \"status\": \"30\",\n              \"flightNumber\": \"0141\",\n              \"fareBasisCode\": \"ECOUMINOW\",\n              \"departureAirport\": {\n                \"locationCode\": \"JXD\"\n              },\n              \"arrivalAirport\": {\n                \"locationCode\": \"MKX\"\n              },\n              \"departureDateTime\": \"2026-05-20T17:21:00.000+03:00\",\n              \"arrivalDateTime\": \"2026-05-20T17:55:00.000+03:00\",\n              \"marketingAirline\": {\n                \"code\": \"HHR\"\n              },\n              \"operatingAirline\": {\n                \"code\": \"HHR\",\n                \"flightNumber\": \"0141\"\n              },\n              \"resBookDesigCode\": \"Y\"\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"travelerInfoSummary\": {\n    \"pricingPref\": [\n      {\n        \"qualifier\": \"4\"\n      }\n    ],\n    \"airTravelerAvail\": [\n      {\n        \"passengerTypeQuantity\": [\n          {\n            \"code\": \"ADT\",\n            \"quantity\": 2\n          },\n          {\n            \"code\": \"CHD\",\n            \"quantity\": 1\n          },\n          {\n            \"code\": \"INF\",\n            \"quantity\": 0\n          }\n        ]\n      },\n      {\n        \"airTraveler\": {\n          \"passengerTypeCode\": \"CTC\",\n          \"personName\": {\n            \"surname\": \"TESTER\",\n            \"givenName\": [\n              \"TEST\"\n            ]\n          },\n          \"email\": [\n            {\n              \"value\": \"group-contact@example.com\"\n            }\n          ]\n        }\n      }\n    ]\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "local-name": "OTA_AirPriceRQ",
  "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",
  "airItinerary": ["originDestinationOptions": ["originDestinationOption": [["flightSegment": [
            [
              "rph": "1",
              "status": "30",
              "flightNumber": "0141",
              "fareBasisCode": "ECOUMINOW",
              "departureAirport": ["locationCode": "JXD"],
              "arrivalAirport": ["locationCode": "MKX"],
              "departureDateTime": "2026-05-20T17:21:00.000+03:00",
              "arrivalDateTime": "2026-05-20T17:55:00.000+03:00",
              "marketingAirline": ["code": "HHR"],
              "operatingAirline": [
                "code": "HHR",
                "flightNumber": "0141"
              ],
              "resBookDesigCode": "Y"
            ]
          ]]]]],
  "travelerInfoSummary": [
    "pricingPref": [["qualifier": "4"]],
    "airTravelerAvail": [["passengerTypeQuantity": [
          [
            "code": "ADT",
            "quantity": 2
          ],
          [
            "code": "CHD",
            "quantity": 1
          ],
          [
            "code": "INF",
            "quantity": 0
          ]
        ]], ["airTraveler": [
          "passengerTypeCode": "CTC",
          "personName": [
            "surname": "TESTER",
            "givenName": ["TEST"]
          ],
          "email": [["value": "group-contact@example.com"]]
        ]]]
  ]
] 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_AirPriceRQ")! 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()
```