> ## Documentation Index
> Fetch the complete documentation index at: https://docs.whaapy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Enviar Reacciones

> Reacciona a mensajes de WhatsApp con emojis

Agrega reacciones emoji a mensajes existentes. Las reacciones son una forma rápida de responder sin enviar un mensaje nuevo.

<Note>
  Las reacciones solo pueden enviarse dentro de la ventana de 24 horas y requieren el `message_id` del mensaje a reaccionar.
</Note>

***

## Agregar Reacción

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api.whaapy.com/messages/v1 \
    -H "Authorization: Bearer wha_TU_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "to": "+5215512345678",
      "type": "reaction",
      "reaction": {
        "message_id": "wamid.HBgLNTIxNTUxMjM0NTY3OA==",
        "emoji": "👍"
      }
    }'
  ```

  ```javascript Node.js theme={null}
  const response = await fetch('https://api.whaapy.com/messages/v1', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer wha_TU_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      to: '+5215512345678',
      type: 'reaction',
      reaction: {
        message_id: 'wamid.HBgLNTIxNTUxMjM0NTY3OA==',
        emoji: '👍'
      }
    })
  });
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      'https://api.whaapy.com/messages/v1',
      headers={
          'Authorization': 'Bearer wha_TU_API_KEY',
          'Content-Type': 'application/json'
      },
      json={
          'to': '+5215512345678',
          'type': 'reaction',
          'reaction': {
              'message_id': 'wamid.HBgLNTIxNTUxMjM0NTY3OA==',
              'emoji': '👍'
          }
      }
  )
  ```
</RequestExample>

***

## Quitar Reacción

Para quitar una reacción, envía el mismo request con `emoji` vacío:

<RequestExample>
  ```json Request theme={null}
  {
    "to": "+5215512345678",
    "type": "reaction",
    "reaction": {
      "message_id": "wamid.HBgLNTIxNTUxMjM0NTY3OA==",
      "emoji": ""
    }
  }
  ```
</RequestExample>

<Tip>
  Solo puedes tener **una reacción activa** por mensaje. Enviar una nueva reacción reemplaza la anterior.
</Tip>

***

## Campos

<ParamField body="reaction.message_id" type="string" required>
  ID del mensaje a reaccionar. Puede ser el `wamid` de Meta o el `id` de Whaapy.
</ParamField>

<ParamField body="reaction.emoji" type="string" required>
  Emoji de la reacción. String vacío `""` para quitar la reacción.
</ParamField>

***

## Emojis Comunes para Reacciones

| Emoji | Uso Típico               |
| ----- | ------------------------ |
| 👍    | Aprobación, confirmación |
| ❤️    | Agradecimiento, cariño   |
| 😂    | Algo gracioso            |
| 😮    | Sorpresa                 |
| 😢    | Empatía, disculpa        |
| 🙏    | Gracias, por favor       |
| ✅     | Tarea completada         |
| 🎉    | Celebración              |

<Note>
  Puedes usar cualquier emoji Unicode válido. WhatsApp soporta la mayoría de emojis estándar.
</Note>

***

## Respuesta Exitosa

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "messaging_product": "whatsapp",
    "contacts": [
      { "input": "+5215512345678", "wa_id": "5215512345678" }
    ],
    "messages": [
      { "id": "550e8400-e29b-41d4-a716-446655440000", "wamid": "wamid.HBgLNTIxNTUx..." }
    ],
    "data": {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "conversationId": "660e8400-e29b-41d4-a716-446655440001",
      "messageType": "reaction",
      "direction": "outbound",
      "status": "sent",
      "createdAt": "2026-01-22T10:30:00Z"
    }
  }
  ```
</ResponseExample>

***

## Obtener el message\_id

El `message_id` necesario para reaccionar lo obtienes de:

### 1. Respuesta de envío

Cuando envías un mensaje, la respuesta incluye el `wamid`:

```json theme={null}
{
  "messages": [
    { "id": "uuid-whaapy", "wamid": "wamid.HBgLNTIxNTUx..." }
  ]
}
```

### 2. Webhook de mensaje recibido

Cuando recibes un mensaje del usuario:

```json theme={null}
{
  "messages": [
    {
      "id": "wamid.HBgLNTIxNTUx...",
      "from": "5215512345678",
      "text": { "body": "Hola!" }
    }
  ]
}
```

### 3. Base de datos de Whaapy

Si guardaste el mensaje, puedes usar el UUID de Whaapy directamente.

***

## Casos de Uso

<AccordionGroup>
  <Accordion title="Confirmar recepción de pedido">
    ```javascript theme={null}
    // Cuando el usuario envía su pedido, reacciona con ✅
    await sendReaction(messageId, '✅');

    // Luego envía mensaje de confirmación
    await sendMessage(to, 'Pedido recibido. Te confirmamos en breve.');
    ```
  </Accordion>

  <Accordion title="Agradecer un mensaje positivo">
    ```javascript theme={null}
    // Detectar mensaje positivo y reaccionar
    if (sentiment === 'positive') {
      await sendReaction(messageId, '❤️');
    }
    ```
  </Accordion>

  <Accordion title="Marcar mensaje como leído">
    ```javascript theme={null}
    // Usar reacción como indicador de "visto"
    await sendReaction(messageId, '👀');
    ```
  </Accordion>
</AccordionGroup>

***

## Limitaciones

* Solo puedes reaccionar a mensajes de los últimos 30 días
* Solo puedes tener una reacción por mensaje (la última reemplaza la anterior)
* Las reacciones requieren ventana de 24 horas activa
* No puedes reaccionar a mensajes de canales o grupos (solo chats 1:1)

***

## Flujo de Reacciones

```mermaid theme={null}
sequenceDiagram
    participant User as Usuario
    participant App as Tu App
    participant Whaapy as Whaapy API
    
    User->>Whaapy: "Me encanta su producto!"
    Whaapy->>App: Webhook (message_id: wamid.xxx)
    
    Note over App: Detectar sentimiento positivo
    
    App->>Whaapy: POST /messages/v1 (reaction: ❤️)
    Whaapy->>User: Reacción ❤️ en el mensaje
    
    App->>Whaapy: POST /messages/v1 (text)
    Whaapy->>User: "¡Gracias! Nos alegra mucho 🙌"
```

***

## Próximos Pasos

<CardGroup cols={2}>
  <Card title="Enviar Texto" icon="font" href="/api-reference/messages/send">
    Mensajes de texto simple
  </Card>

  <Card title="Enviar Media" icon="image" href="/api-reference/messages/send-media">
    Imágenes, videos, audio
  </Card>
</CardGroup>
