List Pricing
Get all pricing rules for an experience.
Endpointโ
GET /v1/experiences/{id}/pricing
Authenticationโ
Requires an API key with the experiences:read scope.
Path Parametersโ
| Parameter | Type | Description |
|---|---|---|
id | integer | Experience ID |
Query Parametersโ
| Parameter | Type | Description |
|---|---|---|
booking_option_id | integer | Narrow the list to the rows that price one way of booking. Leave it out and every row comes back, in the shop's own rate order |
Example Requestโ
curl -X GET "https://app.equipdash.com/api/v1/experiences/1/pricing" \
-H "Authorization: Bearer YOUR_API_KEY"
# Just what the private session costs
curl -X GET "https://app.equipdash.com/api/v1/experiences/1/pricing?booking_option_id=4321" \
-H "Authorization: Bearer YOUR_API_KEY"
Responseโ
Success (200 OK)โ
{
"data": {
"experience_id": 1,
"price_structure": "participant",
"booking_option_id": null,
"pricing": [
{
"id": 1,
"season": null,
"pricing_type": "participant",
"rate_category": {
"id": 1,
"label": "Adult",
"description": "Ages 13+"
},
"price": 45.00,
"price_per_participant": null,
"per_participant_included": null,
"max_participants": null,
"created_at": "2026-01-15T10:00:00+00:00",
"updated_at": "2026-01-15T10:00:00+00:00"
},
{
"id": 2,
"season": null,
"pricing_type": "participant",
"rate_category": {
"id": 2,
"label": "Child",
"description": "Ages 5-12"
},
"price": 25.00,
"price_per_participant": null,
"per_participant_included": null,
"max_participants": null,
"created_at": "2026-01-15T10:00:00+00:00",
"updated_at": "2026-01-15T10:00:00+00:00"
},
{
"id": 3,
"season": {
"id": 1,
"name": "Summer Peak",
"start_date": "2026-06-01",
"end_date": "2026-08-31",
"date_ranges": [
{ "start_date": "2026-06-01", "end_date": "2026-08-31" },
{ "start_date": "2026-12-01", "end_date": "2026-12-20" }
]
},
"pricing_type": "participant",
"rate_category": {
"id": 1,
"label": "Adult",
"description": "Ages 13+"
},
"price": 55.00,
"price_per_participant": null,
"per_participant_included": null,
"max_participants": null,
"created_at": "2026-01-15T10:00:00+00:00",
"updated_at": "2026-01-15T10:00: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 ID |
price_structure | string | participant or group |
booking_option_id | integer|null | The booking option the list was narrowed to, echoed back. null = the whole list |
pricing | array | Array of pricing rule objects |
Pricing Rule Objectโ
| Field | Type | Description |
|---|---|---|
id | integer | Unique pricing rule identifier |
booking_option_id | integer|null | The booking option this price belongs to. null = the row prices the experience's first option, which is what every row written before booking options existed does |
season | object|null | Season details if seasonal pricing. Includes id, name, start_date, end_date, and date_ranges. A date season may cover several ranges โ date_ranges is the authoritative list of when it applies, while start_date/end_date remain for backward compatibility and mirror the first range. See Get Seasons. |
pricing_type | string | participant or group |
rate_category | object|null | Rate category details |
price | number | Price amount |
price_per_participant | number|null | Optional per-participant charge on top of the group price (group pricing only) |
per_participant_included | integer|null | Participants the base covers before the per-participant charge starts (group pricing only) |
max_participants | integer|null | Max participants (for group pricing) |
created_at | string | ISO 8601 datetime |
updated_at | string | ISO 8601 datetime |
Errorsโ
| Status | Code | Description |
|---|---|---|
| 401 | authentication_required | No API key provided |
| 403 | insufficient_scope | API key lacks experiences:read scope |
| 404 | not_found | Experience not found, or booking_option_id does not belong to it |