---
title: "Create firearm alert"
method: POST
path: "/v1/alerts/firearm"
tags: ["alerts"]
---

# Create firearm alert

`POST /v1/alerts/firearm`

Creates a firearm-detection alert configuration. Recipients are specified by email (matched case-insensitively) and resolved to platform users in your organization; each recipient's notify_by_sms/notify_by_push only deliver when the user has a phone number / registered device. The schedule is interpreted in each camera's local time. The alert is attributed to the API key (creator_name = the key's identity). Note: a null name is omitted from the response rather than serialized as null.

## Request body

- CreateFirearmAlertRequest
  - `name` string
  - `camera_mac_addresses` string[], required
  - `recipients` FirearmAlertRecipient[], required
    - `email` string, email, required
    - `notify_by_email` boolean
    - `notify_by_sms` boolean — Only delivered if the user has a phone number on file.
    - `notify_by_push` boolean — Only delivered if the user has a registered mobile device.
  - `schedule` FirearmAlertSchedule — When the alert is active, expressed in camera-local (naive) time.
    - `start_time` string, time
    - `end_time` string, time
    - `days_of_week` DayOfWeek[]
  - `sensitivity` 'Low' | 'Medium' | 'High' — An enumeration.
  - `handgun_positive_stances` HandgunStanceType[]
  - `push_notification_level` 'active' | 'critical' | 'passive' | 'time-sensitive' — Defines the interruption level for mobile push notifications. This level determines the notification priority and how it will interrupt the user: - ACTIVE: Standard priority notifications - CRITICAL: High priority notifications that can break through focus modes and DND. - PASSIVE: Low priority notifications that don't trigger sounds or banners - TIME_SENSITIVE: Important time-sensitive notifications that can break through some focus modes

## Response `201`

Successful Response

- FirearmAlertResponse
  - `firearm_alert_id` integer, required
  - `name` string
  - `camera_mac_addresses` string[], required
  - `recipients` FirearmAlertRecipient[], required
    - `email` string, email, required
    - `notify_by_email` boolean
    - `notify_by_sms` boolean — Only delivered if the user has a phone number on file.
    - `notify_by_push` boolean — Only delivered if the user has a registered mobile device.
  - `schedule` FirearmAlertSchedule, required — When the alert is active, expressed in camera-local (naive) time.
    - `start_time` string, time
    - `end_time` string, time
    - `days_of_week` DayOfWeek[]
  - `sensitivity` 'Low' | 'Medium' | 'High', required — An enumeration.
  - `handgun_positive_stances` HandgunStanceType[], required
  - `push_notification_level` 'active' | 'critical' | 'passive' | 'time-sensitive', required — Defines the interruption level for mobile push notifications. This level determines the notification priority and how it will interrupt the user: - ACTIVE: Standard priority notifications - CRITICAL: High priority notifications that can break through focus modes and DND. - PASSIVE: Low priority notifications that don't trigger sounds or banners - TIME_SENSITIVE: Important time-sensitive notifications that can break through some focus modes
  - `created_at` string, date-time, required

## Other responses

- `400` — Invalid request
- `403` — Unauthorized
- `404` — Firearm alert not found
- `409` — Camera assignment conflict
- `422` — Validation error

---

[API](https://skmtc.dev/coram/apis/coram-api.md) · [All operations](https://skmtc.dev/coram/apis/coram-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/coram/coram-api/revisions/2842f226f93b/schema)
