---
title: "Post Camera Down Notify"
method: POST
path: "/analytics/camera-health/notify-down"
tags: ["analytics"]
---

# Post Camera Down Notify

`POST /analytics/camera-health/notify-down`

## 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/analytics/camera-health/notify-down`
- Auth: HTTP bearer

"Reconnect & notify", step 2: e-mail each site's chosen recipients
about its cameras that are still down.

One message per recipient (no CC), sent as the owner-e-mail identity
(OWNER_EMAIL_FROM_* / Reply-To support) and behind the same switch:
503 EMAIL_NOT_CONFIGURED while OWNER_EMAIL_ENABLED is off. Every camera
must be one the caller can see and must belong to the site it is listed
under. Each site's send is recorded in the Activity Log (counts only).
Per-recipient outcomes come back in the body; an SES failure on one
recipient does not fail the request.

## Request body

- PostCameraDownNotifyRequest: `POST /analytics/camera-health/notify-down`: one e-mail per site.
  - `emails` CameraDownEmailDraft[], required: One entry per site; a site may appear once. At most 60 recipient sends in total across all entries.
    - `site_id` string, uuid, required: The site the e-mail is about. Every camera_ids entry must belong to it.
    - `camera_ids` string[], required: The down cameras the e-mail reports. Must be visible to the caller and belong to site_id.
    - `to` string[], required: Recipient addresses: the site's contacts and/or addresses the operator typed in. Each one gets its own message (no CC). Syntax-checked; duplicates are dropped case-insensitively.
    - `subject` string, required: Subject line. Newlines are flattened before sending.
    - `body` string, required: Plain-text body, sent as written.

## Response `200`

Successful Response

- PostCameraDownNotifyResponse
  - `sent_at` string, date-time, required: When the sends started.
  - `sites` CameraDownSiteResult[], required: One per requested site, in request order.
    - `site_id` string, required: The site the e-mail is about.
    - `camera_ids` string[], required: Camera row ids included in the site's draft.
    - `recipients` CameraDownRecipientResult[], required: One outcome per recipient, after duplicates are dropped.
      - `email` string, required: The address, normalised to lower case.
      - `status` 'sent' | 'failed' | 'unknown', required: sent: SES accepted it. failed: SES rejected it. unknown: SES gave no definite answer (timeout); it may have been delivered, so do not resend blindly.
    - `sent` integer, required: Recipients whose message SES accepted.
    - `failed` integer, required: Recipients whose message SES rejected.
    - `unknown` integer, required: Recipients for whom SES gave no definite answer; they may have received it.

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