Skip to main content
POST
/
api
/
message
/
reaction
/
:instance
Send Reaction
curl --request POST \
  --url https://api.example.com/api/message/reaction/:instance \
  --header 'Content-Type: <content-type>' \
  --header 'token: <token>' \
  --data '
{
  "number": "<string>",
  "messageId": "<string>",
  "reaction": "<string>",
  "fromMe": true,
  "participant": "<string>",
  "source": "<string>"
}
'

Documentation Index

Fetch the complete documentation index at: https://docs.ryzeapi.cloud/llms.txt

Use this file to discover all available pages before exploring further.

Auth: TokenAccount or TokenInstance β€’ Rate-limit: Global (100/min) β€’ Idempotent: no

Description

Adds or removes a reaction (emoji) on an existing message. The reaction 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.
curl -X POST "https://ryzeapi.cloud/api/message/reaction/$Instance_Name" \
  -H "token: $Token_Instance" \
  -H "Content-Type: application/json" \
  -d '{
    "number":    "5511999999999",
    "messageId": "3EB08FCF27E532F1B0F5",
    "reaction":  "πŸ‘",
    "fromMe":    false
  }'

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.
curl -X POST "https://ryzeapi.cloud/api/message/reaction/$Instance_Name" \
  -H "token: $Token_Instance" \
  -H "Content-Type: application/json" \
  -d '{
    "number":      "120363406289005073@g.us",
    "messageId":   "3EB08FCF27E532F1B0F5",
    "reaction":    "❀️",
    "fromMe":      false,
    "participant": "5511888888888@s.whatsapp.net"
  }'

Remove a reaction

Send reaction: "remove" to clear a reaction previously placed on the message.
curl -X POST "https://ryzeapi.cloud/api/message/reaction/$Instance_Name" \
  -H "token: $Token_Instance" \
  -H "Content-Type: application/json" \
  -d '{
    "number":    "5511999999999",
    "messageId": "3EB08FCF27E532F1B0F5",
    "reaction":  "remove",
    "fromMe":    true
  }'

Success response

The returned messageId 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
{
  "success": true,
  "message": "Reaction sent successfully",
  "status":  "sent",
  "data": {
    "messageId":   "3EB08FCF27E532F1C2C2",
    "direction":   "sent",
    "messageType": "reaction",
    "content":     "πŸ‘",
    "source":      "api",
    "timestamp":   "2026-04-30T14:30:00Z",
    "chat": {
      "jid":     "5511999999999@s.whatsapp.net",
      "isGroup": false
    },
    "sender": {
      "jid":      "5511777777777@s.whatsapp.net",
      "instance": "my-instance"
    },
    "replyTo": {
      "messageId": "3EB08FCF27E532F1B0F5"
    }
  }
}
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
string
required
Instance name (e.g., $Instance_Name).

Headers

token
string
required
TokenAccount or TokenInstance.
Content-Type
string
required
application/json

Request body

number
string
required
Chat where the target message lives: phone (5511999999999) or JID (@s.whatsapp.net, @lid, @g.us).
messageId
string
required
ID of the message that will receive the reaction.
reaction
string
required
Reaction emoji (e.g., "πŸ‘", "❀️", "πŸ˜‚", "πŸ”₯") or the literal string "remove" to clear an existing reaction.
fromMe
boolean
default:"false"
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.
participant
string
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.
source
string
default:"api"
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, mention or mentionAll, 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 participant the reaction fails with missing_participant even if the messageId exists in the database.
  • fromMe must 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

HTTPInternal statusMessage
400β€”Instance name is required
400β€”Invalid request body: <detail>
400β€”Number is required
400β€”MessageID is required
400β€”Reaction is required
400invalid_numberInvalid phone number format: <detail>
400invalid_message_id(reason for invalid messageId)
400missing_participantParticipant is required for group reactions when fromMe=false
404β€”Instance not found
500send_failedFailed to send reaction: <reason>
503disconnectedInstance is not connected to WhatsApp
Error envelope:
{
  "success": false,
  "error": { "message": "Reaction is required" }
}