Documentation Index Fetch the complete documentation index at: https://sailia-mintlify-activity-passes-family-1776854733.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:
List products
Retrieve all activities that are available in the operator’s shopfront.
GET /api/v2/ota/adventuro/products
Query parameters
Parameter Type Required Description name string No Filter 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
Parameter Type Required Description ID integer No The numeric product ID Name string No The 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
Status Description 200 Product details returned 400 Invalid request — provide either ID or Name 404 Product 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
Parameter Type Description ActivityID string The UUID of the activity (e.g. s_abc123xyz456)
Query parameters
Parameter Type Required Description StartDate string Yes Start of the date range in YYYY-MM-DD format EndDate string Yes End 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
Status Description 200 List of available dates 400 Invalid ActivityID 422 Missing 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
Parameter Type Description ActivityID string The UUID of the activity (e.g. s_abc123xyz456)
Query parameters
Parameter Type Required Description Date string Yes The 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
Status Description 200 List of available timeslots 400 Invalid ActivityID 422 Missing 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
Status Description 200 List of available timeslots 400 Invalid ActivityID 422 Missing 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
Parameter Type Description ActivityID string The 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
Status Description 200 List of waiver questions 400 Invalid 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
Status Description 201 Booking created — returns a booking reference 409 Insufficient capacity for the requested timeslot 500 Internal 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:
Discover products
Call list products to retrieve the operator’s activities. Cache results and refresh periodically.
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.
Status Cause 400 Invalid path parameter — check the ActivityID format 404 Product not found 409 Insufficient capacity for the requested booking 422 Missing or invalid query parameters
API introduction Authentication, base URL, and error format.
Adventuro integration Pre-built OTA integration with Adventuro marketplace.