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

# Client-Token

> Um segundo segredo, no header, exigido em todas as instâncias do workspace.

O `Client-Token` é um segredo do **workspace** enviado como header HTTP. Quando ativado, toda requisição a qualquer instância do workspace precisa trazê-lo, além do token da instância na URL.

```bash theme={"system"}
curl https://api.wabox.me/instances/{instance_id}/token/{token}/status \
  -H "Client-Token: F4A2C1E9B7D35F6A8C0E1B3D5F7A9C2E"
```

## Para que serve

O token da instância vai na URL, e URLs vazam com facilidade: logs de proxy, histórico de navegador, planilhas, capturas de tela. O `Client-Token` fica em um header, que raramente é registrado, e cobre todas as instâncias de uma vez. Se uma URL vazar, quem a tiver ainda não consegue usar a API.

## Como ativar

<Steps>
  <Step title="Gere o token">
    No painel, em **Segurança › Client-Token**, clique em **Gerar token**. O valor aparece uma vez; copie para o seu cofre de segredos.
  </Step>

  <Step title="Configure suas integrações">
    Adicione o header `Client-Token` em todas as chamadas, de todas as instâncias do workspace. Teste com `GET /status`.
  </Step>

  <Step title="Ative a exigência">
    Ligue **Exigir Client-Token em todas as instâncias**. A partir daí, requisições sem o header (ou com valor errado) recebem `401 client_token_required`.
  </Step>
</Steps>

<Warning>
  A exigência vale para **todas** as instâncias do workspace ao mesmo tempo, inclusive as usadas por ferramentas no-code. Atualize tudo antes de ligar.
</Warning>

## Rotação

**Gerar novo token** invalida o anterior na hora. Não há período de convivência entre dois tokens: para trocar sem downtime, desligue a exigência, gere o novo, atualize as integrações e ligue de novo.

## Erros

| HTTP | `code`                  | Causa                                                        |
| ---- | ----------------------- | ------------------------------------------------------------ |
| 401  | `client_token_required` | Exigência ativa e header ausente ou diferente do valor atual |

O header é comparado em tempo constante. O nome não diferencia maiúsculas (`client-token` também funciona).
