---
title: "Get Site Camera Pauses"
method: GET
path: "/sites/{site_id}/camera-pauses"
tags: ["sites"]
---

# Get Site Camera Pauses

`GET /sites/{site_id}/camera-pauses`

## 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-pauses`
- Auth: HTTP bearer

Which cameras are paused now, when each ends, and where the site stands
against the pause limits (operator ask 2026-10-28). Any login the site is in
scope for may read it; staff names and notes are redacted for customer-side
logins.

## Path parameters

- `site_id` string, required

## Response `200`

Successful Response

- SiteCameraPausesResponse: `GET /sites/{id}/camera-pauses` and the result of a pause or resume.
  - `site_id` string, uuid, required: The site.
  - `timezone` string, required: The site's IANA zone.
  - `as_of` string, date-time, required: The server instant everything here was resolved at.
  - `limits` CameraPauseLimitsModel, required
    - `allowed_minutes` integer[], required: The preset lengths.
    - `batches_last_hour` integer, required: Pause presses at this site in the last rolling hour.
    - `max_batches_per_hour` integer, required: Presses the site may take per rolling hour.
    - `max_camera_minutes_per_hour` integer, required: Paused minutes one camera may take per rolling hour.
    - `can_override` boolean, required: The caller is an ops lead and may pause past the limits with a reason.
  - `cameras` CameraPauseCameraModel[], required: Every live camera at the site, in label order.
    - `camera_id` string, uuid, required: The camera row id.
    - `camera_label` string, required: The camera's display name.
    - `monitoring_state` 'monitored' | 'heightened' | 'off', required: What the camera is doing right now (schedule, disarm and test arm applied). A pause does not change it: a paused camera stays Monitored or Heightened.
    - `pausable` boolean, required: Whether it can be paused right now.
    - `unavailable_reason` 'live_view_only' | 'off' | 'already_paused' | 'blocked', nullable: Why not, when pausable is false. 'blocked': ops has blocked pausing this camera while an experiment runs on it.
    - `paused` CameraPauseWindowModel: A camera's pause that is live right now.
      - `starts_at` string, date-time, required: When the pause began.
      - `ends_at` string, date-time, required: When new alarms start reaching the queue again (the pause ends by itself here).
      - `minutes` integer, required: The length chosen: 5, 10 or 15.
      - `reason` string, nullable: One of the four request reasons.
      - `by_name` string, nullable: The operator who paused (snapshot). Null for customer-side logins.
      - `note` string, nullable: The operator's note. Null for customer-side logins.
    - `minutes_paused_last_hour` integer: Minutes this camera was paused in the last rolling hour (a live pause counts so far).
  - `changed_camera_ids` string[]: On a pause or resume: the cameras this request actually changed.
  - `resumed` CameraResumedModel[]: On a resume: what each resumed camera is doing now.
    - `camera_id` string, uuid, required: The camera.
    - `monitoring_state` 'monitored' | 'heightened' | 'off', required: What the camera is doing now that the pause is gone. 'off' means its schedule (or a disarm) has it off: the console must not say monitoring resumed.
  - `deduplicated` boolean: True when this was a retry of an earlier pause and nothing new was written.

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