---
title: "Duplicate an equipment item"
method: POST
path: "/shop/equipment/{equipmentId}/copy"
tags: ["Equipment"]
---

# Duplicate an equipment item

`POST /shop/equipment/{equipmentId}/copy`

Creates a copy of an existing `Equipment` item with the supplied
fields applied on top of the source. Useful when seeding a new
piece of kit off an existing one — for example cloning a treatment
table to a second site without rebuilding it from scratch.

Fields omitted from the body are inherited from the source verbatim.
Pass `site_id` to clone the equipment into a different site; omit it
to keep the copy on the source site.

Requires the `SETTINGS_MANAGE` permission on the target site.

## Request body

- object
  - `name` string — Display name for the new copy. Defaults to the source's name — usually you'll want to override this so the two entries are distinguishable.
  - `description` string — Override the long-form description on the copy. Defaults to the source's description.
  - `quantity` number — Override the unit count available at the site. Must be greater than zero. Defaults to the source's value.
  - `site_id` string, uuid — Override the site the copy belongs to. Defaults to the source's site. The calling user must belong to the target site.

## Response `200`

A single `Equipment` item.

- object
  - `data` Equipment, required — `Equipment` represents physical tools or items required to deliver an appointment — facials require a steam machine, massages require a table, etc. Each appointment type can declare equipment it needs; availability calculations then only offer slots where the required equipment is free.
    - `id` string, object-id, required — Unique identifier for this piece of equipment.
    - `name` string, required — Display name shown to staff in the admin UI. Plain text only.
    - `description` string, nullable — Optional internal note about this equipment — e.g. model number, service schedule, location.
    - `quantity` number, required — Number of units of this equipment the site has. Used by availability calculations to enforce concurrency limits (an appointment requiring 1 unit can only run when at least one unit is free).
    - `site_id` string, uuid, required — ID of the site this equipment belongs to.
    - `organisation_id` string, uuid, required — ID of the organisation that owns this equipment. Defaults to the caller's primary organisation on create.

## Other responses

- `401` — The user is unauthenticated
- `403` — The authenticated user does not have permission.
- `404` — The resource couldn't be found
- `422` — The request didn't pass validation

---

[API](https://skmtc.dev/try/apis/trybe-api.md) · [All operations](https://skmtc.dev/try/apis/trybe-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/try/trybe-api/revisions/f37f92702da5/schema)
