---
title: "List messages"
method: GET
path: "/messages"
tags: ["Messages"]
---

# List messages

`GET /messages`

Returns a paginated list of messages within a specific experience chat, DM, or group chat channel, sorted by creation time.

Required permissions:
 - `chat:read`

## Query parameters

- `after` string, nullable — Returns the elements in the list that come after the specified cursor.
- `before` string, nullable — Returns the elements in the list that come before the specified cursor.
- `first` integer, nullable — Returns the first _n_ elements from the list.
- `last` integer, nullable — Returns the last _n_ elements from the list.
- `channel_id` string, required — The unique identifier of the channel or experience to list messages for.
- `direction` 'asc' | 'desc' — The direction of the sort.

## Response `200`

A successful response

- object — The connection type for DmsPost.
  - `data` MessageListItem[], required — A list of nodes.
    - `content` string, nullable, required — The message content formatted as Markdown. Null if the message has no text content.
    - `created_at` string, date-time, required — The timestamp when this message was originally created.
    - `id` string, required — Represents a unique identifier that is Base64 obfuscated. It is often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"VXNlci0xMA=="`) or integer (such as `4`) input value will be accepted as an ID.
    - `is_edited` boolean, required — Whether the message content has been edited after it was originally sent.
    - `is_pinned` boolean, required — Whether this message is pinned to the top of the channel for easy access.
    - `mentions` string[], required — A list of user IDs that are explicitly mentioned in this message.
    - `mentions_everyone` boolean, required — Whether the message includes an @everyone mention that notifies all channel members.
    - `message_type` 'regular' | 'system' | 'automated', required — The types of post
    - `poll` object, nullable, required — A poll attached to this message. Null if the message does not contain a poll.
      - `options` object[], nullable, required — The options for the poll
        - `id` string, required — The unique identifier for the poll option.
        - `text` string, required — The text of the poll option
    - `poll_votes` object[], required — Aggregated reaction counts on this message, filtered to a specific reaction type.
      - `count` integer, required — The number of users who reacted
      - `option_id` string, nullable, required — The reaction that was used
    - `reaction_counts` object[], required — Aggregated reaction counts on this message, filtered to a specific reaction type.
      - `count` integer, required — The number of users who reacted
      - `emoji` string, nullable, required — The emoji that was used in shortcode format (:heart:)
    - `replying_to_message_id` string, nullable, required — The unique identifier of the message this post is replying to. Null if this is not a reply.
    - `updated_at` string, date-time, required — The timestamp when this message was last modified.
    - `user` object, required — The user who authored this message.
      - `id` string, required — The unique identifier for the user.
      - `name` string, nullable, required — The user's display name shown on their public profile.
      - `username` string, required — The user's unique username shown on their public profile.
    - `view_count` integer, nullable, required — The number of unique views this message has received. Null if view tracking is not enabled for this channel.
  - `page_info` PageInfo, required — Information about pagination in a connection.
    - `end_cursor` string, nullable, required — When paginating forwards, the cursor to continue.
    - `has_next_page` boolean, required — When paginating forwards, are there more items?
    - `has_previous_page` boolean, required — When paginating backwards, are there more items?
    - `start_cursor` string, nullable, required — When paginating backwards, the cursor to continue.

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `422` — Verification required
- `429` — Too many requests
- `500` — Internal server error

---

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