---
title: "Get messages on an issue"
method: GET
path: "/issues/{id}/messages"
tags: ["messages"]
---

# Get messages on an issue

`GET /issues/{id}/messages`

Returns messages for the specified issue, including replies and internal notes, ordered from oldest to newest.

Use these messages when posting a reply or internal note:

* To post a reply, choose a customer-visible message where is_private is false and pass its top-level id as message_id to POST /issues/{id}/reply.

* To post an internal note to an existing internal thread, choose an internal note where is_private is true. Pass its thread_id as thread_id, or its top-level id as message_id, to POST /issues/{id}/note.

* Do not use email_info.message_id for either operation. It is the email's RFC 5322 Message-ID header, not the Pylon message ID.

Pagination:

* Omit both limit and cursor to return all messages for backward compatibility.

* Set limit from 1 to 1000 to paginate the results.

* If cursor is provided without limit, the page size defaults to 100.

* While pagination.has_next_page is true, pass pagination.cursor as cursor in the next request.

**Rate limit:** 20 requests per minute

## Path parameters

- `id` string, required

## Query parameters

- `cursor` string
- `limit` integer

## Response `200`

- GetIssueMessagesResponseBody
  - `data` Message[] — The data payload of the response.
    - `author` MessageAuthor
      - `avatar_url` string
      - `contact` MiniContact
        - `email` string — The email of the contact.
        - `id` string — The ID of the contact.
      - `name` string
      - `user` MiniUser
        - `email` string — The email of the user.
        - `id` string — The ID of the user.
    - `email_info` EmailMessageInfo
      - `bcc_emails` string[] — The email addresses of the BCC recipients of the message.
      - `cc_emails` string[] — The email addresses of the CC recipients of the message.
      - `from_email` string — The email address of the sender of the message.
      - `message_id` string — The RFC 5322 Message-ID header value for this email. This is a provider-specific identifier, not the top-level Pylon message ID, and cannot be used as message_id when posting a reply or internal note.
      - `to_emails` string[] — The email addresses of the recipients of the message.
    - `file_urls` string[] — The URLs of the files in the message, if any.
    - `id` string — The top-level Pylon message ID. Use this value as message_id when replying or when targeting an internal note's thread.
    - `is_private` boolean — Whether the message is an internal note. If true, the message is not visible to the requester; if false, it is customer-visible.
    - `message_html` string — The HTML body of the message.
    - `source` string — The source of the message.
    - `thread_id` string — The Pylon internal thread ID. This is set only for internal notes and can be passed as thread_id when creating an internal note.
    - `timestamp` string — The time at which the message was created.
  - `pagination` Pagination
    - `cursor` string, required — The cursor for the next page of results.
    - `has_next_page` boolean, required — Indicates if there is a next page of results.
  - `request_id` string — The request ID for tracking.

## Other responses

- `400` — The request was invalid or could not be completed.
- `404`
- `500` — An unexpected internal error occurred.

---

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