Skip to main content

Create Experience Category

Create a new experience category.

Endpointโ€‹

POST /v1/experience-categories

Authenticationโ€‹

Requires an API key with the experiences:write scope.

Request Bodyโ€‹

FieldTypeRequiredDescription
namestringYesCategory name (max 255 characters)
descriptionstringNoCategory description
parent_idintegerNoParent category ID for creating subcategories
apply_toarrayNoOther booking types to also create this category in: rentals, store

Linked Categoriesโ€‹

Use apply_to to make the same category available across booking types โ€” for example, a "Kayaking" category that appears in both experiences and rentals. EquipDash creates a mirror category in each listed booking type (or adopts an existing unlinked category with the same name) and links them as one group. Linked categories share their name, description, and image, so updating any member syncs the others. The linked_types response field lists the other booking types a category is linked to.

Example Requestโ€‹

curl -X POST "https://app.equipdash.com/api/v1/experience-categories" \
-H "Authorization: Bearer eqd_live_abc123xyz789..." \
-H "Content-Type: application/json" \
-d '{
"name": "Kayaking Tours",
"description": "Guided kayak adventures for all skill levels",
"parent_id": 1,
"apply_to": ["rentals"]
}'

Responseโ€‹

Success (201 Created)โ€‹

{
"data": {
"id": 3,
"name": "Kayaking Tours",
"description": "Guided kayak adventures for all skill levels",
"image": null,
"parent_id": 1,
"parent": {
"id": 1,
"name": "Water Activities"
},
"children": [],
"experience_count": 0,
"linked_types": ["rentals"],
"created_at": "2026-01-15T12:00:00+00:00",
"updated_at": "2026-01-15T12:00:00+00:00"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-01-15T12:00:00+00:00"
}
}

Errorsโ€‹

StatusCodeDescription
400validation_errorInvalid input data
401authentication_requiredNo API key provided
401invalid_api_keyInvalid API key
403insufficient_scopeAPI key lacks experiences:write scope

Validation Errorsโ€‹

{
"error": {
"code": "validation_error",
"message": "The given data was invalid.",
"details": {
"name": ["The name field is required."],
"parent_id": ["The selected parent category does not belong to your account."]
}
},
"meta": {
"request_id": "req_abc123"
}
}

Notesโ€‹

  • The parent_id must reference a category that belongs to your account
  • Categories can be nested to create a hierarchy
  • apply_to accepts only the other booking types: rentals and store