Skip to main content

About Our APIs

The Intrepid Partner API provides programmatic access to our trip catalogue, departures, pricing, and booking management. This page explains the core concepts you need to understand before integrating.

Two API domains​

Intrepid's API surface is split into two logical domains:

DomainPurposeKey resources
Product APIRead-only access to our trip catalogue, departures, room options, accommodations, transfers, activities, additional services, and itineraries/trips, /departures, /accommodations, /transfers, /activities, /additional-services, /itineraries
Booking APICreate and manage bookings on behalf of your customers — add trips, customers, accommodations, transfers, and activities to a booking/bookings, /bookings/{id}/trips, /bookings/{id}/customers, /bookings/{id}/accommodations

How they work together​

  1. Browse products — Use the Product API to fetch trips, their departures, and available room options
  2. Check availability — Query room options for a specific departure to see pricing and capacity
  3. Create a booking — Use the Booking API to create a booking, add a trip (departure + room option), and attach customer details
  4. Manage the booking — Update customer info, add optional extras (transfers, accommodations), or cancel

Data model overview​

  • A Trip is a product template (e.g. "Beautiful Northern Thailand")
  • A Departure is a specific instance of a trip with fixed start/end dates
  • A Room Option defines the type of room (twin, single, etc.), capacity, price, and availability for a departure
  • A Booking is a container that holds one or more booked trips, customers, and optional add-ons

Best practices for consuming our data​

  • Cache trip data — Trip and departure data changes infrequently. Poll at most every 15 minutes for updates rather than on every user request.
  • Use pagination — All list endpoints support page and size parameters. Default page size is 20.
  • Filter by date — Use dateRangeFrom and dateRangeTo on departures to fetch only relevant future departures.
  • Check updatedAt — Compare timestamps to detect changes since your last sync rather than re-fetching all data.
  • Handle rate limits gracefully — If you receive a 429 Too Many Requests response, back off and retry with exponential delay.