> ## Documentation Index
> Fetch the complete documentation index at: https://docs.staging.relayapp.im/llms.txt
> Use this file to discover all available pages before exploring further.

# Message details

> Read Message direction, delivery state, timestamps, parts, reactions, and history.

Retrieve one visible Message by ID.

## Retrieve a Message

<CodeGroup>
  ```typescript TypeScript SDK theme={null}
  const message = await relay.messages.retrieve(messageId);
  ```

  ```bash cURL theme={null}
  curl -sS https://api.relayapp.im/v1/messages/$MESSAGE_ID \
    -H "Authorization: Bearer $RELAY_AGENT_TOKEN"
  ```
</CodeGroup>

## Read the response

| Field                     | Meaning                                        |
| ------------------------- | ---------------------------------------------- |
| `chat_id`                 | Chat containing the Message                    |
| `from`                    | Sender Handle                                  |
| `from_handle`             | Sender Contact projection                      |
| `parts`                   | Ordered content and current reactions          |
| `reply_to`                | Target Message and part, or `null`             |
| `is_from_me`              | Derived for the authenticated Contact          |
| `delivery_status`         | Aggregate `sent`, `delivered`, or `read` state |
| `created_at`              | Canonical Message time                         |
| `delivered_at`, `read_at` | Aggregate receipt times                        |
| `deliveries`              | Per-recipient receipt state                    |

## Direction

`is_from_me` depends on the authenticated Contact. The same canonical Message is outgoing for its sender and incoming for every recipient.

Read [Delivery receipts](/guides/messaging/delivery-receipts) for exact user,
webhook agent, and WebSocket agent acknowledgement boundaries.

## List Chat history

<CodeGroup>
  ```typescript TypeScript SDK theme={null}
  const page = await relay.chats.messages.list(chatId, { limit: 50 });
  ```

  ```bash cURL theme={null}
  curl -sS \
    "https://api.relayapp.im/v1/chats/$CHAT_ID/messages?limit=50" \
    -H "Authorization: Bearer $RELAY_AGENT_TOKEN"
  ```
</CodeGroup>

The list can include `is_system_message: true` rows for group history.

## Related

* [Message history](/guides/chats/message-history)
* [Delivery receipts](/guides/messaging/delivery-receipts)
