---
title: "Bulk Mark Read"
method: POST
path: "/api/alerts/bulk-read"
tags: ["Alerts"]
---

# Bulk Mark Read

`POST /api/alerts/bulk-read`

## Request

- Base URL: `https://api.kolens.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.kolens.ai/api/alerts/bulk-read`
- Auth: HTTP bearer

Mark several alerts read/unread in one call.

Powers multi-select on the /alerts feed. Scoped exactly like the
single-row route — the caller can only flip alerts they're allowed
to see, so an attacker passing someone else's id just no-ops (it
won't match the WHERE clause). Returns how many rows actually
changed owner-side so the UI can reconcile its optimistic update.

## Headers

- `x-kolens-user-id` string, nullable

## Request body

- BulkReadRequest: Mark several alerts read/unread in one call (multi-select on the /alerts feed). ``is_read`` defaults to True so the common "mark selected as read" path can omit it.
  - `ids` string[], required
  - `is_read` boolean

## Response `200`

Successful Response

- BulkReadResponse
  - `updated` integer, required
  - `is_read` boolean, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/kolens/apis/kolens-api.md) · [All operations](https://skmtc.dev/kolens/apis/kolens-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kolens/apis/kolens-api/revisions/5d6865ab0a24?raw)
