---
title: "Get one message's full content"
method: GET
path: "/v1/messages/{id}"
tags: ["Messages"]
---

# Get one message's full content

`GET /v1/messages/{id}`

## Request

- Base URL: `https://api.usemektup.com`
- URL: `https://api.usemektup.com/v1/messages/{id}`
- Auth: HTTP bearer

Marks it read as a side effect if it wasn't already.

## Path parameters

- `id` string, uuid, required

## Response `200`

OK

- MessageDetail
  - `id` string, uuid
  - `direction` 'inbound' | 'outbound'
  - `from_address` string, nullable
  - `to_address` string, nullable
  - `subject` string, nullable
  - `size_bytes` integer
  - `received_at` string, date-time
  - `read_at` string, date-time, nullable
  - `deleted_at` string, date-time, nullable
  - `flagged_at` string, date-time, nullable
  - `folder_id` string, uuid, nullable
  - `delivery_status` 'sent' | 'deferred' | 'bounced' | 'null', nullable: Only ever populated for direction=outbound. null means either too recent to have a result yet, or delivered locally to another Mektup mailbox rather than over external SMTP.
  - `delivery_detail` string, nullable: The real SMTP response text from the recipient's mail server (Mektup has no relayhost, so its own MTA does the delivery attempt directly) - not a synthesized summary.
  - `delivery_checked_at` string, date-time, nullable
  - `thread_key` string
  - `text` string, nullable
  - `html` string, nullable: Attacker-controlled content - sanitize and isolate before rendering, never render directly
  - `attachments` object[]
    - `filename` string, nullable
    - `contentType` string
    - `size` integer

## Other responses

- `404`: Not found on this account (tenant-isolated - never reveals another account's data)

---

[API](https://skmtc.dev/usemektup/apis/mektup-api.md) · [All operations](https://skmtc.dev/usemektup/apis/mektup-api/llms.txt) · [OpenAPI document](https://skmtc.dev/usemektup/apis/mektup-api/revisions/e394b91cbc53?raw)
