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

# Configuração

> Uma URL, vários eventos. Cadastre quantos endpoints precisar e escolha o que cada um recebe.

A Zapfy usa um modelo de **subscription**: em vez de uma única URL global que recebe
tudo, você cadastra **endpoints** e cada um **assina o conjunto de eventos** que quer.

* Quem quer tudo num lugar só → 1 endpoint com todos os eventos.
* Quem quer separar (ex.: status de mensagem num serviço, conexão em outro) →
  endpoints distintos, cada um com o seu filtro.

<Note>
  Limite de **5 endpoints por instância**. Cada endpoint é um alvo de entrega por
  evento; o teto evita amplificação acidental.
</Note>

## Pelo painel

Abra a instância → **Configurações** → **Webhooks**:

1. **Adicionar webhook**.
2. Informe a **URL de destino** (HTTPS).
3. Marque os **eventos** que esse endpoint deve receber.
4. Salve. Use o toggle **Ativo** para pausar a entrega sem apagar o endpoint.

## Pela API

<ParamField path="url" type="string" required>
  URL HTTPS de destino. Máximo de 2048 caracteres.
</ParamField>

<ParamField path="events" type="string[]" required>
  Lista de eventos assinados. Ao menos um. Valores válidos em
  [Eventos](/pt-br/webhooks/events).
</ParamField>

<ParamField path="enabled" type="boolean" default="true">
  Se o endpoint recebe entregas.
</ParamField>

### Criar

```bash theme={null}
curl -X POST https://api.zapfy.io/v1/instances/{instanceId}/webhooks \
  -H "Authorization: Bearer zpfy_acct_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://seu-app.com/webhooks",
    "events": ["MESSAGE_RECEIVED", "MESSAGE_STATUS"]
  }'
```

### Listar, atualizar e remover

```bash theme={null}
# listar
curl https://api.zapfy.io/v1/instances/{instanceId}/webhooks \
  -H "Authorization: Bearer zpfy_acct_xxxxxxxxxxxx"

# atualizar (parcial)
curl -X PATCH https://api.zapfy.io/v1/instances/{instanceId}/webhooks/{webhookId} \
  -H "Authorization: Bearer zpfy_acct_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{ "enabled": false }'

# remover
curl -X DELETE https://api.zapfy.io/v1/instances/{instanceId}/webhooks/{webhookId} \
  -H "Authorization: Bearer zpfy_acct_xxxxxxxxxxxx"
```

## Entrega

* A Zapfy faz `POST` em cada endpoint assinante quando o evento ocorre.
* Responda `2xx` para confirmar. Sem `2xx`, o evento é reentregue.
* A entrega é **at-least-once** — deduplique pelo campo `id` do evento.
