# Enviando reações no WhatsApp

Reaja à mensagem de um contato com um emoji, como um joinha para confirmar a resposta. Você pode substituir sua reação ou removê-la depois.

## Pré-requisitos

Você precisa de uma chave API com permissão de escrita em WhatsApp e o ID de mensagem Bird (`wam_…`) de uma mensagem recebida pelo seu espaço de trabalho. Use `data.whatsapp_id` de [`whatsapp.received`](/docs/guides/whatsapp/receiving-whatsapp), ou o `id` da mensagem no [log de WhatsApp](/docs/guides/whatsapp/message-log).

Substitua o ID de mensagem de exemplo pelo ID de uma mensagem recebida pelo seu espaço de trabalho. Inicialize o client para a sua linguagem usando o guia de SDK do [TypeScript](/docs/sdks/typescript), [Python](/docs/sdks/python), [Go](/docs/sdks/go) ou [PHP](/docs/sdks/php). Para exemplos em CLI, [instale e autentique o CLI](/docs/cli#authenticate) com acesso de escrita em WhatsApp. Use o host API da sua [região do espaço de trabalho](/docs/api/regions) nas requisições cURL.

## 1. Adicionar uma reação

Chame [Reagir a uma mensagem WhatsApp](/docs/api/reference/upsert-whatsapp-message-reaction) com um emoji:

**TypeScript**

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

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

O API retorna `202` com o `id` (`war_…`) e o `emoji` da reação aceita. Salve o ID da reação para encontrar o resultado no log de reações. A aceitação não confirma que WhatsApp aplicou a reação.

Você mantém uma reação por mensagem. Para substituí-la, repita a requisição `PUT` com um emoji diferente. Reações não são cobradas.

## 2. Verificar o resultado da reação

[Recupere a mensagem](/docs/api/reference/get-whatsapp-message) para ver as `reactions` atuais, com uma entrada por remetente. Para o resultado de uma alteração específica, [liste os eventos de reação da mensagem](/docs/api/reference/list-whatsapp-message-reaction-events) e encontre o ID da reação salvo.

O log de reações registra resultados terminais: `sent` significa que WhatsApp aceitou sua alteração, `failed` significa que WhatsApp a recusou, e `rejected` significa que Bird a recusou antes da transmissão. Inspecione o `error` do evento para uma alteração com falha ou recusada. Uma reação pendente ainda não tem entrada no log. Reações não possuem confirmações de entrega ou leitura nem webhook de reação de saída.

## 3. Remover sua reação

Chame [Remover uma reação WhatsApp](/docs/api/reference/delete-whatsapp-message-reaction) com o mesmo ID de mensagem:

**TypeScript**

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

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

O API retorna `202` sem corpo na resposta. A remoção é processada de forma assíncrona; verifique as `reactions` atuais da mensagem ou o log de reações para confirmar o resultado. Uma entrada de remoção no log tem `emoji: null`. Remover uma reação inexistente é seguro, e essa operação remove a reação do seu espaço de trabalho, não a do contato.

## Solução de problemas

- **`404` ([E15071](/docs/api/errors/E15071))**: Verifique o ID da mensagem alvo e o espaço de trabalho. Bird retém a referência da mensagem necessária para adicionar ou remover uma reação por 15 dias.
- **`422` ([E01001](/docs/api/errors/E01001))**: Use uma mensagem recebida e um único emoji. Você não pode reagir a uma mensagem enviada pelo seu espaço de trabalho. Um emoji combinado conta como um emoji; dois emoji separados não.
- **Reação inalterada após `202`**: Inspecione o log de reações para uma alteração com falha ou recusada. Uma resposta HTTP bem-sucedida confirma a aceitação para processamento.

## Próximos passos

- [Receber alterações de reação](/docs/guides/whatsapp/receiving-whatsapp/reactions)
- [Marcar uma mensagem como lida](/docs/guides/whatsapp/mark-message-as-read)
- [Enviar uma resposta 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)
