Skip to main content

Documentation Index

Fetch the complete documentation index at: https://sailia-mintlify-waitlist-email-1778164078.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

The OTA API provides a standardized set of endpoints for online travel agency (OTA) partners to list activities, check availability, and create bookings in Sailia. Use these endpoints to build integrations that sell a Sailia operator’s activities on your own platform. All endpoints require an API key with OTA permissions. See authentication for details on passing your key.

Base path

All OTA endpoints are under:
/api/v2/ota/adventuro

List products

Retrieve all activities that are available in the operator’s shopfront.
GET /api/v2/ota/adventuro/products

Query parameters

ParameterTypeRequiredDescription
namestringNoFilter products by name (partial match)

Example request

curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  "https://api.sailia.com/api/v2/ota/adventuro/products?name=Sailing"

Response

Returns a 200 response with a list of products.

Resolve a product

Look up a specific product by its ID or name.
GET /api/v2/ota/adventuro/resolve-product

Query parameters

ParameterTypeRequiredDescription
IDintegerNoThe numeric product ID
NamestringNoThe product name to look up
Provide either ID or Name, not both.

Example request

curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  "https://api.sailia.com/api/v2/ota/adventuro/resolve-product?Name=Adventure%20Tour"

Responses

StatusDescription
200Product details returned
400Invalid request — provide either ID or Name
404Product not found

Get available dates

Retrieve dates with available capacity for a specific activity within a date range.
GET /api/v2/ota/adventuro/availability/{ActivityID}/dates

Path parameters

ParameterTypeDescription
ActivityIDstringThe UUID of the activity (e.g. s_abc123xyz456)

Query parameters

ParameterTypeRequiredDescription
StartDatestringYesStart of the date range in YYYY-MM-DD format
EndDatestringYesEnd of the date range in YYYY-MM-DD format

Example request

curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  "https://api.sailia.com/api/v2/ota/adventuro/availability/s_abc123xyz456/dates?StartDate=2026-06-01&EndDate=2026-06-30"

Responses

StatusDescription
200List of available dates
400Invalid ActivityID
422Missing StartDate or EndDate

Get available timeslots

Retrieve timeslots with availability for a specific activity on a given date.
GET /api/v2/ota/adventuro/availability/{ActivityID}/timeslots

Path parameters

ParameterTypeDescription
ActivityIDstringThe UUID of the activity (e.g. s_abc123xyz456)

Query parameters

ParameterTypeRequiredDescription
DatestringYesThe date to check in YYYY-MM-DD format

Example request

curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  "https://api.sailia.com/api/v2/ota/adventuro/availability/s_abc123xyz456/timeslots?Date=2026-06-15"

Responses

StatusDescription
200List of available timeslots
400Invalid ActivityID
422Missing Date parameter

Get waiver questions

Retrieve the waiver questions associated with an activity. Use this to display required forms to customers before they complete a booking. Questions can be marked as required — your integration should validate that all required fields (including file uploads) are completed before submitting the booking.
GET /api/v2/ota/adventuro/questions/{ActivityID}

Responses

StatusDescription
200List of available timeslots
400Invalid ActivityID
422Missing Date parameter

Get waiver questions

Retrieve the waiver questions associated with an activity. Use this to display required forms to customers before they complete a booking.
GET /api/v2/ota/core/questions/{ActivityID}

Path parameters

ParameterTypeDescription
ActivityIDstringThe UUID of the activity (e.g. s_abc123xyz456)

Example request

curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  "https://api.sailia.com/api/v2/ota/adventuro/questions/s_abc123xyz456"

Responses

StatusDescription
200List of waiver questions
400Invalid ActivityID

Create a booking

Submit a new booking for an activity.
POST /api/v2/ota/adventuro/booking
Send a JSON request body with the booking details including the activity, date, timeslot, number of participants, and customer information.

Example request

curl -X POST \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ActivityID": "s_abc123xyz456",
    "Date": "2026-06-15",
    "Time": "10:00",
    "Participants": 4,
    "Customer": {
      "FirstName": "Jane",
      "LastName": "Smith",
      "Email": "jane.smith@example.com",
      "Phone": "+447700900000"
    }
  }' \
  "https://api.sailia.com/api/v2/ota/adventuro/booking"

Responses

StatusDescription
201Booking created — returns a booking reference
409Insufficient capacity for the requested timeslot
500Internal server error
Bookings created through the OTA API are recorded with the OTA partner’s payment reference. The operator sees these bookings in their bookings dashboard alongside online and POS bookings.

Typical integration flow

A standard OTA integration follows these steps:
1

Discover products

Call list products to retrieve the operator’s activities. Cache results and refresh periodically.
2

Check availability

When a customer selects an activity, call get available dates to show bookable dates, then get available timeslots for the chosen date.
3

Collect waiver responses

Call get waiver questions and display the required fields to the customer before checkout.
4

Create the booking

Submit the reservation with create a booking. Handle a 409 response by prompting the customer to choose a different timeslot.

Error handling

All error responses follow the RFC 7807 problem detail format. See error format for details.
StatusCause
400Invalid path parameter — check the ActivityID format
404Product not found
409Insufficient capacity for the requested booking
422Missing or invalid query parameters

API introduction

Authentication, base URL, and error format.

Adventuro integration

Pre-built OTA integration with Adventuro marketplace.