List Booking Options
Get the ways an experience can be sold, in the shop's own order.
Archived options are left out by default, so an app building a booking screen off this cannot offer one the shop has retired.
Endpointโ
GET /v1/experiences/{id}/booking-options
Authenticationโ
Requires an API key with the experiences:read scope. There is no separate booking-options scope.
Path Parametersโ
| Parameter | Type | Description |
|---|---|---|
id | integer | Experience ID |
Query Parametersโ
| Parameter | Type | Description |
|---|---|---|
include_archived | boolean | 1 also returns retired options, listed after the live ones. Use it when you need to name the option on an older booking |
Example Requestโ
curl -X GET "https://app.equipdash.com/api/v1/experiences/1234567/booking-options" \
-H "Authorization: Bearer YOUR_API_KEY"
Responseโ
Success (200 OK)โ
{
"data": {
"experience_id": 1234567,
"booking_options": [
{
"id": 4321,
"experience_id": 1234567,
"name": "Group class",
"price_structure": "participant",
"exclusive": false,
"unit_name": null,
"unit_name_plural": null,
"min_people": null,
"max_people": null,
"default_groups_capacity": null,
"min_groups_per_booking": null,
"below_min_groups_fee": null,
"below_min_groups_fee_label": null,
"volume_discount_from_group": null,
"volume_discount_percent": null,
"show_per_person_price": false,
"duration": {
"value": null,
"unit": null
},
"sort_order": 0,
"archived": false,
"archived_at": null,
"created_at": "2026-01-15T10:00:00+00:00",
"updated_at": "2026-01-15T10:00:00+00:00"
},
{
"id": 4322,
"experience_id": 1234567,
"name": "Private session",
"price_structure": "group",
"exclusive": true,
"unit_name": null,
"unit_name_plural": null,
"min_people": 1,
"max_people": 4,
"default_groups_capacity": null,
"min_groups_per_booking": null,
"below_min_groups_fee": null,
"below_min_groups_fee_label": null,
"volume_discount_from_group": null,
"volume_discount_percent": null,
"show_per_person_price": false,
"duration": {
"value": 90,
"unit": "minutes"
},
"sort_order": 1,
"archived": false,
"archived_at": null,
"created_at": "2026-01-15T10:05:00+00:00",
"updated_at": "2026-01-15T10:05:00+00:00"
}
]
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-02-01T10:00:00+00:00"
}
}
Response Fieldsโ
| Field | Type | Description |
|---|---|---|
experience_id | integer | The experience these options belong to |
booking_options | array | Booking option objects, in the shop's display order |
Field descriptions for each object are in The Booking Option Object.
Errorsโ
| Status | Code | Description |
|---|---|---|
| 401 | authentication_required | No API key provided |
| 401 | invalid_api_key | Invalid API key |
| 403 | insufficient_scope | API key lacks experiences:read scope |
| 403 | forbidden | Experience belongs to a different supplier |
| 404 | resource_not_found | Experience does not exist |
Notesโ
- Every experience has at least one option, so this never comes back empty for an experience that exists.
- A shop that sells its experience one way gets a single row here.