---
title: "Add a reaction to a message"
method: POST
path: "/v2/messages/{messageId}/reactions"
tags: ["Messages"]
---

# Add a reaction to a message

`POST /v2/messages/{messageId}/reactions`

## Request

- Base URL: `https://api.zenzap.co`
- URL: `https://api.zenzap.co/v2/messages/{messageId}/reactions`
- Auth: one of:
  - HTTP bearer and API key in header `X-Signature`
  - OAuth 2
    - Client credentials
    - Token URL: `https://api.zenzap.co/oauth/token` scopes: `reaction:write`
- TypeScript: <https://skmtc.dev/zenzap/apis/zenzap-external-integration-api/docs/v2/messages/:messageId/reactions/post.ts> (a function with typed inputs; its response is checked against the schema)

Add an emoji reaction to a message. The bot must be a member of the channel.

This endpoint is idempotent per `{messageId, bot, reaction}`:
- Returns `201` when a new reaction is created
- Returns `200` when the same reaction already exists for this bot

## Path parameters

- `messageId` string, uuid, required

## Headers

- `X-Signature` string
- `X-Timestamp` integer

## Request body

- MessageReactionCreateRequest
  - `reaction` string, required: Emoji reaction to add

## Response `200`

Reaction already existed

- MessageReactionCreateResponse
  - `id` string, uuid: Reaction ID
  - `messageId` string, uuid: Message ID the reaction belongs to
  - `reaction` string: The reaction emoji
  - `createdAt` integer: Unix timestamp in milliseconds

## Other responses

- `201`: Reaction created successfully
- `400`: Bad request - invalid input
- `401`: Unauthorized - invalid or missing API token
- `403`: Forbidden - you do not have permission to perform this action
- `404`: Resource not found
- `500`: Internal server error

---

[API](https://skmtc.dev/zenzap/apis/zenzap-external-integration-api.md) - [All operations](https://skmtc.dev/zenzap/apis/zenzap-external-integration-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zenzap/apis/zenzap-external-integration-api/revisions/37faae2c2036?raw)
