---
title: "React or unreact to a conversation message"
method: POST
path: "/api/v1/conversations/{id}/messages/{messageId}/reaction"
tags: ["conversation"]
---

# React or unreact to a conversation message

`POST /api/v1/conversations/{id}/messages/{messageId}/reaction`

## Request

- Base URL: `https://api.bundle.social`
- URL: `https://api.bundle.social/api/v1/conversations/{id}/messages/{messageId}/reaction`
- Auth: API key in header `x-api-key`

Add or remove a reaction on a message in a conversation. Returns 503 while messaging sending is temporarily disabled.

## Path parameters

- `id` string, required
- `messageId` string, required

## Request body

- object
  - `action` 'REACT' | 'UNREACT', required
  - `reaction` 'love' | 'like' | 'dislike' | 'haha' | 'wow' | 'sad' | 'angry'

## Response `200`

200

- object
  - `conversation` object, required
    - `id` string, required
    - `teamId` string, required
    - `socialAccountId` string, required
    - `platform` 'INSTAGRAM' | 'FACEBOOK', required: Messaging platform. Extensible: new platforms are added over time, so handle unknown values gracefully rather than switching exhaustively.
    - `externalConversationId` string, nullable
    - `externalParticipantId` string, required
    - `participantUsername` string, nullable
    - `participantDisplayName` string, nullable
    - `participantAvatarUrl` string, nullable
    - `status` 'OPEN' | 'ARCHIVED', required
    - `lastMessageAt` string, date-time, nullable
    - `lastActivityAt` string, date-time, nullable, required
    - `lastMessagePreview` string, nullable
    - `lastReadAt` string, date-time, nullable
    - `unreadCount` number, required
    - `platformSeenAt` string, date-time, nullable
    - `createdAt` string, date-time, nullable, required
    - `updatedAt` string, date-time, nullable, required
    - `platformData` object
      - `canReply` boolean, nullable
      - `lastInboundAt` string, date-time, nullable
      - `providerStateSync` object, nullable
        - `action` 'ARCHIVE' | 'OPEN', required
        - `status` 'SYNCED' | 'SYNC_FAILED' | 'UNSUPPORTED', required
        - `reason` string, nullable
        - `error` string, nullable
        - `syncedAt` string, date-time, nullable
    - `socialAccount` object
      - `id` string, required
      - `type` 'TIKTOK' | 'YOUTUBE' | 'INSTAGRAM' | 'FACEBOOK' | 'TWITTER' | 'THREADS' | 'LINKEDIN' | 'PINTEREST' | 'REDDIT' | 'MASTODON' | 'DISCORD' | 'SLACK' | 'BLUESKY' | 'GOOGLE_BUSINESS' | 'SNAPCHAT', required
      - `teamId` string, required
      - `username` string, nullable
      - `displayName` string, nullable
      - `bio` string, nullable
      - `avatarUrl` string, nullable
      - `externalId` string, nullable
      - `providerPageId` string, nullable
      - `userUsername` string, nullable
      - `userDisplayName` string, nullable
      - `userEmail` string, nullable
      - `userId` string, nullable
      - `channels` object[], nullable
        - `id` string, required
        - `name` string, nullable
        - `username` string, nullable
        - `address` string, nullable
        - `avatarUrl` string, nullable
        - `webhook` object, nullable
          - `id` string, nullable
          - `name` string, nullable
          - `avatar` string, nullable
          - `url` string, nullable
        - `metadata` object, nullable
          - `allowImages` boolean, nullable
          - `allowVideos` boolean, nullable
          - `allowGalleries` boolean, nullable
          - `linkFlairEnabled` boolean, nullable
          - `facebookPageId` string, nullable
      - `mastodonServerId` string, nullable
      - `instagramConnectionMethod` 'FACEBOOK' | 'INSTAGRAM', nullable
      - `twitterSubType` 'none' | 'basic' | 'premium' | 'premium_plus', nullable
      - `isTiktokBusinessAccount` boolean, nullable
      - `disconnectedCheckTryAt` string, date-time, nullable
      - `deleteOn` string, date-time, nullable
      - `messagingStatus` 'DISABLED' | 'ENABLED' | 'DISABLE_PENDING'
      - `messagingStatusUpdatedAt` string, date-time, nullable
      - `messagingLastError` string, nullable
      - `createdAt` string, date-time, nullable, required
      - `updatedAt` string, date-time, nullable, required
      - `deletedAt` string, date-time, nullable
  - `message` object, required
    - `id` string, required
    - `conversationId` string, required
    - `teamId` string, required
    - `socialAccountId` string, required
    - `platform` 'INSTAGRAM' | 'FACEBOOK', required: Messaging platform. Extensible: new platforms are added over time, so handle unknown values gracefully rather than switching exhaustively.
    - `direction` 'INBOUND' | 'OUTBOUND', required
    - `status` 'PENDING' | 'SENT' | 'DELIVERED' | 'SEEN' | 'FAILED', required
    - `source` 'PRIVATE_REPLY' | 'DM' | 'WEBHOOK' | 'API' | 'ECHO', required
    - `externalMessageId` string, nullable
    - `text` string, nullable
    - `attachments` object[]
      - `type` 'IMAGE' | 'VIDEO' | 'AUDIO' | 'FILE' | 'POST' | 'STORY_MENTION' | 'UNKNOWN', required
      - `url` string, nullable
      - `externalId` string, nullable
      - `mimeType` string, nullable
      - `name` string, nullable
      - `captionTrackUrl` string, nullable
      - `captionLanguage` string, nullable
      - `captionLabel` string, nullable
    - `sentAt` string, date-time, nullable
    - `failedAt` string, date-time, nullable
    - `error` string, nullable
    - `seenAt` string, date-time, nullable
    - `replyTo` object, nullable
      - `externalMessageId` string, nullable
      - `isSelfReply` boolean, nullable
      - `messageId` string, nullable
    - `privateReplyContext` object, nullable
      - `fetchedCommentId` string, required
      - `externalCommentId` string, nullable
      - `text` string, nullable
      - `authorName` string, nullable
      - `authorAvatarUrl` string, nullable
      - `publishedAt` string, date-time, nullable
      - `postId` string, nullable
      - `externalPostId` string, nullable
      - `postPermalink` string, nullable
      - `postThumbnailUrl` string, nullable
    - `createdAt` string, date-time, nullable, required
    - `updatedAt` string, date-time, nullable, required
    - `platformData` object
      - `replyTo` object, nullable
        - `externalMessageId` string, nullable
        - `isSelfReply` boolean, nullable
      - `storyReply` object, nullable
        - `storyId` string, nullable
        - `url` string, nullable
        - `linkStickerUrl` string, nullable
      - `reactions` object[]
        - `senderId` string, required
        - `reaction` string, nullable
        - `emoji` string, nullable
        - `reactedAt` string, date-time, nullable
      - `quickReplies` object[]
        - `id` string
        - `label` string, required
        - `payload` string, required
      - `buttons` union[]
        - union
          - object
            - `id` string
            - `type` 'POSTBACK', required
            - `label` string, required
            - `payload` string, required
          - object
            - `id` string
            - `type` 'URL', required
            - `label` string, required
            - `url` string, uri, required
          - object
            - `id` string
            - `type` 'PHONE', required
            - `label` string, required
            - `phoneNumber` string, required
      - `carousel` object, nullable
        - `cards` object[], required
          - `id` string
          - `title` string, required
          - `subtitle` string, nullable
          - `imageUrl` string, uri, nullable
          - `buttons` union[]
            - union
              - …
      - `isEcho` boolean, nullable
      - `isEdited` boolean, nullable
      - `editedAt` string, date-time, nullable
      - `isPostback` boolean, nullable
      - `postbackPayload` string, nullable
      - `isUnsent` boolean, nullable
      - `unsentAt` string, date-time, nullable
  - `conflict` boolean

## Other responses

- `400`: 400
- `401`: 401
- `403`: 403
- `404`: 404
- `429`: 429
- `500`: 500
- `502`: 502
- `503`: 503
- `504`: 504

## Changes

- **2026-11-03** `fb6e4fbd8d2f`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/bundle/apis/bundle-social-api/changes/api/v1/conversations/:id/messages/:messageId/reaction/post.md)

---

[API](https://skmtc.dev/bundle/apis/bundle-social-api.md) - [All operations](https://skmtc.dev/bundle/apis/bundle-social-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bundle/apis/bundle-social-api/revisions/18efa1cb93a4?raw)
