---
title: "View a single message body"
method: GET
path: "/messages/{message_id}"
tags: ["Messages and Notes"]
---

# View a single message body

`GET /messages/{message_id}`

## Request

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

View a single message body.

## Path parameters

- `message_id` string, required

## Response `200`

Success.

- MessageDetailResponse
  - `data` MessageDetail, required
    - `id` string
    - `html_body` string, nullable: HTML body, falling back to the text body.
    - `cc` string[], nullable
    - `bcc` string[], nullable
    - `extra` object, nullable
    - `created_at` string, date-time
    - `conversation` Conversation: A conversation (ticket) as returned in list responses (`GET /v1/conversations/mine`, `GET /v1/inboxes/{inbox_id}`).
      - `id` string
      - `inbox_id` string
      - `ticket_id` integer
      - `has_attachment` boolean
      - `has_inline_attachment` boolean
      - `is_draft` boolean
      - `is_scheduled` boolean
      - `is_snoozed` boolean
      - `active` boolean
      - `subject` string, nullable
      - `updated_subject` string, nullable
      - `status` 'Active' | 'Pending' | 'Closed'
      - `is_spam` boolean
      - `priority` 'High' | 'Medium' | 'Low'
      - `assignable_type` string, nullable: Polymorphic type of the assignee (a user or a team).
      - `assignable_id` string, nullable
      - `created_at` string, date-time
      - `updated_at` string, date-time
      - `deleted_at` string, date-time, nullable
      - `closed_at` string, date-time, nullable
      - `excerpt` string, nullable
      - `messages_count` integer, nullable
      - `last_message_created_at` string, date-time, nullable
      - `intended_inbox_address_id` string, nullable
      - `agents` string[]: IDs of agents assigned to the conversation.
      - `contact` Contact: A person who sends or receives messages.
        - `id` string
        - `name` string, nullable
        - `email` string, email
        - `avatar` string, uri, nullable
        - `company` string, nullable
        - `website` string, nullable
        - `job_title` string, nullable
        - `address` string, nullable
        - `should_display_image` boolean
        - `notes` string, nullable
        - `conversations_count` integer
      - `last_message` ConversationLastMessage: A compact view of the most recent message on a conversation.
        - `id` string
        - `cc` string[], nullable
        - `bcc` string[], nullable
        - `record_type` string
        - `status` string
        - `direction` string
        - `viewed_at` string, date-time, nullable
        - `created_at` string, date-time
        - `text_body` string, nullable
        - `excerpt` string, nullable
        - `html_body` string, nullable
        - `extra` object: Additional message metadata (free-form).
        - `is_clipped` boolean
        - `intended_inbox_address_id` string, nullable
      - `custom_field_values` object: Custom-field values keyed by field key (free-form).
      - `viewer_id` string, nullable
      - `viewed_at` string, nullable
      - `last_message_by` string, nullable
    - `contact` MessageContact: The contact on a message thread. This is the raw contact model (with `organization_id` and timestamps) rather than the contacts-endpoint resource, so it carries no `conversations_count`.
      - `id` string
      - `name` string, nullable
      - `email` string, email
      - `avatar` string, uri, nullable
      - `company` string, nullable
      - `website` string, nullable
      - `job_title` string, nullable
      - `address` string, nullable
      - `should_display_image` integer: 0 or 1.
      - `notes` string, nullable
      - `extra` object: Additional contact metadata (free-form).
      - `organization_id` string
      - `created_at` string, date-time
      - `updated_at` string, date-time
    - `inbox` InboxDetail: The full inbox model (with `extra`, `organization_id`, and the soft-delete timestamp), as embedded in a report or a single-message response. Differs from the list shape returned by `GET /v1/inboxes`.
      - `id` string
      - `name` string
      - `inbox_address` string
      - `connected_email_address` string, nullable
      - `email_forwarding_enabled` integer
      - `from_name` string, nullable
      - `default_status` string
      - `default_assignee` string
      - `signature` string, nullable
      - `auto_bcc_enabled` boolean
      - `auto_bcc` string, nullable
      - `auto_reply_enabled` boolean
      - `auto_reply_subject` string, nullable
      - `auto_reply_body` string, nullable
      - `off_hours_auto_reply_subject` string, nullable: Auto-reply used when the inbox is outside its business hours.
      - `off_hours_auto_reply_body` string, nullable
      - `satisfaction_ratings_enabled` boolean
      - `satisfaction_ratings` object: Satisfaction-ratings configuration and copy (free-form).
      - `extra` object: Additional inbox metadata (free-form).
      - `organization_id` string
      - `deleted_at` string, date-time, nullable
      - `created_at` string, date-time
      - `updated_at` string, date-time
      - `reply_as_alias` boolean
      - `insert_signature` integer

## Other responses

- `401`: Missing or invalid bearer token.
- `403`: Token is valid but does not include a required scope, or the user does not have access to the resource.
- `404`: Resource not found.
- `422`: Request body failed validation.
- `429`: Rate limit exceeded. The `Retry-After` header indicates how long to wait before retrying. See [Pagination and rate limits](/get-started/pagination) for the full rate-limit policy.
- `500`: Unexpected server error.

---

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