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

# Importar Sessão

> Importa uma sessão do WhatsApp Web já autenticada, sem pareamento (contorno para passkey)

# Importar Sessão

O comando **Importar Sessão** (`SESSION_IMPORT`) conecta o canal usando uma sessão do
`web.whatsapp.com` **já autenticada**, sem passar pelo processo de pareamento (QR Code,
Pair Code ou Link).

Ele existe como **contorno para números com passkey**: quando o WhatsApp passa a exigir
verificação por passkey/security-key, o login por QR pode ser interrompido. Nesse cenário,
em vez de parear um novo dispositivo, você importa as credenciais de uma sessão web já
conectada e a plataforma se conecta diretamente com elas.

<Warning>
  O campo `creds` contém **credenciais brutas de autenticação** do WhatsApp Web, com acesso
  total à conta. Trate-o como segredo: trafegue-o **somente sobre TLS**, **nunca** o registre
  em logs e **nunca** o persista no cliente. Quem tiver esse blob controla a conexão.
</Warning>

## Requisição

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

```json theme={null}
{
  "channelId": "uuid-do-canal",
  "content": {
    "type": "SESSION_IMPORT",
    "commandType": "SESSION_IMPORT",
    "creds": {
      "noiseKey": { "private": "...", "public": "..." },
      "signedIdentityKey": { "private": "...", "public": "..." },
      "signedPreKey": { "keyPair": { "private": "...", "public": "..." }, "signature": "...", "keyId": 1 },
      "registrationId": 123,
      "me": { "id": "5511999999999:1@s.whatsapp.net", "name": "Minha Conta" }
    }
  }
}
```

## Campos

<ParamField body="content.type" type="string" required>
  Deve ser `"SESSION_IMPORT"`.
</ParamField>

<ParamField body="content.commandType" type="string" required>
  Deve ser `"SESSION_IMPORT"`. Repete o discriminador do comando.
</ParamField>

<ParamField body="content.creds" type="object" required>
  Blob **opaco** de credenciais de uma sessão do WhatsApp Web já autenticada (formato de
  `AuthenticationCreds`, estilo Baileys). A plataforma **repassa o objeto verbatim** ao
  provedor — não interpreta, não valida e não altera seu conteúdo.

  Como é um blob opaco, a estrutura interna depende de como as credenciais foram extraídas da
  sessão de origem. Envie exatamente o objeto obtido, sem modificações.
</ParamField>

<Note>
  A técnica de referência para extrair essas credenciais de uma sessão já autenticada é o
  "PSK Linker" (ZDG), que captura o blob de `creds` após o login no `web.whatsapp.com`.
</Note>

## Resposta da API

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

O `packageId` identifica o comando para rastreamento. A confirmação da conexão chega
posteriormente por webhook.

## Webhook de confirmação

Quando a importação é bem-sucedida, o canal se conecta **sem pareamento** e você recebe o
evento [`CONNECTED`](/comandos/iniciar-sessao):

```json theme={null}
{
  "packageId": null,
  "channelId": "uuid-do-canal",
  "content": {
    "type": "CONNECTED",
    "jid": "5511999999999:1@s.whatsapp.net",
    "lid": "123456789012345@lid",
    "phoneNumber": "5511999999999"
  }
}
```

<Note>
  Os campos `jid`, `lid` e `phoneNumber` são opcionais e refletem a identidade da sessão
  importada. A partir do `CONNECTED`, o canal já pode enviar e receber mensagens normalmente.
</Note>

## 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": "SESSION_IMPORT",
        "commandType": "SESSION_IMPORT",
        "creds": {
          "noiseKey": { "private": "...", "public": "..." },
          "signedIdentityKey": { "private": "...", "public": "..." },
          "registrationId": 123,
          "me": { "id": "5511999999999:1@s.whatsapp.net", "name": "Minha Conta" }
        }
      }
    }'
  ```

  ```python Python theme={null}
  import requests

  # `creds` deve conter o blob de credenciais extraido de uma sessao web ja autenticada.
  # Trate-o como segredo: nunca logue nem persista no cliente.
  creds = {
      "noiseKey": {"private": "...", "public": "..."},
      "signedIdentityKey": {"private": "...", "public": "..."},
      "registrationId": 123,
      "me": {"id": "5511999999999:1@s.whatsapp.net", "name": "Minha Conta"},
  }

  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": "SESSION_IMPORT",
              "commandType": "SESSION_IMPORT",
              "creds": creds
          }
      }
  )

  print(response.json())
  ```

  ```javascript Node.js theme={null}
  // `creds` deve conter o blob de credenciais extraido de uma sessao web ja autenticada.
  // Trate-o como segredo: nunca logue nem persista no cliente.
  const creds = {
    noiseKey: { private: "...", public: "..." },
    signedIdentityKey: { private: "...", public: "..." },
    registrationId: 123,
    me: { id: "5511999999999:1@s.whatsapp.net", name: "Minha Conta" },
  };

  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: "SESSION_IMPORT",
          commandType: "SESSION_IMPORT",
          creds,
        },
      }),
    }
  );

  const data = await response.json();
  console.log(data);
  ```
</CodeGroup>

<Tip>
  Use a importação de sessão apenas quando o pareamento tradicional não for viável (por exemplo,
  números protegidos por passkey). Para a maioria dos casos, prefira os métodos de
  [Iniciar Sessão](/comandos/iniciar-sessao) (QR Code, Pair Code ou Link).
</Tip>
