> ## Documentation Index
> Fetch the complete documentation index at: https://docs.axisdata.net/llms.txt
> Use this file to discover all available pages before exploring further.

# OTA_TourActivityBookRQ

The OTA\_TourActivityBookRQ (Excursion Book Request) is used to **quote** and **commit** tour & activity bookings.

<Tip>Already know OTA messages? Jump straight into testing.</Tip>

<Card title="OTA_TourActivityBookRQ API call" icon="ticket" href="/api-reference/endpoint/excursion/book" arrow="true" horizontal>
  Skip & Hit the Playground.
</Card>

## Purpose

This message is used to:

* Request a quote (availability + total price) for a specific activity using `ResStatus="Quote"`.
* Confirm a booking using `ResStatus="Commit"` (binding if accepted).

## Structure – Root Element

```xml theme={null}
<OTA_TourActivityBookRQ>
```

**Key Attributes:**

* `Version`: Specification version (e.g., "2011.2").
* `ResStatus`: Booking intent. Allowed values: `Quote` | `Commit`.
* `xmlns`: "[http://www.opentravel.org/OTA/2003/05](http://www.opentravel.org/OTA/2003/05)".

## Structure – Core Elements

### POS

Identifies the requesting party and contains credentials.

```xml theme={null}
<POS>
  <Source>
    <RequestorID ID="TEST" ID_Context="AxisData" Type="22" Instance="PriceBreakdown"/>
  </Source>
  <Source>
    <RequestorID Type="88" ID="TEST" MessagePassword="testpass"/>
  </Source>
</POS>
```

### BookingInfo

Container for the service, participants, schedule, pricing, and optional extras.

#### BasicInfo

Provide the **full service identifier** returned by the search.

```xml theme={null}
<BasicInfo TourActivityID="XESPMI5L4U" SupplierProductCode="ST" SupplierServiceCode="TRF"/>
```

#### ParticipantInfo

Each traveler is described with a `Category` and `Individual` node.

* `Category/@QualifierInfo`: Age Qualifying Code (AQC) per OTA standard.
* `Individual/@Age`: **Age at time of service**.
* `Individual/@ParticipantID`: Unique within request.

```xml theme={null}
<ParticipantInfo>
  <Category QualifierInfo="10"/>
  <Individual Age="36" ParticipantID="1">
    <GivenName>Bender</GivenName>
    <NamePrefix>Mr</NamePrefix>
    <Surname>Bending</Surname>
  </Individual>
</ParticipantInfo>
<ParticipantInfo>
  <Category QualifierInfo="10"/>
  <Individual Age="32" ParticipantID="2">
    <GivenName>Angeline</GivenName>
    <NamePrefix>Ms</NamePrefix>
    <Surname>Bending</Surname>
  </Individual>
</ParticipantInfo>
```

#### Schedule

Use a **single calendar date** for the service. Times may be included.

```xml theme={null}
<Schedule Start="2026-07-17T09:30:00" End="2026-07-17T17:30:00"/>
```

#### PickupDropoff

Include pickup time and location if the activity requires it (e.g. TRF).

```xml theme={null}
<PickupDropoff DateTime="2026-07-17T08:25:00" LocationName="AESPMI5L46" PickupInd="true"/>
```

#### Pricing

Send back the total price from the detailed search for consistency.

```xml theme={null}
<Pricing>
  <Summary Amount="130.00" CurrencyCode="EUR"/>
</Pricing>
```

#### Extras

Add optional extras returned by search. Do **not** include compulsory extras (already priced).

```xml theme={null}
<Extra SupplierCode="EXFOOD" Description="Extra Food" quantity="1"/>
```

### TPA\_Extensions

Partner references are required for idempotency and voucher printing.

```xml theme={null}
<TPA_Extensions>
  <UniqueID Type="36" ID="123456789" ID_Context="Client"/>
  <UniqueID Type="37" ID="123456789_1" ID_Context="Client"/>
</TPA_Extensions>
```

## Complete Examples

<CodeGroup>
  ```xml Book Activity expandable theme={null}
  <OTA_TourActivityBookRQ Version="2011.2" ResStatus="Quote" xmlns="http://www.opentravel.org/OTA/2003/05">
    <POS>
      <Source>
        <RequestorID ID="TEST" ID_Context="AxisData" Type="22" Instance="PriceBreakdown"/>
      </Source>
      <Source>
        <RequestorID Type="88" ID="TEST" MessagePassword="testpass"/>
      </Source>
    </POS>
    <BookingInfo>
      <BasicInfo TourActivityID="XESPMI5L4U" SupplierProductCode="ST" SupplierServiceCode="TRF"/>
      <ParticipantInfo>
        <Category QualifierInfo="10"/>
        <Individual Age="36" ParticipantID="1">
          <GivenName>Bender</GivenName>
          <NamePrefix>Mr</NamePrefix>
          <Surname>Bending</Surname>
        </Individual>
      </ParticipantInfo>
      <ParticipantInfo>
        <Category QualifierInfo="10"/>
        <Individual Age="32" ParticipantID="2">
          <GivenName>Angeline</GivenName>
          <NamePrefix>Ms</NamePrefix>
          <Surname>Bending</Surname>
        </Individual>
      </ParticipantInfo>
      <Schedule Start="2026-07-17T09:30:00" End="2026-07-17T17:30:00"/>
      <PickupDropoff DateTime="2026-07-17T08:25:00" LocationName="AESPMI5L46" PickupInd="true"/>
      <Pricing>
        <Summary Amount="130.00" CurrencyCode="EUR"/>
      </Pricing>
      <Extra SupplierCode="EXFOOD" Description="Extra Food" quantity="1"/>
    </BookingInfo>
    <TPA_Extensions>
      <UniqueID Type="36" ID="123456789" ID_Context="Client"/>
      <UniqueID Type="37" ID="123456789_1" ID_Context="Client"/>
    </TPA_Extensions>
  </OTA_TourActivityBookRQ>
  ```
</CodeGroup>

## Best Practices

1. Always include partner references in `TPA_Extensions` to prevent duplicate bookings.
2. Use ages **at service date** in `Individual/@Age`.
3. Keep `Start` and `End` within the same calendar day for day activities.
4. Echo back the returned price in `Pricing/Summary` for consistency checks.

## Playground

<Card title="OTA_TourActivityBookRQ API call" icon="ticket" href="/api-reference/endpoint/excursion/book" arrow="true" horizontal>
  Try our API playground in real time.
</Card>

<Tip>Use the desired request in the playground and receive responses from our test environment API!  </Tip>
