Create Product Category
Create a new product category.
Endpointโ
POST /v1/product-categories
Authenticationโ
Requires an API key with the products:write scope.
Request Bodyโ
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Category name (max 255 characters) |
description | string | No | Category description |
parent_id | integer | No | Parent category ID for creating subcategories |
apply_to | array | No | Other booking types to also create this category in: experiences, store |
Linked Categoriesโ
Use apply_to to make the same category available across booking types โ for example, a "Bikes" category that appears in both rentals and experiences. 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/product-categories" \
-H "Authorization: Bearer eqd_live_abc123xyz789..." \
-H "Content-Type: application/json" \
-d '{
"name": "Mountain Bikes",
"description": "Full suspension and hardtail mountain bikes",
"parent_id": 1,
"apply_to": ["experiences"]
}'
Responseโ
Success (201 Created)โ
{
"data": {
"id": 3,
"name": "Mountain Bikes",
"description": "Full suspension and hardtail mountain bikes",
"image": null,
"parent_id": 1,
"parent": {
"id": 1,
"name": "Bikes"
},
"children": [],
"product_count": 0,
"linked_types": ["experiences"],
"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โ
| Status | Code | Description |
|---|---|---|
| 400 | validation_error | Invalid input data |
| 401 | authentication_required | No API key provided |
| 401 | invalid_api_key | Invalid API key |
| 403 | insufficient_scope | API key lacks products: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_idmust reference a category that belongs to your account - Categories can be nested to create a hierarchy (e.g., Bikes > Mountain Bikes > Full Suspension)
apply_toaccepts only the other booking types:experiencesandstore