---
title: "List pinned messages"
method: GET
path: "/channels/{channel_id}/messages/pins"
tags: ["Channels"]
---

# List pinned messages

`GET /channels/{channel_id}/messages/pins`

Retrieves a paginated list of messages pinned in a channel. User must have permission to view the channel. Supports pagination via limit and before parameters. Returns pinned messages with their pin timestamps.

## Path parameters

- `channel_id` union, required
  - string, snowflake
  - integer

## Query parameters

- `limit` integer — Maximum number of pinned messages to return (1-50)
- `before` string — Get pinned messages before this timestamp

## Response `200`

Success

- ChannelPinsResponse
  - `items` ChannelPinResponse[], required — Pinned messages in this channel
    - `message` object, required — The pinned message
      - `id` string, snowflake, required
      - `channel_id` string, snowflake, required
      - `author` UserPartialResponse, required
        - `id` string, snowflake, required
        - `username` string, required — The username of the user, not unique across the platform
        - `discriminator` string, required — The four-digit discriminator tag of the user
        - `global_name` string, nullable, required — The display name of the user, if set
        - `avatar` string, nullable, required — The hash of the user avatar image
        - `avatar_color` integer, required
        - `bot` boolean — Whether the user is a bot account
        - `system` boolean — Whether the user is an official system user
        - `flags` integer, required — The public flags on the user account
        - `mention_flags` 0 | 1 | 2 — Reply mention preference
      - `webhook_id` string, snowflake
      - `type` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19, required — The type of message
      - `flags` integer, required — The bitwise flags of the original message
      - `content` string, required — The text content of the message
      - `timestamp` string, date-time, required — The ISO 8601 timestamp of when the message was created
      - `edited_timestamp` string, date-time, nullable — The ISO 8601 timestamp of when the message was last edited
      - `pinned` boolean, required — Whether the message is pinned
      - `mention_everyone` boolean, required — Whether the message mentions @everyone
      - `tts` boolean, required — Whether the message was sent as text-to-speech
      - `mentions` UserPartialResponse[], required — The users mentioned in the message
        - `id` string, snowflake, required
        - `username` string, required — The username of the user, not unique across the platform
        - `discriminator` string, required — The four-digit discriminator tag of the user
        - `global_name` string, nullable, required — The display name of the user, if set
        - `avatar` string, nullable, required — The hash of the user avatar image
        - `avatar_color` integer, required
        - `bot` boolean — Whether the user is a bot account
        - `system` boolean — Whether the user is an official system user
        - `flags` integer, required — The public flags on the user account
        - `mention_flags` 0 | 1 | 2 — Reply mention preference
      - `mention_roles` string[], required — The role IDs mentioned in the message
      - `mention_channels` MessageChannelMentionResponse[], nullable — Channels mentioned in the message that are visible to @everyone
        - `id` string, snowflake, required
        - `name` string, required — The name of the mentioned channel
        - `type` integer, required
      - `users` UserPartialResponse[], nullable — Users referenced from non-notifying content, embed, and snapshot text, included for client-side resolution
        - `id` string, snowflake, required
        - `username` string, required — The username of the user, not unique across the platform
        - `discriminator` string, required — The four-digit discriminator tag of the user
        - `global_name` string, nullable, required — The display name of the user, if set
        - `avatar` string, nullable, required — The hash of the user avatar image
        - `avatar_color` integer, required
        - `bot` boolean — Whether the user is a bot account
        - `system` boolean — Whether the user is an official system user
        - `flags` integer, required — The public flags on the user account
        - `mention_flags` 0 | 1 | 2 — Reply mention preference
      - `embeds` MessageEmbedResponse[], nullable — The embeds attached to the message
        - `type` string, required — The type of embed (e.g., rich, image, video, gifv, article, link)
        - `url` string, uri, nullable — The URL of the embed
        - `title` string, nullable — The title of the embed
        - `color` integer
        - `timestamp` string, date-time, nullable — The ISO 8601 timestamp of the embed content
        - `description` string, nullable — The description of the embed
        - `author` EmbedAuthorResponse
          - `name` string, required — The name of the author
          - `url` string, uri, nullable — The URL of the author
          - `icon_url` string, uri, nullable — The URL of the author icon
          - `proxy_icon_url` string, uri, nullable — The proxied URL of the author icon
        - `image` EmbedMediaResponse
          - `url` string, required — The URL of the media
          - `proxy_url` string, uri, nullable — The proxied URL of the media
          - `content_type` string, nullable — The MIME type of the media
          - `content_hash` string, nullable — The hash of the media content
          - `width` integer
          - `height` integer
          - `description` string, nullable — The description of the media
          - `placeholder` string, nullable — The base64 encoded placeholder image for lazy loading
          - `duration` integer
          - `flags` integer, required — The bitwise flags for this media
        - `thumbnail` EmbedMediaResponse
          - `url` string, required — The URL of the media
          - `proxy_url` string, uri, nullable — The proxied URL of the media
          - `content_type` string, nullable — The MIME type of the media
          - `content_hash` string, nullable — The hash of the media content
          - `width` integer
          - `height` integer
          - `description` string, nullable — The description of the media
          - `placeholder` string, nullable — The base64 encoded placeholder image for lazy loading
          - `duration` integer
          - `flags` integer, required — The bitwise flags for this media
        - `footer` EmbedFooterResponse
          - `text` string, required — The footer text
          - `icon_url` string, uri, nullable — The URL of the footer icon
          - `proxy_icon_url` string, uri, nullable — The proxied URL of the footer icon
        - `fields` EmbedFieldResponse[], nullable — The fields of the embed
          - `name` string, required — The name of the field
          - `value` string, required — The value of the field
          - `inline` boolean, required — Whether the field should be displayed inline
        - `provider` EmbedAuthorResponse
          - `name` string, required — The name of the author
          - `url` string, uri, nullable — The URL of the author
          - `icon_url` string, uri, nullable — The URL of the author icon
          - `proxy_icon_url` string, uri, nullable — The proxied URL of the author icon
        - `video` EmbedMediaResponse
          - `url` string, required — The URL of the media
          - `proxy_url` string, uri, nullable — The proxied URL of the media
          - `content_type` string, nullable — The MIME type of the media
          - `content_hash` string, nullable — The hash of the media content
          - `width` integer
          - `height` integer
          - `description` string, nullable — The description of the media
          - `placeholder` string, nullable — The base64 encoded placeholder image for lazy loading
          - `duration` integer
          - `flags` integer, required — The bitwise flags for this media
        - `audio` EmbedMediaResponse
          - `url` string, required — The URL of the media
          - `proxy_url` string, uri, nullable — The proxied URL of the media
          - `content_type` string, nullable — The MIME type of the media
          - `content_hash` string, nullable — The hash of the media content
          - `width` integer
          - `height` integer
          - `description` string, nullable — The description of the media
          - `placeholder` string, nullable — The base64 encoded placeholder image for lazy loading
          - `duration` integer
          - `flags` integer, required — The bitwise flags for this media
        - `html` string, nullable — Sanitized oEmbed HTML for trusted specialized embed renderers
        - `html_width` integer
        - `html_height` integer
        - `nsfw` boolean, nullable — Whether the embed is flagged as NSFW
        - `children` MessageEmbedChildResponse[], nullable — Internal nested embeds generated by unfurlers
          - `type` string, required — The type of embed (e.g., rich, image, video, gifv, article, link)
          - `url` string, uri, nullable — The URL of the embed
          - `title` string, nullable — The title of the embed
          - `color` integer
          - `timestamp` string, date-time, nullable — The ISO 8601 timestamp of the embed content
          - `description` string, nullable — The description of the embed
          - `author` EmbedAuthorResponse
            - `name` string, required — The name of the author
            - `url` string, uri, nullable — The URL of the author
            - `icon_url` string, uri, nullable — The URL of the author icon
            - `proxy_icon_url` string, uri, nullable — The proxied URL of the author icon
          - `image` EmbedMediaResponse
            - `url` string, required — The URL of the media
            - `proxy_url` string, uri, nullable — The proxied URL of the media
            - `content_type` string, nullable — The MIME type of the media
            - `content_hash` string, nullable — The hash of the media content
            - `width` integer
            - `height` integer
            - `description` string, nullable — The description of the media
            - `placeholder` string, nullable — The base64 encoded placeholder image for lazy loading
            - `duration` integer
            - `flags` integer, required — The bitwise flags for this media
          - `thumbnail` EmbedMediaResponse
            - `url` string, required — The URL of the media
            - `proxy_url` string, uri, nullable — The proxied URL of the media
            - `content_type` string, nullable — The MIME type of the media
            - `content_hash` string, nullable — The hash of the media content
            - `width` integer
            - `height` integer
            - `description` string, nullable — The description of the media
            - `placeholder` string, nullable — The base64 encoded placeholder image for lazy loading
            - `duration` integer
            - `flags` integer, required — The bitwise flags for this media
          - `footer` EmbedFooterResponse
            - `text` string, required — The footer text
            - `icon_url` string, uri, nullable — The URL of the footer icon
            - `proxy_icon_url` string, uri, nullable — The proxied URL of the footer icon
          - `fields` EmbedFieldResponse[], nullable — The fields of the embed
            - `name` string, required — The name of the field
            - `value` string, required — The value of the field
            - `inline` boolean, required — Whether the field should be displayed inline
          - `provider` EmbedAuthorResponse
            - `name` string, required — The name of the author
            - `url` string, uri, nullable — The URL of the author
            - `icon_url` string, uri, nullable — The URL of the author icon
            - `proxy_icon_url` string, uri, nullable — The proxied URL of the author icon
          - `video` EmbedMediaResponse
            - `url` string, required — The URL of the media
            - `proxy_url` string, uri, nullable — The proxied URL of the media
            - `content_type` string, nullable — The MIME type of the media
            - `content_hash` string, nullable — The hash of the media content
            - `width` integer
            - `height` integer
            - `description` string, nullable — The description of the media
            - `placeholder` string, nullable — The base64 encoded placeholder image for lazy loading
            - `duration` integer
            - `flags` integer, required — The bitwise flags for this media
          - `audio` EmbedMediaResponse
            - `url` string, required — The URL of the media
            - `proxy_url` string, uri, nullable — The proxied URL of the media
            - `content_type` string, nullable — The MIME type of the media
            - `content_hash` string, nullable — The hash of the media content
            - `width` integer
            - `height` integer
            - `description` string, nullable — The description of the media
            - `placeholder` string, nullable — The base64 encoded placeholder image for lazy loading
            - `duration` integer
            - `flags` integer, required — The bitwise flags for this media
          - `html` string, nullable — Sanitized oEmbed HTML for trusted specialized embed renderers
          - `html_width` integer
          - `html_height` integer
          - `nsfw` boolean, nullable — Whether the embed is flagged as NSFW
      - `attachments` MessageAttachmentResponse[], nullable — The files attached to the message
        - `id` string, snowflake, required
        - `filename` string, required — The name of the attached file
        - `title` string, nullable — The title of the attachment
        - `description` string, nullable — The description of the attachment
        - `content_type` string, nullable — The MIME type of the attachment
        - `content_hash` string, nullable — The hash of the attachment content
        - `size` integer, required
        - `url` string, nullable — The URL of the attachment
        - `proxy_url` string, nullable — The proxied URL of the attachment
        - `width` integer
        - `height` integer
        - `placeholder` string, nullable — The base64 encoded placeholder image for lazy loading
        - `flags` integer, required — The bitwise flags for this attachment
        - `nsfw` boolean, nullable — Whether the attachment is flagged as NSFW
        - `duration` integer
        - `waveform` string, nullable — The base64 encoded audio waveform data
        - `expires_at` string, nullable — The ISO 8601 timestamp when the attachment URL expires
        - `expired` boolean, nullable — Whether the attachment URL has expired
      - `stickers` MessageStickerResponse[], nullable — The stickers sent with the message
        - `id` string, snowflake, required
        - `name` string, required — The name of the sticker
        - `animated` boolean, required — Whether the sticker is animated
      - `message_reference` object, nullable — Reference data for replies or forwards
        - `channel_id` string, snowflake, required
        - `message_id` string, snowflake, required
        - `guild_id` string, snowflake
        - `type` 0 | 1, required — The type of message reference
      - `message_snapshots` MessageSnapshotResponse[], nullable — Snapshots of forwarded messages
        - `content` string, nullable — The text content of the snapshot
        - `timestamp` string, date-time, required — The ISO 8601 timestamp of when the original message was created
        - `edited_timestamp` string, date-time, nullable — The ISO 8601 timestamp of when the original message was last edited
        - `mentions` string[], nullable — The user IDs mentioned in the snapshot
        - `mention_roles` string[], nullable — The role IDs mentioned in the snapshot
        - `mention_channels` MessageChannelMentionResponse[], nullable — Channels mentioned in the snapshot that are visible to @everyone
          - `id` string, snowflake, required
          - `name` string, required — The name of the mentioned channel
          - `type` integer, required
        - `embeds` MessageEmbedResponse[], nullable — The embeds included in the snapshot
          - `type` string, required — The type of embed (e.g., rich, image, video, gifv, article, link)
          - `url` string, uri, nullable — The URL of the embed
          - `title` string, nullable — The title of the embed
          - `color` integer
          - `timestamp` string, date-time, nullable — The ISO 8601 timestamp of the embed content
          - `description` string, nullable — The description of the embed
          - `author` EmbedAuthorResponse
            - `name` string, required — The name of the author
            - `url` string, uri, nullable — The URL of the author
            - `icon_url` string, uri, nullable — The URL of the author icon
            - `proxy_icon_url` string, uri, nullable — The proxied URL of the author icon
          - `image` EmbedMediaResponse
            - `url` string, required — The URL of the media
            - `proxy_url` string, uri, nullable — The proxied URL of the media
            - `content_type` string, nullable — The MIME type of the media
            - `content_hash` string, nullable — The hash of the media content
            - `width` integer
            - `height` integer
            - `description` string, nullable — The description of the media
            - `placeholder` string, nullable — The base64 encoded placeholder image for lazy loading
            - `duration` integer
            - `flags` integer, required — The bitwise flags for this media
          - `thumbnail` EmbedMediaResponse
            - `url` string, required — The URL of the media
            - `proxy_url` string, uri, nullable — The proxied URL of the media
            - `content_type` string, nullable — The MIME type of the media
            - `content_hash` string, nullable — The hash of the media content
            - `width` integer
            - `height` integer
            - `description` string, nullable — The description of the media
            - `placeholder` string, nullable — The base64 encoded placeholder image for lazy loading
            - `duration` integer
            - `flags` integer, required — The bitwise flags for this media
          - `footer` EmbedFooterResponse
            - `text` string, required — The footer text
            - `icon_url` string, uri, nullable — The URL of the footer icon
            - `proxy_icon_url` string, uri, nullable — The proxied URL of the footer icon
          - `fields` EmbedFieldResponse[], nullable — The fields of the embed
            - `name` string, required — The name of the field
            - `value` string, required — The value of the field
            - `inline` boolean, required — Whether the field should be displayed inline
          - `provider` EmbedAuthorResponse
            - `name` string, required — The name of the author
            - `url` string, uri, nullable — The URL of the author
            - `icon_url` string, uri, nullable — The URL of the author icon
            - `proxy_icon_url` string, uri, nullable — The proxied URL of the author icon
          - `video` EmbedMediaResponse
            - `url` string, required — The URL of the media
            - `proxy_url` string, uri, nullable — The proxied URL of the media
            - `content_type` string, nullable — The MIME type of the media
            - `content_hash` string, nullable — The hash of the media content
            - `width` integer
            - `height` integer
            - `description` string, nullable — The description of the media
            - `placeholder` string, nullable — The base64 encoded placeholder image for lazy loading
            - `duration` integer
            - `flags` integer, required — The bitwise flags for this media
          - `audio` EmbedMediaResponse
            - `url` string, required — The URL of the media
            - `proxy_url` string, uri, nullable — The proxied URL of the media
            - `content_type` string, nullable — The MIME type of the media
            - `content_hash` string, nullable — The hash of the media content
            - `width` integer
            - `height` integer
            - `description` string, nullable — The description of the media
            - `placeholder` string, nullable — The base64 encoded placeholder image for lazy loading
            - `duration` integer
            - `flags` integer, required — The bitwise flags for this media
          - `html` string, nullable — Sanitized oEmbed HTML for trusted specialized embed renderers
          - `html_width` integer
          - `html_height` integer
          - `nsfw` boolean, nullable — Whether the embed is flagged as NSFW
          - `children` MessageEmbedChildResponse[], nullable — Internal nested embeds generated by unfurlers
            - `type` string, required — The type of embed (e.g., rich, image, video, gifv, article, link)
            - `url` string, uri, nullable — The URL of the embed
            - `title` string, nullable — The title of the embed
            - `color` integer
            - `timestamp` string, date-time, nullable — The ISO 8601 timestamp of the embed content
            - `description` string, nullable — The description of the embed
            - `author` EmbedAuthorResponse
              - …
            - `image` EmbedMediaResponse
              - …
            - `thumbnail` EmbedMediaResponse
              - …
            - `footer` EmbedFooterResponse
              - …
            - `fields` EmbedFieldResponse[], nullable — The fields of the embed
              - …
            - `provider` EmbedAuthorResponse
              - …
            - `video` EmbedMediaResponse
              - …
            - `audio` EmbedMediaResponse
              - …
            - `html` string, nullable — Sanitized oEmbed HTML for trusted specialized embed renderers
            - `html_width` integer
            - `html_height` integer
            - `nsfw` boolean, nullable — Whether the embed is flagged as NSFW
        - `attachments` MessageAttachmentResponse[], nullable — The attachments included in the snapshot
          - `id` string, snowflake, required
          - `filename` string, required — The name of the attached file
          - `title` string, nullable — The title of the attachment
          - `description` string, nullable — The description of the attachment
          - `content_type` string, nullable — The MIME type of the attachment
          - `content_hash` string, nullable — The hash of the attachment content
          - `size` integer, required
          - `url` string, nullable — The URL of the attachment
          - `proxy_url` string, nullable — The proxied URL of the attachment
          - `width` integer
          - `height` integer
          - `placeholder` string, nullable — The base64 encoded placeholder image for lazy loading
          - `flags` integer, required — The bitwise flags for this attachment
          - `nsfw` boolean, nullable — Whether the attachment is flagged as NSFW
          - `duration` integer
          - `waveform` string, nullable — The base64 encoded audio waveform data
          - `expires_at` string, nullable — The ISO 8601 timestamp when the attachment URL expires
          - `expired` boolean, nullable — Whether the attachment URL has expired
        - `stickers` MessageStickerResponse[], nullable — The stickers included in the snapshot
          - `id` string, snowflake, required
          - `name` string, required — The name of the sticker
          - `animated` boolean, required — Whether the sticker is animated
        - `type` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19, required — The type of message
        - `flags` integer, required — The bitwise flags of the original message
      - `nonce` string, nullable — A client-provided value for message deduplication
      - `call` object, nullable — Call information if this message represents a call
        - `participants` string[], required — The user IDs of participants in the call
        - `ended_timestamp` string, date-time, nullable — The ISO 8601 timestamp of when the call ended
    - `pinned_at` string, date-time, required — The ISO 8601 timestamp of when the message was pinned
  - `has_more` boolean, required — Whether more pins can be fetched with pagination

## Other responses

- `400` — Bad Request - The request was malformed or contained invalid data
- `401` — Unauthorized - Authentication is required or the token is invalid
- `403` — Forbidden - You do not have permission to perform this action
- `429` — Too Many Requests - You are being rate limited
- `500` — Internal Server Error - An unexpected error occurred

## Changes

> 9 revisions in range; 1 not diffed.

- **2026-09-06** `a52a2cf49d9b` — 32 warning, 200 info
  - added the new `IP_BAN_DECLINED` enum value to the `code` response property for the response status `400`
  - added the new `IP_BAN_DECLINED` enum value to the `code` response property for the response status `401`
  - added the new `IP_BAN_DECLINED` enum value to the `code` response property for the response status `403`
  - added the new `IP_BAN_DECLINED` enum value to the `code` response property for the response status `500`
  - …228 more
  - …this revision’s changelog is incomplete
- **2026-09-05** `4dbb738a3e22` — 3 warning, 4 info
  - removed the optional property `items/items/message/message_snapshots/anyOf[subschema #1]/items/stickers/anyOf[subschema #1]/items/nsfw` from the response with the `200` status
  - removed the optional property `items/items/message/nsfw_emojis` from the response with the `200` status
  - removed the optional property `items/items/message/stickers/anyOf[subschema #1]/items/nsfw` from the response with the `200` status
  - removed the `NSFW_EMOJI_STICKER_BLOCKED` enum value from the `code` response property for the response status `400`
  - …3 more
- …earlier changes not shown

[Full history](https://skmtc.dev/fluxer/apis/fluxer-api/changes/channels/:channel_id/messages/pins/get.md)

---

[API](https://skmtc.dev/fluxer/apis/fluxer-api.md) · [All operations](https://skmtc.dev/fluxer/apis/fluxer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fluxer/apis/fluxer-api/revisions/964e23cbdfa5?raw)
