---
title: "Mark one received message as read"
method: POST
path: "/messages/{guid}/read"
tags: ["Messages"]
---

# Mark one received message as read

`POST /messages/{guid}/read`

## Request

- Base URL: `https://api.automessage.app/v1`
- URL: `https://api.automessage.app/v1/messages/{guid}/read`
- Auth: API key in header `X-API-KEY`

Flips `read` on the message, stamps `dateRead`, and recounts the thread's `unreadCount` (the dashboard badge clears at once). A sent or already-read message is a no-op (`meta.markedRead: 0`). If the user enabled "Mark read on Mac", their Mac also opens the thread in Messages.app in the background so the read receipt goes out over iMessage (`meta.macSync`: requested / off). Read-only keys get 403.

## Path parameters

- `guid` string, required

## Response `200`

The message, now read, plus `meta { conversationId, markedRead, unreadCount, macSync }`.

- Message
  - `guid` string, required: Apple chat.db message GUID.
  - `conversation` string, required
  - `body` string, required
  - `outbound` boolean, required: True if we sent it.
  - `contact` string: E.164 phone or email of the counterparty.
  - `reference` string, nullable: Message this replies to, if any.
  - `deliveredAt` string, date-time, nullable
  - `delivered` boolean, nullable: Outbound only: chat.db is_delivered — a recipient device acknowledged it (connector 0.2.22).
  - `deliveryError` integer, nullable: Outbound only: Apple's non-zero message.error when Messages could not deliver it; the matching draft then has sendError "not_delivered…".
  - `readAt` string, date-time, nullable
  - `createdAt` string, date-time, required

## Other responses

- `404`: The requested resource does not exist.

---

[API](https://skmtc.dev/automessage/apis/automessage-rest-api.md) · [All operations](https://skmtc.dev/automessage/apis/automessage-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/automessage/apis/automessage-rest-api/revisions/129f369dee8b?raw)
