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

# Webhooks

> Configurar webhooks e consultar logs de entrega com o SDK Java

Use `client.webhooks()` para ler configuracao, atualizar entrega de eventos, consultar logs e tentar reenvio.

Campos comuns em todas as chamadas:

| Campo           | Tipo     | Obrigatório | Descrição           |
| --------------- | -------- | ----------- | ------------------- |
| `instanceId`    | `string` | Sim         | ID da instância.    |
| `instanceToken` | `string` | Sim         | Token da instância. |

## `client.webhooks().get(...)`

Lê a configuração atual do webhook.

```java theme={null}
var options = InstanceRequestOptions.builder().instanceToken(instanceToken).build();
JsonNode result = client.webhooks().get(GenericInstanceRequest.builder()
    .instanceId(instanceId)
    .instanceToken(instanceToken)
    .build());
// Exemplo: tipagem estrita com DTOs publicados quando disponivel
```

**Retorno:** envelope `{ code, success, data }` com `webhook` e `subscribe` (eventos).

## `client.webhooks().set(...)`

Define URL e eventos assinados.

```java theme={null}
var options = InstanceRequestOptions.builder().instanceToken(instanceToken).build();
JsonNode result = client.webhooks().set(GenericInstanceRequest.builder()
    .instanceId(instanceId)
    .instanceToken(instanceToken)
    .build());
// Exemplo: tipagem estrita com DTOs publicados quando disponivel
```

**Retorno:** envelope `{ code, success, data }` com `webhook` e `events` configurados.

| Campo        | Tipo                   | Obrigatório | Descrição                              |
| ------------ | ---------------------- | ----------- | -------------------------------------- |
| `webhookURL` | `string`               | Sim         | URL pública que receberá os callbacks. |
| `events`     | `string[]` ou `string` | Não         | Eventos assinados.                     |

Eventos comuns: `Message`, `ReadReceipt`, `Connected`, `Disconnected`, `Presence`, `ChatPresence`, `HistorySync`, `GroupParticipantsAdd`, `GroupParticipantsRemove`, `All`.

## `client.webhooks().searchLogs(...)`

Busca logs de entrega do webhook.

```java theme={null}
var options = InstanceRequestOptions.builder().instanceToken(instanceToken).build();
JsonNode result = client.webhooks().searchLogs(GenericInstanceRequest.builder()
    .instanceId(instanceId)
    .instanceToken(instanceToken)
    .build());
// Exemplo: tipagem estrita com DTOs publicados quando disponivel
```

**Retorno:** envelope `{ code, success, data }` com pagina de logs (`content[]`, totais).

## `client.webhooks().getLog(...)`

Lê um log específico de entrega.

```java theme={null}
var options = InstanceRequestOptions.builder().instanceToken(instanceToken).build();
JsonNode result = client.webhooks().getLog(GenericInstanceRequest.builder()
    .instanceId(instanceId)
    .instanceToken(instanceToken)
    .build());
// Exemplo: tipagem estrita com DTOs publicados quando disponivel
```

**Retorno:** envelope `{ code, success, data }` com um log de entrega (status, payload, tentativas, etc.).

## `client.webhooks().retryLog(...)`

Reenvia uma entrega com falha.

```java theme={null}
var options = InstanceRequestOptions.builder().instanceToken(instanceToken).build();
JsonNode result = client.webhooks().retryLog(GenericInstanceRequest.builder()
    .instanceId(instanceId)
    .instanceToken(instanceToken)
    .build());
// Exemplo: tipagem estrita com DTOs publicados quando disponivel
```

**Retorno:** envelope `{ code, success, data }` confirmando reenvio do callback.

## Quando usar webhook

Use webhook quando:

* sua aplicação já possui URL pública para receber callbacks;
* você quer processar eventos de forma assíncrona no backend;
* seu pipeline de integração já trabalha com HTTP POST.

Para bots, dashboards e apps que precisam de baixa latência sem expor URL, prefira [Realtime](/pt-BR/sdk/java/realtime).
