---
title: "Edit Camera Group"
method: PATCH
path: "/camera-groups/{group_id}"
tags: ["camera-groups"]
---

# Edit Camera Group

`PATCH /camera-groups/{group_id}`

## Request

- Base URL: `https://api.verdun.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.verdun.ai/camera-groups/{group_id}`
- Auth: HTTP bearer

## Path parameters

- `group_id` string, required

## Request body

- EditCameraGroupRequest: Rename a camera group or change its description. PATCH semantics, and they are read off `model_fields_set` rather than off None: omitting a field leaves it alone, while sending `description: null` genuinely clears it. Membership is not editable here — that is the replace-set PUT on /members, so a rename can never silently rewrite who is in the group.
  - `name` string, nullable: New display name. Must stay unique (case-insensitively) among the site's live camera groups; renaming a group to its own current name is a no-op, not a conflict.
  - `description` string, nullable: New description. Send null explicitly to clear it; omit to leave it unchanged.

## Response `200`

Successful Response

- CameraGroupModel: One camera group and its live membership. `camera_ids` lists LIVE cameras only. Retired cameras keep their membership rows (retirement is not deletion) but never appear on an active surface.
  - `id` string, uuid, required: The camera group ID.
  - `site_id` string, uuid, required: The site this camera group belongs to. Camera groups never span sites.
  - `name` string, required: Display name, unique (case-insensitively) among the site's live camera groups.
  - `description` string, nullable: Free-form note about what this camera group covers.
  - `camera_ids` string[]: Live member cameras. A camera may belong to several camera groups at once.
  - `has_schedule` boolean, required: Whether this camera group carries a monitoring schedule. FALSE MEANS INERT: membership alone never changes a camera's monitoring state. When true, this group's week replaces the site's for every member camera that has no camera-level override; overlapping scheduled groups combine under 'off wins'.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/verdun/apis/verdun-api.md) - [All operations](https://skmtc.dev/verdun/apis/verdun-api/llms.txt) - [OpenAPI document](https://skmtc.dev/verdun/apis/verdun-api/revisions/35a2a6ebedda?raw)
