# Messages # Reactions ## Add `chats.messages.reactions.add(strmessage_id, ReactionAddParams**kwargs) -> ReactionAddResponse` **post** `/v1/chats/{chatID}/messages/{messageID}/reactions` Add a reaction to an existing message. ### Parameters - `chat_id: str` Unique identifier of the chat. - `message_id: str` - `reaction_key: str` Reaction key to add (emoji, shortcode, or custom emoji key) - `transaction_id: Optional[str]` Optional transaction ID for deduplication and local echo tracking ### Returns - `class ReactionAddResponse: …` - `chat_id: str` Unique identifier of the chat. - `message_id: str` Message ID. - `reaction_key: str` Reaction key that was added - `success: Literal[true]` Whether the reaction was successfully added - `true` - `transaction_id: str` Transaction ID used for the reaction event ### Example ```python from beeper_desktop_api import BeeperDesktop client = BeeperDesktop() response = client.chats.messages.reactions.add( message_id="messageID", chat_id="!NCdzlIaMjZUmvmvyHU:beeper.com", reaction_key="x", ) print(response.chat_id) ``` ## Delete `chats.messages.reactions.delete(strmessage_id, ReactionDeleteParams**kwargs) -> ReactionDeleteResponse` **delete** `/v1/chats/{chatID}/messages/{messageID}/reactions` Remove the authenticated user's reaction from an existing message. ### Parameters - `chat_id: str` Unique identifier of the chat. - `message_id: str` - `reaction_key: str` Reaction key to remove ### Returns - `class ReactionDeleteResponse: …` - `chat_id: str` Unique identifier of the chat. - `message_id: str` Message ID. - `reaction_key: str` Reaction key that was removed - `success: Literal[true]` Whether the reaction was successfully removed - `true` ### Example ```python from beeper_desktop_api import BeeperDesktop client = BeeperDesktop() reaction = client.chats.messages.reactions.delete( message_id="messageID", chat_id="!NCdzlIaMjZUmvmvyHU:beeper.com", reaction_key="x", ) print(reaction.chat_id) ```