# Endpoints & Capabilities

OCTO defines several [Core Endpoints](#octo-api-core-endpoints) that apply to most use cases and are **required** for the implementation.&#x20;

Since not all use cases can be fulfilled with just the core endpoints, OCTO provides a concept of [Capabilities](#capabilities), allowing for enhancement to the integrations based on specific needs. Capabilities are **optional** for implementation and to enhance integration by, for example, adding additional information about pricing, content, pickups, etc. &#x20;

## OCTO API Core Endpoints&#x20;

### [Supplier](#suppliers)

<table data-full-width="false"><thead><tr><th width="215">Name</th><th width="102">Method </th><th width="428">Description</th></tr></thead><tbody><tr><td><a href="/pages/kSwPw2aS5dPcZH4tcgYo">Get Supplier</a></td><td><mark style="color:blue;"><code>GET</code></mark></td><td>Returns a single Supplier and associated details for a given Supplier ID.</td></tr></tbody></table>

### [Products](#products)

<table data-header-hidden><thead><tr><th width="217.33333333333331">Name</th><th width="98">Method</th><th>Description</th></tr></thead><tbody><tr><td><a href="/pages/YYk287KcjoL5Y9f4gxHH#get-product-list">Get Product List</a></td><td><mark style="color:blue;"><code>GET</code></mark></td><td>Returns a list of Products and associated details. </td></tr><tr><td><a href="/pages/YYk287KcjoL5Y9f4gxHH#get-product">Get Product</a></td><td><mark style="color:blue;"><code>GET</code></mark></td><td>Returns a single Product and associated details for a given Product ID. </td></tr></tbody></table>

### [Availability](#availability)

<table data-header-hidden><thead><tr><th width="221.33333333333331">Name</th><th width="92">Method</th><th>Description</th></tr></thead><tbody><tr><td><a href="/pages/YGhhlqLzirsUfsgugSS2#availability-calendar">Availablity Calendar</a></td><td><mark style="color:green;"><code>POST</code></mark></td><td>Returns availability for a given Product &#x26; Option as a single object per day. Optimized to be queried for large date ranges and to populate an availability calendar.  </td></tr><tr><td><a href="/pages/YGhhlqLzirsUfsgugSS2#availability-check">Availability Check</a></td><td><mark style="color:green;"><code>POST</code></mark></td><td>Returns availability for a given Product &#x26; Option as a single object per start time (or day). You have to perform this step to retrieve an <code>availabilityId</code> required for <a href="/pages/-M958SRccFm9oBgWTAHY">Bookings</a>. </td></tr></tbody></table>

### [Bookings](#bookings)

<table data-header-hidden><thead><tr><th width="220.33333333333331">Name</th><th width="102">Method</th><th>Description</th></tr></thead><tbody><tr><td><a href="/pages/lnoP1fBP544WzZQH7CuB#create-booking">Create Booking</a></td><td><mark style="color:green;"><code>POST</code></mark></td><td>Creates a booking that reserves the availability (e.g. while you collect payment and contact information from the customer) for a given <code>availabilityId</code>. The booking will remain with the status <code>ON_HOLD</code> until <a href="/pages/-M958SRccFm9oBgWTAHY#booking-confirmation">Booking Confirmation</a> or when the reservation hold expires.</td></tr><tr><td><a href="/pages/lnoP1fBP544WzZQH7CuB#confirm-booking">Confirm Booking</a></td><td><mark style="color:green;"><code>POST</code></mark></td><td>Confirms previously placed <a href="/pages/-M958SRccFm9oBgWTAHY#booking-reservation">Booking Reservation</a>, finalizing the booking and making it ready to be used.</td></tr><tr><td><a href="/pages/lnoP1fBP544WzZQH7CuB#update-booking">Update Booking</a></td><td><mark style="color:orange;"><code>PATCH</code></mark></td><td>Updates/changes your booking before and after it has been confirmed as long as it hasn't yet been redeemed or within the cancellation cutoff window.</td></tr><tr><td><a href="/pages/lnoP1fBP544WzZQH7CuB#cancel-booking">Cancel Booking</a></td><td><mark style="color:green;"><code>POST</code></mark></td><td>Cancels your booking. You can only cancel a booking if <code>booking.cancellable</code> is <code>TRUE</code>, and is within the booking cancellation cut-off window.</td></tr><tr><td><a href="/pages/lnoP1fBP544WzZQH7CuB#extend-pending-booking-expiration">Extend Pending Booking Expiration</a></td><td><mark style="color:green;"><code>POST</code></mark></td><td>Extends the <a href="/pages/-M958SRccFm9oBgWTAHY#booking-reservation">Booking Reservation</a> availability hold if the booking status is <code>ON_HOLD</code>. </td></tr><tr><td><a href="/pages/lnoP1fBP544WzZQH7CuB#get-booking">Get Booking</a></td><td><mark style="color:blue;"><code>GET</code></mark></td><td>Returns the status and details of your existing booking.</td></tr><tr><td><a href="/pages/lnoP1fBP544WzZQH7CuB#get-booking-list">Get Booking List</a></td><td><mark style="color:blue;"><code>GET</code></mark></td><td>Returns the list of the bookings you made for the given filters.</td></tr></tbody></table>

## Capabilities

<table data-full-width="true"><thead><tr><th width="273.3046875" data-type="content-ref">Name</th><th width="166">ID</th><th>Description</th></tr></thead><tbody><tr><td><a href="/pages/EmfNj3TzxwtSWfk7HeaN">/pages/EmfNj3TzxwtSWfk7HeaN</a></td><td><code>pricing</code></td><td>Adds pricing to most endpoints, giving you advanced static and dynamic pricing capabilities. </td></tr><tr><td><a href="/pages/7IEnbZjoyGyIkX8VJjzp">/pages/7IEnbZjoyGyIkX8VJjzp</a></td><td><code>notifications</code></td><td>Allows to subscribe to be notified when something changes against products, availability or bookings. </td></tr><tr><td><a href="/pages/36PMd9QntPhostm7WXn3">/pages/36PMd9QntPhostm7WXn3</a></td><td><code>content</code></td><td>Extends the core product, option, and unit schemas to provide rich content and images. </td></tr><tr><td><a href="/pages/EmfNj3TzxwtSWfk7HeaN">/pages/EmfNj3TzxwtSWfk7HeaN</a></td><td><code>pickups</code></td><td>Adds structured pickup support, allowing predefined or customer-defined pickup locations, including pickup time windows.</td></tr><tr><td><a href="/pages/vBmF4wUkWjSDO4Mt0uAk">/pages/vBmF4wUkWjSDO4Mt0uAk</a></td><td><code>dropoffs</code></td><td>Adds structured dropoff support, allowing predefined or customer-defined end-of-tour return locations, including time-window details.</td></tr><tr><td><a href="/pages/Dzv3aXouwEGslD5oUKBG">/pages/Dzv3aXouwEGslD5oUKBG</a></td><td><code>promotions</code></td><td><em>🚨 In development, not reviewed or ratified.</em> <br><br>Adds promotional pricing to availability and bookings, exposing promotional offers and their details.</td></tr></tbody></table>

You control which capabilities you want to enable by using the `Octo-Capabilities` [header](/getting-started/headers.md). For example:

```http
GET /availability HTTP/1.1
Host: {host}
Authorization: Bearer {your_API_key}
Octo-Capabilities: octo/content, octo/offers
```

It's also possible to use the `_capabilities` query parameter if you're unable to use headers:

```http
GET /availability?_capabilities=octo/content,octo/pricing HTTP/1.1
Host: {host}
Authorization: Bearer {your_API_key}
```

You can list all the capabilities with a comma to separate each one.&#x20;


---

# Agent Instructions: 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:

```
GET https://docs.octo.travel/getting-started/endpoints-and-capabilities.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
