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

> ## Agent Instructions
> Wabox é uma API não-oficial de WhatsApp (aparelho vinculado). Tudo é snake_case; a base é https://api.wabox.me/instances/{instance_id}/token/{token}.
> Envios respondem { id, message_id, wabox_id, status: "queued" } na hora; o resultado real chega no webhook delivery. Envios não são idempotentes: confira GET /queue antes de repetir.
> Sempre verifique X-Wabox-Signature (HMAC-SHA256 de "<t>.<corpo cru>") nos webhooks e deduplique por event_id.
> Botões, listas, carrossel e catálogo são best effort e não renderizam no WhatsApp Web/Desktop. Não existem: chamadas, listas de transmissão, histórico de mensagens, instância mobile.
> Não invente endpoints ou campos: use o OpenAPI em https://api.wabox.me/openapi.json.

# Webhook message_status

> Os ticks: enviada, entregue, lida e reproduzida, para as mensagens que você mandou.

`message_status` é o recibo do WhatsApp para mensagens **enviadas pelo número** (pela API ou pelo celular). É o equivalente aos ticks cinza e azuis.

```json theme={"system"}
{
  "type": "message_status",
  "event_id": "01J5Q8ZK3M4N5P6Q7R8S9T0V1Y",
  "instance_id": "8f2a3c1e-6b7d-4e5f-9a0b-1c2d3e4f5a6b",
  "momment": 1786968480000,
  "ids": ["3EB0A9C6D2F1E4B5A7D0"],
  "phone": "5511988887777",
  "status": "READ",
  "is_group": false,
  "phone_device": 0
}
```

| Campo                           | Descrição                                                                            |
| ------------------------------- | ------------------------------------------------------------------------------------ |
| `ids`                           | Uma ou mais mensagens do mesmo chat que mudaram de status juntas (o WhatsApp agrupa) |
| `phone`                         | O chat                                                                               |
| `status`                        | Ver tabela abaixo                                                                    |
| `is_group`, `participant_phone` | Em grupos, qual participante produziu o recibo                                       |
| `phone_device`                  | `0` = o celular do contato; `1+` = um aparelho vinculado (WhatsApp Web)              |

## Status

| `status`     | Ticks   | Significado                                              |
| ------------ | ------- | -------------------------------------------------------- |
| `PENDING`    | relógio | Ainda não saiu do seu aparelho                           |
| `SENT`       | ✓       | Chegou aos servidores do WhatsApp                        |
| `RECEIVED`   | ✓✓      | Chegou ao aparelho do contato                            |
| `READ`       | ✓✓ azul | O contato abriu a conversa                               |
| `PLAYED`     | ✓✓ azul | Áudio/voice note ouvido                                  |
| `READ_BY_ME` | —       | Você leu uma mensagem do contato (em outro aparelho seu) |

Os status não são cumulativos nem garantidos: um contato com confirmação de leitura desligada nunca gera `READ`; um contato offline pode pular de `SENT` direto para `READ` dias depois.

## Casando com o envio

`ids` contém o `message_id` devolvido por `POST /send-*` (e pelo `delivery`). Guarde `message_id → seu registro` na hora do envio e atualize o status a cada evento.

## Volume

Em grupos grandes, cada participante gera recibos próprios: uma mensagem para 200 pessoas pode render centenas de eventos. Se você só precisa de recibos de conversas individuais, filtre por `is_group` no seu lado ou desligue o tipo com `ignore_message_status_callback` — não há filtro de grupo específico para este webhook.
