---
title: "Mark activity read by ids, all, a category, or a subject"
method: POST
path: "/api/v1/activity/read"
tags: ["Notifications"]
---

# Mark activity read by ids, all, a category, or a subject

`POST /api/v1/activity/read`

## Request

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

Send exactly one selector: ids, all, category, chat_id, link, or subject_type with subject_id. By subject marks every row about that subject read, wherever it was counted -- opening a post, job or grant clears everything said about it. By chat marks every row that links into that chat (mentions, group adds, missed calls), the selector a chat screen uses. By link marks every row whose in-app link is that address (or that address with a query string), e.g. /acting/<id>: the selector for a screen whose rows have other subjects (an approval's subject is the exercise, the screen the mandate). A row that is read counts as seen too. 422 `no_selector` when none is sent.

## 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)
