Messages
Send Reaction
React with an emoji to a specific message (or remove the reaction)
POST
Send Reaction
Auth:
Error envelope:
TokenAccount or TokenInstance • Rate-limit: Global (100/min) • Idempotent: no
Description
Adds or removes a reaction (emoji) on an existing message. Thereaction field accepts the emoji ("👍", "❤️", "😂", etc.) or the literal string "remove" to remove the reaction. In 1-to-1 chats, messageId + fromMe is enough. In groups, when the original message was not sent by the instance (fromMe: false), you must provide participant with the original author’s JID, without it, WhatsApp can’t locate the target. Reactions do not support delay, replyTo or mention.
Examples
React in a 1-to-1 chat
fromMe: false indicates that the target message was received (not sent) by the instance.
React in a group (message from another participant)
In groups, when you react to a message that isn’t yours (fromMe: false), the participant with the original author’s JID is required. Without it the server returns 400 missing_participant.
Remove a reaction
Sendreaction: "remove" to clear a reaction previously placed on the message.
Success response
The returnedmessageId is for the reaction itself (not the reacted message, that one stays in replyTo.messageId). content carries the applied emoji, or an empty string when the reaction was removed.
200 OK
When the reaction is removed (
reaction: "remove"), the returned message becomes "Reaction removed successfully" and content is empty. The reaction appears on the recipient anchored to the original message, if you react again with another emoji, WhatsApp replaces the previous reaction.Path parameters
Instance name (e.g.,
$Instance_Name).Headers
TokenAccount or TokenInstance.application/jsonRequest body
Chat where the target message lives: phone (
5511999999999) or JID (@s.whatsapp.net, @lid, @g.us).ID of the message that will receive the reaction.
Reaction emoji (e.g.,
"👍", "❤️", "😂", "🔥") or the literal string "remove" to clear an existing reaction.true when the original message was sent by the instance itself; false when it was received from another contact/participant. WhatsApp uses this flag along with participant to locate the target.JID of the original message author (e.g.,
5511888888888@s.whatsapp.net). Required in groups when fromMe: false, without it the server returns 400 missing_participant. In 1-to-1 chats or when fromMe: true, it’s ignored.Origin identifier for traceability (e.g.,
crm, support-bot, n8n). Saved on the message record and propagated to webhooks.Notes
- Reactions do not support
delay,replyTo,replyPrivate,mentionormentionAll, only the fields listed above. - To change an existing reaction, just send a new one with another emoji. WhatsApp replaces it automatically.
- In groups, without the correct
participantthe reaction fails withmissing_participanteven if themessageIdexists in the database. fromMemust reflect the actual side of the message. If inverted, WhatsApp may fail to locate the target and the reaction silently disappears on the recipient’s app.
Errors
| HTTP | Internal status | Message |
|---|---|---|
| 400 | , | Instance name is required |
| 400 | , | Invalid request body: <detail> |
| 400 | , | Number is required |
| 400 | , | MessageID is required |
| 400 | , | Reaction is required |
| 400 | invalid_number | Invalid phone number format: <detail> |
| 400 | invalid_message_id | (reason for invalid messageId) |
| 400 | missing_participant | Participant is required for group reactions when fromMe=false |
| 404 | , | Instance not found |
| 500 | send_failed | Failed to send reaction: <reason> |
| 503 | disconnected | Instance is not connected to WhatsApp |