> ## 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.

# Filtros de webhook

> Escolha o que chega: mensagens próprias, grupos, tipos de mídia e tipos de evento.

Os filtros ficam no mesmo objeto das URLs (`GET`/`PUT /webhooks`) e no painel, em **Webhooks e configurações gerais**. Todos são booleanos e valem por instância.

```bash theme={"system"}
curl -X PUT https://api.wabox.me/instances/{instance_id}/token/{token}/webhooks \
  -H "Content-Type: application/json" \
  -d '{ "notify_sent_by_me": true, "ignore_groups": true, "ignore_audio": true }'
```

O `PUT` é parcial: só os campos enviados mudam.

## Filtros do `received`

| Campo               | Padrão  | Efeito                                                                                                   |
| ------------------- | ------- | -------------------------------------------------------------------------------------------------------- |
| `notify_sent_by_me` | `false` | Liga o envio de `received` para mensagens **enviadas pelo número** (celular ou API), com `from_me: true` |
| `ignore_groups`     | `false` | Descarta mensagens de grupos                                                                             |
| `ignore_private`    | `false` | Descarta conversas individuais (mantém grupos e canais)                                                  |
| `ignore_text`       | `false` | Descarta mensagens com bloco `text`                                                                      |
| `ignore_image`      | `false` | Descarta imagens                                                                                         |
| `ignore_video`      | `false` | Descarta vídeos (inclui GIFs)                                                                            |
| `ignore_audio`      | `false` | Descarta áudios e voice notes                                                                            |
| `ignore_document`   | `false` | Descarta documentos                                                                                      |

Os filtros de tipo olham o bloco de conteúdo: uma reação, um voto, uma localização ou um `notification` **não** são afetados por `ignore_text`. Para descartar tudo de um chat específico não há filtro — faça no seu lado por `phone`.

## Desligar um tipo de evento

Cada tipo tem um `ignore_*_callback`: `ignore_received_callback`, `ignore_delivery_callback`, `ignore_message_status_callback`, `ignore_connected_callback`, `ignore_disconnected_callback`, `ignore_chat_presence_callback`. Com `true`, o evento não é entregue mesmo que a URL esteja configurada. É equivalente a deixar a URL como `null`, mas preserva a URL para religar depois.

## Ordem de avaliação

1. Existe URL para o tipo? Senão, descarta (`no_url`).
2. `ignore_<tipo>_callback` ligado? Descarta.
3. Só para `received`: `from_me` sem `notify_sent_by_me`, depois `ignore_groups`/`ignore_private`, depois os tipos de mídia.

Eventos descartados por filtro não aparecem nos **Logs de webhook** — só o que foi efetivamente tentado.

## Combinações úteis

| Objetivo                         | Configuração                                                                                                     |
| -------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| Bot de atendimento só no privado | `ignore_groups: true`                                                                                            |
| Espelhar toda a conversa num CRM | `notify_sent_by_me: true`                                                                                        |
| Só texto e botões, sem mídia     | `ignore_image`, `ignore_video`, `ignore_audio`, `ignore_document` em `true`                                      |
| Só monitorar conexão             | `received_url`, `delivery_url`, `message_status_url` em `null`; `connected_url` e `disconnected_url` preenchidos |
