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

# Tipos de mensagem

> Texto, mídia, localização, contatos, enquetes, reações, respostas, menções, edição e exclusão.

Todos os envios seguem o mesmo contrato: `POST /send-*` com `phone` + conteúdo, resposta `queued` com `message_id`, resultado no webhook [`delivery`](/webhooks/delivery). Os campos comuns valem em quase todos:

| Campo                 | Efeito                                                            |
| --------------------- | ----------------------------------------------------------------- |
| `reply_to_message_id` | Cita a mensagem indicada (aparece como resposta)                  |
| `mentioned`           | Lista de números a mencionar; escreva `@5511988887777` no texto   |
| `mention_all`         | Menciona todos os participantes (grupos)                          |
| `delay_message`       | Substitui o intervalo anti-ban desta mensagem (0 a 15 s)          |
| `delay_typing`        | Mostra "digitando…" por N segundos antes (0 a 15)                 |
| `edit_message_id`     | Edita uma mensagem sua (texto, legenda de imagem/vídeo/documento) |

## Texto

```json theme={"system"}
{ "phone": "5511988887777", "message": "Seu pedido *#1234* saiu para entrega.\nAcompanhe: https://loja.com/p/1234" }
```

Formatação do WhatsApp: `*negrito*`, `_itálico_`, `~riscado~`, ` ```mono``` `. Links viram clicáveis automaticamente, mas **sem prévia**; para prévia com título e imagem, use `send-link`:

```json theme={"system"}
{ "phone": "5511988887777", "message": "Veja a novidade", "url": "https://loja.com/novo", "title": "Coleção de primavera", "description": "Chegou hoje", "image": "https://loja.com/og.jpg" }
```

## Mídia

`send-image`, `send-audio`, `send-video`, `send-ptv` (vídeo redondo), `send-gif`, `send-document`, `send-sticker`. O campo principal tem o nome do tipo (`image`, `audio`, `video`, `ptv`, `gif`, `document`, `sticker`) e aceita URL pública, `data:` URL ou base64 puro. Limites, formatos e conversões estão em [Mídia](/guides/media).

```json theme={"system"}
{ "phone": "5511988887777", "image": "https://loja.com/produto.jpg", "caption": "Pronto para envio", "view_once": false }
```

* `send-audio`: `ptt: true` (padrão) envia como **voice note**, com forma de onda; `ptt: false` envia como arquivo de áudio.
* `send-document`: `file_name` define o nome exibido; `extension` (ou o path `send-document/{extension}` da z-api) ajuda quando a URL não tem extensão.
* `send-sticker`: WebP 512×512; outros formatos são convertidos quando o servidor tem ffmpeg.

## Localização

```json theme={"system"}
{ "phone": "5511988887777", "latitude": -23.5505, "longitude": -46.6333, "name": "Loja Centro", "address": "Rua Direita, 100" }
```

## Contatos

```json theme={"system"}
{ "phone": "5511988887777", "contact_name": "Suporte Wabox", "contact_phone": "5511977776666", "contact_description": "Atendimento" }
```

`send-contacts` envia vários cartões numa mensagem só (`contacts: [{ contact_name, contact_phone }]`). Você também pode passar um `vcard` pronto.

## Enquete

```json theme={"system"}
{ "phone": "120363012345678901-group", "question": "Qual horário?", "options": ["9h", "14h", "18h"], "poll_max_options": 1 }
```

Os votos chegam no webhook `received` em `poll_vote`. `send-poll-vote` vota em uma enquete recebida (`poll_message_id` + `options`).

## Reações e ações sobre mensagens

| Endpoint           | Body                                                               | Observação                                                        |
| ------------------ | ------------------------------------------------------------------ | ----------------------------------------------------------------- |
| `send-reaction`    | `message_id`, `reaction: "👍"`                                     | `from_me: true` para reagir a uma mensagem sua                    |
| `remove-reaction`  | `message_id`                                                       |                                                                   |
| `forward-message`  | `message_id`, `from_phone` (chat de origem)                        | Só mensagens que o engine viu desde o último restart              |
| `pin-message`      | `message_id`, `pin: true`, `duration_seconds`                      | Fixa no chat (24 h, 7 d ou 30 d)                                  |
| `DELETE /messages` | `phone`, `message_id`, `owner: true`                               | Apaga para todos (só mensagens suas, dentro do prazo do WhatsApp) |
| `read-message`     | `message_id` ou `message_ids`                                      | Ticks azuis. Ação imediata                                        |
| `send-presence`    | `status: composing / recording / paused / available / unavailable` | Ação imediata                                                     |

## Responder, mencionar, editar

```json theme={"system"}
{ "phone": "5511988887777", "message": "@5511977776666 pode confirmar?", "mentioned": ["5511977776666"], "reply_to_message_id": "3EB0A9C6D2F1E4B5A7C8" }
```

```json theme={"system"}
{ "phone": "5511988887777", "message": "Correção: saiu às 15h.", "edit_message_id": "3EB0A9C6D2F1E4B5A7D0" }
```

Edição vale para mensagens suas enviadas há pouco tempo (limite do WhatsApp) e que o engine tenha em cache; caso contrário o `delivery` vem com `message_not_found`. O contato recebe a mensagem marcada como "editada"; no webhook `received` (com `notify_sent_by_me`) chega `is_edit: true`.

## Onde cada tipo funciona

| Destino (`phone`)        | Texto e mídia              | Reações                         | Enquetes | Interativos |
| ------------------------ | -------------------------- | ------------------------------- | -------- | ----------- |
| Contato                  | ✓                          | ✓                               | ✓        | ✓ (celular) |
| Grupo                    | ✓                          | ✓                               | ✓        | ✓ (celular) |
| Canal (`@newsletter`)    | ✓ (você precisa ser admin) | via `newsletters/{id}/reaction` | —        | —           |
| Status (`send-*-status`) | texto, imagem, vídeo       | —                               | —        | —           |

Botões, listas, carrossel, PIX, eventos e status têm página própria: [O que renderiza onde](/guides/rendering-support) e a seção **Interativos** da referência.
