---
title: "Retrieve a message"
method: GET
path: "/v1/users/{user_id}/messages/{id}"
tags: ["Messages"]
---

# Retrieve a message

`GET /v1/users/{user_id}/messages/{id}`

## Request

- Base URL: `http://0.0.0.0:3000`
- URL: `http://0.0.0.0:3000/v1/users/{user_id}/messages/{id}`
- Auth: none declared

Retrieves a specific message by its ID (msg_xxx format). The message must belong to the authenticated user.

**Response fields**:
- `id`: Message ID (msg_xxx opaque format)
- `integration_id`: ID of the integration this message came from (int_xxx format)
- `body_text`: The message content
- `subject`: Email subject (for email messages)
- `received_at`: When the message was received
- `sender_name`: Human-readable sender name (null if unresolved)
- `sent_by`: Platform-specific sender identifier (email address for Gmail/Outlook, Slack user ID for Slack, Microsoft Graph user ID or email address for Microsoft Teams; 'unknown' if unresolved)
- `parent_message_id`: Parent message ID for threaded replies (msg_xxx format, null for top-level)
- `thread_position`: Position within the thread (null for non-threaded messages)
- `is_bot`: Whether this message was from a bot/automated sender
- `conversation_id`: Conversation ID if applicable (conv_xxx format)

## Path parameters

- `user_id` string, uuid, required
- `id` string, required

## Response `200`

Default Response

- object
  - `success` true, required
  - `data` object, required
    - `id` string, required
    - `integration_id` string, required
    - `body_text` string, nullable
    - `body_html` string, nullable
    - `raw` string, nullable
    - `headers` object[], nullable
      - `name` string, required
      - `value` string, required
    - `subject` string, nullable, required
    - `received_at` string, required
    - `parent_message_id` string, nullable, required
    - `thread_id` string, nullable, required
    - `thread_position` number, nullable, required
    - `is_bot` boolean, required
    - `conversation_id` string, nullable, required
    - `primary_entity_id` string, nullable, required
    - `entity_ids` string[], required
    - `sender_name` string, nullable, required
    - `sent_by` string, required
    - `display_source` string, nullable, required

## Other responses

- `400`: Default Response
- `404`: Default Response
- `500`: Default Response

---

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