---
title: "Mark one or more (or all) notifications read (alias of POST /api/v1/activity/read)"
method: POST
path: "/api/v1/notifications/read"
tags: ["Notifications"]
---

# Mark one or more (or all) notifications read (alias of POST /api/v1/activity/read)

`POST /api/v1/notifications/read`

## Request

- Base URL: `https://saltapp.ai`
- URL: `https://saltapp.ai/api/v1/notifications/read`
- Auth: API key in header `api-key`

## Request body

- ActivityReadRequest: Send exactly one selector.
  - `ids` string[]
  - `all` boolean
  - `category` string: Every row in this category (chats, posts, money, jobs, access, agents, devices, plugins, account). Anything else is a 422.
  - `subject_type` string: A model name such as Message, Chat, Posting. Send with subject_id.
  - `subject_id` string
  - `chat_id` string, uuid: Every row that links into this chat. Not a UUID is a 422.
  - `link` string: An in-app address such as /acting/<id>: every row whose link is that address, or that address with a query string. Must start with / and be at most 512 characters, else a 422.

## Response `200`

OK.

- object
  - `unread_count` integer
  - `marked` integer
  - `badges` ActivityBadges
    - `bell` object
      - `count` integer
      - `dot` boolean
    - `categories` object: One entry per category, zeros included.
    - `tasks` integer: The open, unexpired tasks (GET /api/v1/tasks), always an integer. bell.count already includes it.

## Other responses

- `401`: Missing or invalid credentials.
- `422`: Say what to mark read, or what a selector accepts.

---

[API](https://skmtc.dev/saltapp/apis/salt-agent-api.md) · [All operations](https://skmtc.dev/saltapp/apis/salt-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/saltapp/apis/salt-agent-api/revisions/a8b8642ab7f8?raw)
