---
title: "Create Camera Group"
method: POST
path: "/sites/{site_id}/camera-groups"
tags: ["camera-groups"]
---

# Create Camera Group

`POST /sites/{site_id}/camera-groups`

## 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/sites/{site_id}/camera-groups`
- Auth: HTTP bearer

## Path parameters

- `site_id` string, required

## Request body

- CreateCameraGroupRequest: Create a camera group at a site, optionally with its members. A brand-new camera group changes NOTHING about monitoring: a group with no schedule contributes nothing to a camera's state (membership alone is inert). It starts affecting cameras only once PUT /camera-groups/{id}/monitoring-schedule gives it a week.
  - `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[]: Initial members. Every camera must be a live camera at this same site; a camera may belong to several camera groups at once.

## 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/00252d8227c1?raw)
