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 Unit | Example |
|---|---|
minutes | 90-minute yoga class |
hours | 2-hour kayak tour |
days | Full-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 Category | Example Price |
|---|---|
| Adult | $65 |
| Child (5-12) | $45 |
| Senior (65+) | $55 |
| Family (2+2) | $180 |
Price Applies (Timing)โ
| Setting | Description |
|---|---|
yearRound | Same pricing all year |
seasonal | Pricing varies by season |
Price Structureโ
| Setting | Description |
|---|---|
participant | Price per participant (most common) |
group | Single price for the whole group |
Experience Statusโ
| Status | Description |
|---|---|
active | Available for booking |
inactive | Temporarily unavailable |
API Endpointsโ
| Method | Endpoint | Description | Scope Required |
|---|---|---|---|
GET | /v1/experiences | List all experiences with filtering | experiences:read |
GET | /v1/experiences/{id} | Get a single experience with full details | experiences:read |
POST | /v1/experiences | Create a new experience | experiences:write |
PATCH | /v1/experiences/{id} | Update an existing experience | experiences:write |
DELETE | /v1/experiences/{id} | Delete an experience | experiences:write |
GET | /v1/experiences/{id}/questions | What the experience asks each person, sizes included | experiences:read |
POST | /v1/experiences/{id}/questions | Add a question each person is asked | experiences:write |
PATCH | /v1/experiences/{id}/questions/{fieldId} | Change a question | experiences:write |
DELETE | /v1/experiences/{id}/questions/{fieldId} | Stop asking a question on this experience | experiences: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}'
Related Resourcesโ
- Bookings - Bookings contain experiences
- Categories - Organize experiences into categories
- Waivers - Waivers can be assigned to experiences
- Webhooks - Get notified when experiences change