---
title: "Bulk Update Alert Status"
method: POST
path: "/api/v1/alerts/bulk-status"
tags: ["alerts"]
---

# Bulk Update Alert Status

`POST /api/v1/alerts/bulk-status`

## Request

- Base URL: `https://app.kaminari.ad`
- URL: `https://app.kaminari.ad/api/v1/alerts/bulk-status`
- Auth: HTTP bearer

Change status for many alerts at once.

Provide either an explicit ``ids`` list or ``all_matching=true`` with
the optional ``filter_*`` fields, which mirror this endpoint's list
filters. Alerts already in a non-transitionable state are skipped.
Returns updated/skipped counts.

## Request body

- BulkUpdateAlertStatusRequest: Request body for POST /alerts/bulk-status. Exactly one selection mode must be used: * ``ids`` — an explicit, non-empty list of alert ids (capped at 1000 to bound the request). * ``all_matching=True`` — every alert matching the ``filter_*`` fields (omitting all of them selects the whole org). This is the "Select all" path for large inboxes. The ``filter_*`` fields mirror the list endpoint's query params one-for-one. They have to: "select all matching" must act on exactly the rows the caller can see in the table, never a wider set. ``status`` is the target; invalid transitions per alert are skipped.
  - `status` 'open' | 'escalated' | 'resolved' | 'dismissed', required: Lifecycle status of a policy-violation alert.
  - `ids` string[], nullable
  - `all_matching` boolean
  - `filter_status` 'open' | 'escalated' | 'resolved' | 'dismissed': Lifecycle status of a policy-violation alert.
  - `filter_campaign_id` string, uuid, nullable
  - `filter_policy_set_ids` string[], nullable
  - `filter_tag_slugs` string[], nullable
  - `filter_country_codes` string[], nullable
  - `filter_date_from` string, date, nullable
  - `filter_date_to` string, date, nullable
  - `filter_timezone` string, nullable

## Response `200`

Successful Response

- BulkUpdateAlertStatusResponse: Outcome of a bulk status change. ``updated`` is the number of alerts actually transitioned; ``skipped`` counts selected alerts that were in a state from which the requested transition is not allowed.
  - `updated` integer, required
  - `skipped` integer, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/kaminari/apis/kaminari-ad-api.md) · [All operations](https://skmtc.dev/kaminari/apis/kaminari-ad-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kaminari/apis/kaminari-ad-api/revisions/013f86e2fd32?raw)
