Skip to main content

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โ€‹

ParameterTypeDescription
idintegerExperience ID

Query Parametersโ€‹

ParameterTypeDescription
include_archivedboolean1 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โ€‹

FieldTypeDescription
experience_idintegerThe experience these options belong to
booking_optionsarrayBooking option objects, in the shop's display order

Field descriptions for each object are in The Booking Option Object.

Errorsโ€‹

StatusCodeDescription
401authentication_requiredNo API key provided
401invalid_api_keyInvalid API key
403insufficient_scopeAPI key lacks experiences:read scope
403forbiddenExperience belongs to a different supplier
404resource_not_foundExperience 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.