Skip to main content

Update Pricing

Update an existing pricing rule.

Endpointโ€‹

PATCH /v1/experiences/{id}/pricing/{pricingId}

Authenticationโ€‹

Requires an API key with the experiences:write scope.

Path Parametersโ€‹

ParameterTypeDescription
idintegerExperience ID
pricingIdintegerPricing rule ID

Request Bodyโ€‹

All fields are optional. Only include fields you want to update.

FieldTypeRequiredDescription
pricing_typestringNoparticipant or group
pricenumberNoNew price amount
rate_categoryintegerNoRate category ID
season_idintegerNoSeason ID (only if experience uses seasonal pricing)
booking_option_idintegerNoMove this price onto another way of booking. Send null to hand it back to the experience's first option. Leave it out and the row stays where it is
max_participantsintegerNoMax participants (only accepted for group pricing)
price_per_participantnumberNoOptional per-participant charge added on top of the group price (only accepted for group pricing)
per_participant_includedintegerNoParticipants the base covers before the per-participant charge starts (only accepted for group pricing)

Example Requestโ€‹

curl -X PATCH "https://app.equipdash.com/api/v1/experiences/1/pricing/4" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"price": 50.00
}'

Responseโ€‹

Success (200 OK)โ€‹

{
"data": {
"id": 4,
"booking_option_id": null,
"season": null,
"pricing_type": "participant",
"rate_category": {
"id": 1,
"label": "Adult",
"description": "Ages 13+"
},
"price": 50.00,
"price_per_participant": null,
"per_participant_included": null,
"max_participants": null,
"created_at": "2026-02-01T10:00:00+00:00",
"updated_at": "2026-02-01T12:00:00+00:00"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-02-01T12:00:00+00:00"
}
}

Errorsโ€‹

StatusCodeDescription
400validation_errorInvalid request body
401authentication_requiredNo API key provided
403insufficient_scopeAPI key lacks experiences:write scope
404not_foundExperience or pricing rule not found
404resource_not_foundbooking_option_id does not belong to this experience

Notesโ€‹

  • max_participants is only accepted for group pricing type
  • If you change pricing_type from group to participant, max_participants, price_per_participant and per_participant_included will be automatically cleared
  • Moving a row onto another way of booking leaves the option it came from with one price fewer. Check nothing you still sell is left unpriced
  • Updating pricing does not affect existing bookings
  • Price changes apply to new bookings only
  • Season validation applies: seasonal experiences require season_id, year-round experiences cannot have season_id