---
title: "Mark Station Read"
method: POST
path: "/v1/teams/{team_id}/stations/{station}/read"
tags: ["stations"]
---

# Mark Station Read

`POST /v1/teams/{team_id}/stations/{station}/read`

This person has stood in the place — the unread count's off switch.

READ STATE IS A PERSON'S, NOT A BROWSER'S. It was `localStorage`, which made
a room cleared on the laptop still shout on the phone. One row per person
per desk (`channel_reads`), stamped when the desk opens and again as
replies land while it is open; the rail's next read counts only what came
after it. It is a read-side act — looking at a place needs no write grant
on the tree — and it never moves backwards.

## Path parameters

- `team_id` string, uuid, required
- `station` string, required

## Headers

- `authorization` string, nullable
- `x-darwin-token` string, nullable

## Request body

- StationReadMark — When this person read the place. Absent means now.
  - `at` string, date-time, nullable

## Response `200`

Successful Response

- StationReadReceipt
  - `station` string, required
  - `read_at` string, required

## Other responses

- `422` — Validation Error

## Changes

> 32 revisions in range; 1 not diffed.

- **2026-09-03** `c48c4f626ab0` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/stormy/apis/stormy-control-plane/changes/v1/teams/:team_id/stations/:station/read/post.md)

---

[API](https://skmtc.dev/stormy/apis/stormy-control-plane.md) · [All operations](https://skmtc.dev/stormy/apis/stormy-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/stormy/apis/stormy-control-plane/revisions/b09e3c4ee2af?raw)
