---
title: "Update the alert policy."
method: PUT
path: "/surveillance/policy"
tags: ["surveillance"]
---

# Update the alert policy.

`PUT /surveillance/policy`

## Request

- Base URL: `https://api.ismalicious.com`
- URL: `https://api.ismalicious.com/surveillance/policy`
- Auth: one of:
  - API key in header `X-API-KEY`
  - HTTP bearer
  - HTTP basic

Recipients are the email addresses of members of the organisation with a
verified address, 20 at most. Slack and Teams destinations need the Basic
plan or above (403 `plan_required`; clearing them is always allowed).

## Request body

- AlertPolicyInput
  - `chatDestinationIds` string[], nullable
  - `emailEnabled` boolean, nullable
  - `emailRecipients` string[], nullable
  - `includeDevDependencies` boolean, nullable
  - `locale` string, nullable
  - `p1Cadence` 'Immediate' | 'Daily' | 'Weekly' | 'Never': `SurveillanceAlertPolicy.p{1,2,3}Cadence`.
  - `p2Cadence` 'Immediate' | 'Daily' | 'Weekly' | 'Never': `SurveillanceAlertPolicy.p{1,2,3}Cadence`.
  - `p3Cadence` 'Immediate' | 'Daily' | 'Weekly' | 'Never': `SurveillanceAlertPolicy.p{1,2,3}Cadence`.
  - `webhooksEnabled` boolean, nullable

## Response `200`

OK

- AlertPolicyResponse
  - `policy` AlertPolicyDto, required
    - `chatDestinationIds` string[], required
    - `emailEnabled` boolean, required
    - `emailRecipients` string[], required: Empty = the organisation's OWNER/ADMIN users with a verified address. Every entry passes `contexts::cve::domain::is_notification_email`.
    - `includeDevDependencies` boolean, required
    - `lastDailyDigestAt` string, date-time, nullable
    - `lastWeeklyDigestAt` string, date-time, nullable
    - `locale` string, required: `en` or `fr`.
    - `p1Cadence` 'Immediate' | 'Daily' | 'Weekly' | 'Never', required: `SurveillanceAlertPolicy.p{1,2,3}Cadence`.
    - `p2Cadence` 'Immediate' | 'Daily' | 'Weekly' | 'Never', required: `SurveillanceAlertPolicy.p{1,2,3}Cadence`.
    - `p3Cadence` 'Immediate' | 'Daily' | 'Weekly' | 'Never', required: `SurveillanceAlertPolicy.p{1,2,3}Cadence`.
    - `updatedAt` string, date-time, nullable
    - `webhooksEnabled` boolean, required

## Other responses

- `400`: Invalid request (`invalid_recipient`, `invalid_destination`, `invalid_locale`)
- `401`: Unauthorized
- `403`: `plan_required`: chat destinations below Basic

## Changes

- **2026-10-23** `7c8ce9039cf7`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/ismalicious/apis/ismalicious-threat-intelligence-api/changes/surveillance/policy/put.md)

---

[API](https://skmtc.dev/ismalicious/apis/ismalicious-threat-intelligence-api.md) - [All operations](https://skmtc.dev/ismalicious/apis/ismalicious-threat-intelligence-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ismalicious/apis/ismalicious-threat-intelligence-api/revisions/b6f45e6169a7?raw)
