# Enviar reacciones de WhatsApp

Reacciona al mensaje de un contacto con un emoji, por ejemplo un pulgar arriba para confirmar su respuesta. Puedes reemplazar tu reacción o eliminarla después.

## Requisitos previos

Necesitas una clave de API con permiso de escritura de WhatsApp y el ID de mensaje Bird (`wam_…`) de un mensaje que tu espacio de trabajo haya recibido. Usa `data.whatsapp_id` de [`whatsapp.received`](/docs/guides/whatsapp/receiving-whatsapp), o el `id` del mensaje en el [registro de WhatsApp](/docs/guides/whatsapp/message-log).

Reemplaza el ID de mensaje de ejemplo con el ID de un mensaje que tu espacio de trabajo haya recibido. Inicializa el cliente para tu lenguaje con la guía de SDK de [TypeScript](/docs/sdks/typescript), [Python](/docs/sdks/python), [Go](/docs/sdks/go) o [PHP](/docs/sdks/php). Para ejemplos de CLI, [instala y autentica el CLI](/docs/cli#authenticate) con acceso de escritura de WhatsApp. Usa el host API de tu [región del espacio de trabajo](/docs/api/regions) en las solicitudes cURL.

## 1. Añadir una reacción

Llama a [Reaccionar a un mensaje de WhatsApp](/docs/api/reference/upsert-whatsapp-message-reaction) con un solo emoji:

**TypeScript**

```typescript
const reaction = await bird.whatsapp.reaction.set("wam_01krdgeqcxet5s7t44vh8rt9mg", {
  emoji: "👍",
});
console.log(reaction.id, reaction.emoji);
```

Examples: [TypeScript](/es-es/documentacion/guides/whatsapp/reactions.ts.md) · [Python](/es-es/documentacion/guides/whatsapp/reactions.py.md) · [Go](/es-es/documentacion/guides/whatsapp/reactions.go.md) · [PHP](/es-es/documentacion/guides/whatsapp/reactions.php.md) · [CLI](/es-es/documentacion/guides/whatsapp/reactions.cli.md) · [cURL](/es-es/documentacion/guides/whatsapp/reactions.curl.md)

El API devuelve `202` con el `id` (`war_…`) y `emoji` de la reacción aceptada. Guarda el ID de reacción para encontrar su resultado en el registro de reacciones. La aceptación no confirma que WhatsApp haya aplicado la reacción.

Solo puedes tener una reacción por mensaje. Para reemplazarla, repite la solicitud `PUT` con un emoji diferente. Las reacciones no tienen costo.

## 2. Comprobar el resultado de la reacción

[Recupera el mensaje](/docs/api/reference/get-whatsapp-message) para ver sus `reactions` actuales, con una entrada por remitente. Para el resultado de un cambio específico, [lista los eventos de reacción del mensaje](/docs/api/reference/list-whatsapp-message-reaction-events) y busca el ID de reacción guardado.

El registro de reacciones almacena los resultados terminales: `sent` significa que WhatsApp aceptó tu cambio, `failed` significa que WhatsApp lo rechazó, y `rejected` significa que Bird lo rechazó antes de la transmisión. Inspecciona el `error` del evento para un cambio fallido o rechazado. Una reacción pendiente aún no tiene entrada en el registro. Las reacciones no tienen confirmaciones de entrega ni de lectura, ni webhook de reacción saliente.

## 3. Eliminar tu reacción

Llama a [Eliminar una reacción de WhatsApp](/docs/api/reference/delete-whatsapp-message-reaction) con el mismo ID de mensaje:

**TypeScript**

```typescript
await bird.whatsapp.reaction.remove("wam_01krdgeqcxet5s7t44vh8rt9mg");
```

Examples: [TypeScript](/es-es/documentacion/guides/whatsapp/reactions.ts.md) · [Python](/es-es/documentacion/guides/whatsapp/reactions.py.md) · [Go](/es-es/documentacion/guides/whatsapp/reactions.go.md) · [PHP](/es-es/documentacion/guides/whatsapp/reactions.php.md) · [CLI](/es-es/documentacion/guides/whatsapp/reactions.cli.md) · [cURL](/es-es/documentacion/guides/whatsapp/reactions.curl.md)

El API devuelve `202` sin cuerpo de respuesta. La eliminación se procesa de forma asíncrona; comprueba las `reactions` actuales del mensaje o su registro de reacciones para confirmar el resultado. Una entrada de eliminación en el registro tiene `emoji: null`. Eliminar una reacción inexistente es seguro, y esta operación elimina la reacción de tu espacio de trabajo, no la del contacto.

## Solución de problemas

- **`404` ([E15071](/docs/api/errors/E15071))**: Verifica el ID de mensaje y el espacio de trabajo. Bird conserva la referencia del mensaje necesaria para añadir o eliminar una reacción durante 15 días.
- **`422` ([E01001](/docs/api/errors/E01001))**: Usa un mensaje recibido y un solo emoji. No puedes reaccionar a un mensaje que tu espacio de trabajo haya enviado. Un emoji combinado cuenta como un emoji; dos emoji separados no.
- **Reacción sin cambios después de `202`**: Inspecciona el registro de reacciones en busca de un cambio fallido o rechazado. Una respuesta HTTP exitosa confirma la aceptación para procesamiento.

## Próximos pasos

- [Recibir cambios de reacción](/docs/guides/whatsapp/receiving-whatsapp/reactions)
- [Marcar un mensaje como leído](/docs/guides/whatsapp/mark-message-as-read)
- [Enviar una respuesta de WhatsApp](/docs/guides/whatsapp/sending-whatsapp)

## Related resources

- [Connecting WhatsApp to Bird: from buying a number to a live channel](/learn/whatsapp/connecting-whatsapp-to-bird) (video)
- [What is the 24-hour customer service window on WhatsApp?](/explained/whatsapp/what-is-the-24-hour-customer-service-window) (answer)
- [WhatsApp message builder](/tools/whatsapp-message-builder) (tool)
- [WhatsApp](/products/whatsapp) (product)

[Get an implementation brief](/learn/workspace?topic=whatsapp)
