# Configurar webhook da instância

`POST /webhook`

Pasta: **Webhooks e SSE**

## Autenticação

```http
token: {{token}}
```

## Descrição

# Configurar webhook da instância

Substitui os webhooks da instância. Aceita um objeto, um array ou `{ "webhooks": [...] }`. Use para receber eventos HTTP no seu servidor (mensagens, conexão, chats, etc.).

## Endpoint

`POST {{baseUrl}}/webhook`

## Autenticação

Envie o token da instância no header `token: {{token}}`.

## Corpo da requisição

| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `url` | string | Sim | URL de destino (`webhookUrl` / `webhook` também aceitos). |
| `enabled` | boolean | Não | Padrão `true` se omitido. |
| `events` | string[] | Não | Categorias: `messages`, `connection`, `chats`, `groups`, `call`, `contacts`, `presence`, `labels`, `history`, `messages_update`, `newsletter_messages`, `chat_labels`, `blocks`, etc. |
| `excludeMessages` | string[] | Não | Filtros: `wasSentByApi`, `wasNotSentByApi`, `fromMeYes`, `fromMeNo`, `isGroupYes`, `isGroupNo`. |
| `addUrlTypesMessages` | boolean | Não | Acrescenta o tipo da mensagem na URL. |
| `addUrlEvents` | boolean | Não | Acrescenta a categoria do evento na URL. |

## Exemplo de Requisição

```bash
curl --request POST '{{baseUrl}}/webhook' \
  --header 'token: {{token}}' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "enabled": true,
  "url": "https://seu-servidor.com/webhook",
  "events": ["messages", "connection"],
  "excludeMessages": ["wasSentByApi"]
}'
```

## Resposta de Sucesso

```json
{
  "success": true,
  "webhooks": [
    {
      "enabled": true,
      "url": "https://seu-servidor.com/webhook",
      "events": ["messages", "connection"],
      "excludeMessages": ["wasSentByApi"],
      "addUrlTypesMessages": false,
      "addUrlEvents": false
    }
  ]
}
```

## Erros comuns

- `401 Unauthorized`: header `token` ausente ou inválido.
- `400 Bad Request`: payload vazio ou sem `url`.
- `500 Internal Server Error`: falha ao substituir os webhooks.

## Observações

- A operação **substitui** todos os webhooks da instância.
- Para evitar loop de automação, use `excludeMessages: ["wasSentByApi"]`.

## Corpo (exemplo)

```json
{
  "enabled": true,
  "url": "https://seu-servidor.com/webhook",
  "events": ["messages", "connection"],
  "excludeMessages": ["wasSentByApi"],
  "addUrlTypesMessages": false,
  "addUrlEvents": false
}
```

## cURL

```bash
curl -X POST "{{baseUrl}}/webhook" \
  -H "token: {{token}}" \
  -H "Content-Type: application/json" \
  -d '{
  "enabled": true,
  "url": "https://seu-servidor.com/webhook",
  "events": ["messages", "connection"],
  "excludeMessages": ["wasSentByApi"],
  "addUrlTypesMessages": false,
  "addUrlEvents": false
}'
```

---

[Índice da pasta](./index.md) · [Índice geral](../index.md) · [UI](https://gozap.dev/docs?op=webhooks-e-sse/configurar-webhook-da-instancia)
