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

# Add Booking Item

> Add an item to an existing booking.

## Method

`POST` `/v1/bookings/:id/items`

## Path Parameters

<ParamField path="id" type="string" required>Booking ID</ParamField>

## Body Parameters

<ParamField path="type" type="string" required>Item type (e.g., `activity`, `room`, `addon`)</ParamField>
<ParamField path="inventoryItemId" type="uuid" required>Inventory item ID</ParamField>
<ParamField path="supplierId" type="uuid">Supplier ID</ParamField>
<ParamField path="departureId" type="uuid" required>Departure ID</ParamField>
<ParamField path="startAt" type="date">Start date/time</ParamField>
<ParamField path="endAt" type="date">End date/time</ParamField>
<ParamField path="durationMinutes" type="number">Duration in minutes</ParamField>
<ParamField path="quantity" type="number">Quantity (defaults to <code>1</code>)</ParamField>
<ParamField path="paxAdults" type="number">Adults for pricing context (defaults to booking adults)</ParamField>
<ParamField path="paxChildren" type="number">Children for pricing context (defaults to booking children)</ParamField>
<ParamField path="paxInfants" type="number">Infants for pricing context (defaults to booking infants)</ParamField>
<ParamField path="paxCount" type="number">Override passengers count for this item</ParamField>
<ParamField path="details" type="object">Provider-specific details</ParamField>

<ResponseField path="details" type="object">
  <Expandable title="examples" defaultOpen>
    <ResponseField name="activity" type="object">
      <Expandable title="example">
        ```json theme={null}
        {
          "meeting_point": "Lobby A",
          "language": "en",
          "guide_name": "Alice",
          "notes": "Wheelchair access required",
          "vendor_payload": { "ref": "EXT-12345" }
        }
        ```
      </Expandable>
    </ResponseField>

    <ResponseField name="room" type="object">
      <Expandable title="example">
        ```json theme={null}
        {
          "board": "half_board",
          "occupants": [
            { "type": "adult", "age": 34 },
            { "type": "child", "age": 7 }
          ],
          "rate_key": "HOTEL-ABC-2025-06-15",
          "cancellation_policy": "non_refundable"
        }
        ```
      </Expandable>
    </ResponseField>

    <ResponseField name="addon" type="object">
      <Expandable title="example">
        ```json theme={null}
        {
          "sku": "TRSF-ECON",
          "variant": "one_way",
          "attributes": { "vehicle": "sedan" }
        }
        ```
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<Note>
  The <code>details</code> object is integration-specific. Use these examples as guidance; concrete
  keys may differ by supplier. Choice-style customizations (e.g., groups/options/timeslots) are
  persisted via <code>POST /v1/bookings/:bookingId/items/:itemId/options</code>. Pricing is always
  calculated on the server; the response includes the computed unit and total amounts.
</Note>

<ParamField path="status" type="string">Item status</ParamField>
<ParamField path="supplierReference" type="string">Supplier reference</ParamField>
<ParamField path="voucherCode" type="string">Voucher code</ParamField>
<ParamField path="notes" type="string">Notes</ParamField>

## Headers

<ParamField header="Authorization" type="string" required>Bearer token (e.g. <code>Authorization: Bearer YOUR\_API\_KEY</code>)</ParamField>
<ParamField header="content-type" type="string">application/json</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api.voyantcloud.com/v1/bookings/bkg_456def/items \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "content-type: application/json" \
    -d '{
    "type": "activity",
    "inventoryItemId": "2c5f3f8e-1111-2222-3333-abcdefabcdef",
    "departureId": "50d1c6aa-aaaa-bbbb-cccc-111122223333",
    "quantity": 1,
    "paxAdults": 2
  }'
  ```

  ```javascript Node.js theme={null}
  await fetch("https://api.voyantcloud.com/v1/bookings/bkg_456def/items", {
    method: "POST",
    headers: { Authorization: `Bearer ${process.env.VOYANT_API_KEY}`, "content-type": "application/json" },
    body: JSON.stringify({
      type: "activity",
      inventoryItemId: "2c5f3f8e-1111-2222-3333-abcdefabcdef",
      departureId: "50d1c6aa-aaaa-bbbb-cccc-111122223333",
      quantity: 1,
    }),
  })
  ```

  ```python Python theme={null}
  import os, requests
  requests.post(
    "https://api.voyantcloud.com/v1/bookings/bkg_456def/items",
    headers={"Authorization": f"Bearer {os.environ['VOYANT_API_KEY']}", "content-type": "application/json"},
    json={
      "type": "activity",
      "inventoryItemId": "2c5f3f8e-1111-2222-3333-abcdefabcdef",
      "departureId": "50d1c6aa-aaaa-bbbb-cccc-111122223333",
      "quantity": 1,
    },
  )
  ```
</RequestExample>

<ResponseExample>
  ```json 201 Created theme={null}
  {
    "id": "itm_123",
    "type": "activity",
    "status": "pending"
  }
  ```
</ResponseExample>
