---
title: "Get a message"
method: GET
path: "/conversation-messages/{messageId}"
tags: ["Messages"]
---

# Get a message

`GET /conversation-messages/{messageId}`

Returns a single conversation message by identifier.

## Path parameters

- `messageId` string, required — Message identifier.

## Response `200`

Message details.

- MessageResultResponse — Message detail response with the standard public data envelope plus legacy top-level aliases.
  - `authorWorkspaceMembershipId` string, required — Canonical author workspace membership identifier. Matches legacy author_id during the compatibility window.
  - `author_id` string, required — Author workspace member identifier. Deprecated: read authorWorkspaceMembershipId instead.
  - `author_name` string, nullable, required — Author workspace member display name.
  - `content` string, nullable, required — Message markdown content.
  - `conversation_id` string, required — Conversation identifier.
  - `conversation_name` string, nullable, required — Conversation name.
  - `created_at` string, date-time, required — Message creation timestamp.
  - `data` MessageResult, required — Public message result. This intentionally omits reply lineage fields such as thread_root_id and replied_to_message_id; use the thread replies route and its thread_root_id payload field to validate thread grouping.
    - `authorWorkspaceMembershipId` string, required — Canonical author workspace membership identifier. Matches legacy author_id during the compatibility window.
    - `author_id` string, required — Author workspace member identifier. Deprecated: read authorWorkspaceMembershipId instead.
    - `author_name` string, nullable, required — Author workspace member display name.
    - `content` string, nullable, required — Message markdown content.
    - `conversation_id` string, required — Conversation identifier.
    - `conversation_name` string, nullable, required — Conversation name.
    - `created_at` string, date-time, required — Message creation timestamp.
    - `id` string, required — Message identifier.
    - `image_urls` string[], required — Image URLs extracted from the message.
    - `reactions` MessageReactionSummary[], required — Emoji reaction counts on the message.
      - `count` integer, required — Number of reactions for this emoji.
      - `emoji_text` string, required — Emoji text.
    - `replies_count` integer, required — Number of thread replies.
  - `id` string, required — Message identifier.
  - `image_urls` string[], required — Image URLs extracted from the message.
  - `reactions` MessageReactionSummary[], required — Emoji reaction counts on the message.
    - `count` integer, required — Number of reactions for this emoji.
    - `emoji_text` string, required — Emoji text.
  - `replies_count` integer, required — Number of thread replies.

## Other responses

- `400` — Bad request.
- `401` — Missing or invalid API key.
- `403` — Forbidden.
- `404` — Not found.
- `409` — Conflict.
- `429` — Rate limit or quota exceeded.
- `500` — Internal server error.

---

[API](https://skmtc.net/ando/apis/ando-public-api.md) · [All operations](https://skmtc.net/ando/apis/ando-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ando/ando-public-api/versions/db1553a00d68/schema)
