Saltar al contenido principal
POST
/
api
/
message
/
reaction
/
:instance
Enviar reacción
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 o TokenInstanceRate-limit: Global (100/min) • Idempotente: no

Descripción

Agrega o elimina una reacción (emoji) en un mensaje existente. El campo reaction acepta el emoji ("👍", "❤️", "😂", etc.) o la cadena literal "remove" para eliminar la reacción. En chats 1-a-1, messageId + fromMe es suficiente. En grupos, cuando el mensaje original no fue enviado por la instancia (fromMe: false), debes proporcionar participant con el JID del autor original, sin él, WhatsApp no puede localizar el objetivo. Las reacciones no soportan delay, replyTo ni mention.

Ejemplos

Reaccionar en un chat 1-a-1

fromMe: false indica que el mensaje objetivo fue recibido (no enviado) por la instancia.
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
  }'

Reaccionar en un grupo (mensaje de otro participante)

En grupos, cuando reaccionas a un mensaje que no es tuyo (fromMe: false), el participant con el JID del autor original es requerido. Sin él el servidor retorna 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"
  }'

Eliminar una reacción

Envía reaction: "remove" para limpiar una reacción colocada anteriormente en el mensaje.
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
  }'

Respuesta exitosa

El messageId retornado es el de la propia reacción (no el del mensaje reaccionado, ese permanece en replyTo.messageId). content carga el emoji aplicado, o una cadena vacía cuando la reacción fue eliminada.
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"
    }
  }
}
Cuando la reacción se elimina (reaction: "remove"), el message retornado se vuelve "Reaction removed successfully" y content está vacío. La reacción aparece en el destinatario anclada al mensaje original, si reaccionas de nuevo con otro emoji, WhatsApp reemplaza la reacción anterior.

Parámetros de ruta

instance
string
requerido
Nombre de la instancia (p. ej., $Instance_Name).

Cabeceras

token
string
requerido
TokenAccount o TokenInstance.
Content-Type
string
requerido
application/json

Cuerpo de la solicitud

number
string
requerido
Chat donde vive el mensaje objetivo: teléfono (5511999999999) o JID (@s.whatsapp.net, @lid, @g.us).
messageId
string
requerido
ID del mensaje que recibirá la reacción.
reaction
string
requerido
Emoji de reacción (p. ej., "👍", "❤️", "😂", "🔥") o la cadena literal "remove" para limpiar una reacción existente.
fromMe
boolean
predeterminado:"false"
true cuando el mensaje original fue enviado por la propia instancia; false cuando fue recibido de otro contacto/participante. WhatsApp usa esta flag junto con participant para localizar el objetivo.
participant
string
JID del autor del mensaje original (p. ej., 5511888888888@s.whatsapp.net). Requerido en grupos cuando fromMe: false, sin él el servidor retorna 400 missing_participant. En chats 1-a-1 o cuando fromMe: true, se ignora.
source
string
predeterminado:"api"
Identificador de origen para trazabilidad (p. ej., crm, support-bot, n8n). Guardado en el registro del mensaje y propagado a los webhooks.

Notas

  • Las reacciones no soportan delay, replyTo, replyPrivate, mention ni mentionAll, solo los campos listados arriba.
  • Para cambiar una reacción existente, simplemente envía una nueva con otro emoji. WhatsApp la reemplaza automáticamente.
  • En grupos, sin el participant correcto la reacción falla con missing_participant aunque el messageId exista en la base de datos.
  • fromMe debe reflejar el lado real del mensaje. Si está invertido, WhatsApp puede fallar en localizar el objetivo y la reacción desaparece silenciosamente en la app del destinatario.

Errores

HTTPStatus internoMensaje
400Instance name is required
400Invalid request body: <detail>
400Number is required
400MessageID is required
400Reaction is required
400invalid_numberInvalid phone number format: <detail>
400invalid_message_id(motivo de messageId inválido)
400missing_participantParticipant is required for group reactions when fromMe=false
404Instance not found
500send_failedFailed to send reaction: <reason>
503disconnectedInstance is not connected to WhatsApp
Envoltorio de error:
{
  "success": false,
  "error": { "message": "Reaction is required" }
}