---
title: "Mark Read"
method: POST
path: "/harness/read"
tags: ["harness"]
---

# Mark Read

`POST /harness/read`

## Request

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

## Request body

- HarnessReadRequest: Mark the thread read through ``seq``. A request, not a value: the server keeps the watermark monotonic and clamps it to a row that exists, so re-sending an old visit's seq, or a seq from the future, is safe.
  - `athlete_slug` string, required
  - `seq` integer, required

## Response `200`

Successful Response

- HarnessUnreadResponse: ``GET /harness/unread`` and ``POST /harness/read``'s answer: how many coach-side rows (``assistant`` / ``error`` / ``checkin_ask`` — never ``user`` or ``routine``) sit past the pair's read watermark, and the watermark.
  - `unread_count` integer, required
  - `last_read_seq` integer, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/getathly/apis/athly-api.md) - [All operations](https://skmtc.dev/getathly/apis/athly-api/llms.txt) - [OpenAPI document](https://skmtc.dev/getathly/apis/athly-api/revisions/6adfdc258d75?raw)
