---
title: "Duplicate a bookable area"
method: POST
path: "/shop/bookable-areas/{bookableAreaId}/copy"
tags: ["BookableAreas"]
---

# Duplicate a bookable area

`POST /shop/bookable-areas/{bookableAreaId}/copy`

Creates a copy of an existing `BookableArea` under the same site
and organisation. Useful for seeding additional areas off an
existing one — e.g. "Hot Tub 2" copied from "Hot Tub 1".

Requires the `SETTINGS_MANAGE` permission on the area's site.

## Request body

- object
  - `name` string, required — Display name for the new copy.
  - `description` string — Long-form description for the new copy, shown to customers on the shopfront. Markdown is rendered. Omit to inherit the source area's description.
  - `capacity` integer, required — Maximum guests this area can hold concurrently. Defaults to the source area's capacity when omitted. Lowering capacity later does not affect existing bookings already above the limit.
  - `zone_ids` string[] — Zones the copy belongs to. Filtered to the source area's site.

## Response `201`

A single `BookableArea`.

- object
  - `data` BookableArea, required — A `BookableArea` is a physical area that can be booked by guests via an `AreaBookingType` (e.g. a hot tub, a cabana, a treatment pod). Bookable areas have a `capacity` (number of simultaneous bookings) and an availability schedule made up of one or more `AvailabilityRule`s.
    - `id` string, object-id, required — Unique identifier of the bookable area.
    - `organisation_id` string, uuid, required — ID of the organisation the bookable area belongs to.
    - `site_id` string, uuid, required — ID of the site the bookable area belongs to. A bookable area is scoped to exactly one site.
    - `name` string, required — Display name for the bookable area. Shown to staff and customers.
    - `description` string, nullable, required — Long-form description of the bookable area.
    - `capacity` integer, required — Maximum number of simultaneous bookings. `1` means exclusive-use; values > 1 allow shared occupancy.
    - `availability_rules` AvailabilityRule[], required — The `AvailabilityRule`s currently configured on this area. These determine when the area is bookable. Manage them via the `/shop/bookable-areas/{bookableAreaId}/availability-rules` endpoints.
      - `id` string, object-id, required — The ID of the availability rule.
      - `date_from` string, date, required — The start of the rule period.
      - `date_to` string, date, required — The end of the rule period.
      - `is_available` boolean, required — Whether the resource is available during this period. Any `false` rules will override `true` rules.
      - `max_duration` integer — Maximum number of minutes.
      - `min_duration` integer — Minimum number of minutes.
      - `time_from` string, required — The daily start time of the time period, in 24 hour format.
      - `time_to` string, required — The daily end time of the time period, in 24 hour format.
      - `weekdays` string[] — The weekdays this rule applies to.
    - `zones` Zone[] — Hydrated `Zone` records this bookable area belongs to. Zones group areas in the floor plan for spatial constraints.
      - `id` string, object-id, required — Unique identifier for the zone.
      - `name` string, required — Display name for the zone, shown wherever zones are listed or filtered. Plain text only.
      - `organisation_id` string, uuid, required — ID of the organisation that owns this zone. Inherited from the site on create.
      - `site_id` string, uuid, required — ID of the site this zone belongs to.

## 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)
