Skip to main content

Experiences API

Experiences represent tours, activities, classes, and other bookable services that occur at specific times.

What is an Experience?โ€‹

An experience is a scheduled activity that customers can book. Unlike products (which are rented for a duration), experiences happen at fixed times. Examples include:

  • Guided tours (kayak tours, hiking tours)
  • Lessons and classes (surf lessons, yoga classes)
  • Activities (escape rooms, wine tastings)
  • Workshops (photography, cooking)

Experience Structureโ€‹

Experience
โ”œโ”€โ”€ Category (optional)
โ”œโ”€โ”€ Availability[] (weekly schedule)
โ”œโ”€โ”€ PricingRules[] (rate categories, seasonal pricing)
โ”œโ”€โ”€ RateCategories[] (Adult, Child, Senior, etc.)
โ”œโ”€โ”€ Images[]
โ””โ”€โ”€ AssignedWaivers[]

Key Conceptsโ€‹

Durationโ€‹

Every experience has a defined duration:

Duration UnitExample
minutes90-minute yoga class
hours2-hour kayak tour
daysFull-day hiking adventure

Capacityโ€‹

Experiences have limited capacity per session:

  • Default capacity: Maximum participants per time slot
  • Per-availability capacity: Can override for specific days/times

Availability Scheduleโ€‹

Experiences run on a weekly schedule:

{
"availability": [
{ "day_of_week": "monday", "start_time": "09:00", "end_time": "11:00", "capacity": 12 },
{ "day_of_week": "monday", "start_time": "14:00", "end_time": "16:00", "capacity": 12 },
{ "day_of_week": "saturday", "start_time": "10:00", "end_time": "12:00", "capacity": 8 }
]
}

Rate Categoriesโ€‹

Different pricing for different participant types:

Rate CategoryExample Price
Adult$65
Child (5-12)$45
Senior (65+)$55
Family (2+2)$180

Price Applies (Timing)โ€‹

SettingDescription
yearRoundSame pricing all year
seasonalPricing varies by season

Price Structureโ€‹

SettingDescription
participantPrice per participant (most common)
groupSingle price for the whole group

Experience Statusโ€‹

StatusDescription
activeAvailable for booking
inactiveTemporarily unavailable

API Endpointsโ€‹

MethodEndpointDescriptionScope Required
GET/v1/experiencesList all experiences with filteringexperiences:read
GET/v1/experiences/{id}Get a single experience with full detailsexperiences:read
POST/v1/experiencesCreate a new experienceexperiences:write
PATCH/v1/experiences/{id}Update an existing experienceexperiences:write
DELETE/v1/experiences/{id}Delete an experienceexperiences:write
GET/v1/experiences/{id}/questionsWhat the experience asks each person, sizes includedexperiences:read
POST/v1/experiences/{id}/questionsAdd a question each person is askedexperiences:write
PATCH/v1/experiences/{id}/questions/{fieldId}Change a questionexperiences:write
DELETE/v1/experiences/{id}/questions/{fieldId}Stop asking a question on this experienceexperiences:write

Common Use Casesโ€‹

Displaying Available Toursโ€‹

Fetch active experiences to display on your website:

curl "https://app.equipdash.com/api/v1/experiences?status=active" \
-H "Authorization: Bearer YOUR_API_KEY"

Syncing with Booking Platformsโ€‹

Keep your experience catalog in sync with OTAs:

curl "https://app.equipdash.com/api/v1/experiences" \
-H "Authorization: Bearer YOUR_API_KEY"

Updating Capacityโ€‹

Adjust experience capacity via the API:

curl -X PATCH "https://app.equipdash.com/api/v1/experiences/123" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"default_capacity": 15}'
  • Bookings - Bookings contain experiences
  • Categories - Organize experiences into categories
  • Waivers - Waivers can be assigned to experiences
  • Webhooks - Get notified when experiences change