---
title: "Get thread messages for a conversation"
method: GET
path: "/conversation/{conversation_id}/messages"
tags: ["Conversations"]
---

# Get thread messages for a conversation

`GET /conversation/{conversation_id}/messages`

## Request

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

Get thread messages for a conversation.

## Path parameters

- `conversation_id` string, required

## Query parameters

- `event_id` string

## Response `200`

Success.

- MessagesResponse
  - `event` ThreadEvent[]: Thread events, oldest first. When the `event_id` query parameter is given, this is a single event object instead of an array.
    - `id` string
    - `action` string: The kind of thread event (e.g. `started`, `conversation_contact_changed`).
    - `created_at` string, date-time
    - `event_id` string, nullable
    - `event_type` string, nullable: Polymorphic type of the linked event record, when present.
    - `event` Message: A full message record, embedded as the `event` of a message thread event.
      - `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).
      - `downloadable_attachments` object[]: Attachments on the message, with direct and API download URLs.
        - `id` string
        - `name` string
        - `size` integer
        - `url` string, uri
        - `download_url` string, uri
      - `is_clipped` boolean
      - `intended_inbox_address_id` string, nullable
    - `actor_id` string, nullable
    - `actor_type` string, nullable: Polymorphic type of the actor (a user or a contact).
    - `actor` Actor: A compact identity (user or contact) that performed an action or authored content.
      - `id` string
      - `name` string, nullable
      - `email` string, email, nullable
      - `avatar` string, uri, nullable
    - `extra` object: Event-specific metadata that varies by action (free-form).
    - `conversation_id` string
  - `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` string, nullable: Email address of the conversation's inbox.
  - `subject` string, nullable
  - `ticket_id` 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)
