---
title: "Pin message"
method: POST
path: "/v1/messages/{messageId}/pin"
tags: ["stream-chat"]
---

# Pin message

`POST /v1/messages/{messageId}/pin`

## Request

- Base URL: `https://lpad-backend.stage.defi.ovh.gala.com`
- URL: `https://lpad-backend.stage.defi.ovh.gala.com/v1/messages/{messageId}/pin`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer
- TypeScript: <https://skmtc.dev/gala/apis/launchpad-backend-api/docs/v1/messages/:messageId/pin/post.ts> (a function with typed inputs; its response is checked against the schema)

Pin a message to the top (requires MANAGE_STREAM_SETTINGS permission)

## Path parameters

- `messageId` string, required

## Response `200`

Message pinned successfully - previous pinned message automatically unpinned

- PinMessageSuccessEnvelopeDto
  - `data` PinnedMessageResponseDto, required
    - `content` string, required
    - `holderTier` MessageHolderTierResponseDto
      - `tier` 0 | 1 | 2 | 3 | 4 | 5, required
      - `tierName` string, required
    - `messageId` string, required
    - `pinnedAt` string, date-time, required
    - `pinnedBy` string, required
    - `user` MessageUserProfileResponseDto
      - `bio` string, nullable
      - `createdAt` string, date-time
      - `engagementBadge` union
        - 'SPARK' | 'GATHERING' | 'CROWD' | 'MOVEMENT'
        - unknown
      - `fullName` string, nullable, required
      - `launchBadge` union
        - 'ONE_HIT_WONDER' | 'TOKEN_CRAFTER' | 'CRYPTO_SAVVY' | 'CRYPTO_PRO' | 'MIDAS_TOUCH'
        - unknown
      - `profileImage` string, nullable, required
      - `successBadge` union
        - '250k' | '1M' | '10M+'
        - unknown
      - `volumeBadge` union
        - '1k' | '10k' | '100k' | '1M+'
        - unknown
    - `userAddress` string, required
  - `error` false, required
  - `message` string, required
  - `status` number, required

## Other responses

- `401`: Unauthorized - missing or invalid JWT token
- `403`: Forbidden - user lacks MANAGE_STREAM_SETTINGS permission
- `404`: Message not found - messageId does not exist
- `500`: Internal server error - failed to pin message in database or broadcast via WebSocket
- `default`: Shared error envelope for authentication, authorization, and pinning failures.

---

[API](https://skmtc.dev/gala/apis/launchpad-backend-api.md) - [All operations](https://skmtc.dev/gala/apis/launchpad-backend-api/llms.txt) - [OpenAPI document](https://skmtc.dev/gala/apis/launchpad-backend-api/revisions/74545971be2b?raw)
