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

# Desconectar

> Encerra a sessão do WhatsApp conectada ao canal

# Desconectar

O comando **Desconectar** encerra a sessão ativa do WhatsApp no canal.
Após a desconexão, o canal não poderá enviar ou receber mensagens até que uma nova sessão
seja iniciada via [Iniciar Sessão](/comandos/iniciar-sessao).

## Requisição

```
POST /api/v1/message/SendCommand
```

```json theme={null}
{
  "channelId": "uuid-do-canal",
  "content": {
    "type": "DISCONNECT",
    "commandType": "DISCONNECT"
  }
}
```

<Note>
  Este comando não possui campos adicionais. Basta enviar `type` e `commandType` como `"DISCONNECT"`.
</Note>

## Resposta da API

```json theme={null}
{
  "packageId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
```

## Webhook de resposta

O comando gera um ack do tipo `DISCONNECT_RESPONSE`, que confirma o processamento
da solicitação de desconexão:

```json theme={null}
{
  "packageId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "channelId": "uuid-do-canal",
  "content": {
    "type": "DISCONNECT_RESPONSE",
    "success": true
  }
}
```

### Campos da resposta

| Campo     | Tipo      | Descrição                                                      |
| --------- | --------- | -------------------------------------------------------------- |
| `success` | `boolean` | Indica se o comando foi processado com sucesso (padrão `true`) |
| `error`   | `string`  | Mensagem de erro; presente apenas quando `success` é `false`   |

## Webhook de confirmação da desconexão

Além do ack, quando a sessão é efetivamente encerrada o canal emite o evento de
ciclo de vida [DISCONNECTED](/comandos/iniciar-sessao):

```json theme={null}
{
  "packageId": "5c1e0d2a-7b9a-4f8e-8c11-2d3e4f5a6b7c",
  "channelId": "uuid-do-canal",
  "content": {
    "type": "DISCONNECTED"
  }
}
```

<Note>
  O evento `DISCONNECTED` pode incluir um campo opcional `message` com detalhes sobre
  o motivo da desconexão. Diferencie os dois retornos: `DISCONNECT_RESPONSE` confirma que o
  comando foi recebido; `DISCONNECTED` indica que a sessão foi de fato encerrada.
</Note>

<Warning>
  A desconexão e imediata e irreversivel. Todas as mensagens pendentes no momento da desconexão
  podem não ser entregues. Para reconectar, será necessário realizar o processo de autenticação
  novamente (QR Code ou Pair Code).
</Warning>

## Exemplo completo

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api-dev.messagefy.io/api/v1/message/SendCommand \
    -H "Content-Type: application/json" \
    -H "X-API-KEY: sua-api-key" \
    -d '{
      "channelId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "content": {
        "type": "DISCONNECT",
        "commandType": "DISCONNECT"
      }
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api-dev.messagefy.io/api/v1/message/SendCommand",
      headers={
          "Content-Type": "application/json",
          "X-API-KEY": "sua-api-key"
      },
      json={
          "channelId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
          "content": {
              "type": "DISCONNECT",
              "commandType": "DISCONNECT"
          }
      }
  )

  print(response.json())
  ```

  ```javascript Node.js theme={null}
  const response = await fetch(
    "https://api-dev.messagefy.io/api/v1/message/SendCommand",
    {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "X-API-KEY": "sua-api-key",
      },
      body: JSON.stringify({
        channelId: "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        content: {
          type: "DISCONNECT",
          commandType: "DISCONNECT",
        },
      }),
    }
  );

  const data = await response.json();
  console.log(data);
  ```
</CodeGroup>

<Tip>
  Antes de desconectar, use o comando [Status](/comandos/status) para verificar o estado atual
  da sessão. Desconectar um canal já desconectado não gera erro, mas também não tera efeito.
</Tip>
