Pular para o conteúdo principal

Documentation Index

Fetch the complete documentation index at: https://zapo.to/llms.txt

Use this file to discover all available pages before exploring further.

O zapo é organizado em torno de um client enxuto que delega cada funcionalidade a um coordinator focado. O client é dono da conexão, da autenticação e do emissor de eventos; os coordinators são donos da lógica de domínio.

O client

O WaClient é o único ponto de entrada. Você o constrói com opções e um logger opcional, e então chama connect():
const client = new WaClient({ store, sessionId: 'default' }, logger)
await client.connect()
O client em si expõe apenas uma superfície pequena: ciclo de vida da conexão (connect, disconnect, logout), consultas de estado (getState, getCredentials) e o emissor de eventos tipado (on, once, off). Todo o resto fica atrás de um getter de coordinator.

Coordinators

Cada coordinator é acessado por um getter no client. Eles são conectados de forma lazy na construção e é seguro manter referências a eles.
GetterCoordinatorResponsabilidade
client.authWaAuthClientPareamento, credenciais, estado de registro
client.messageWaMessageCoordinatorEnvio/recebimento, recibos, download de mídia, addons
client.presenceWaPresenceCoordinatorPresença própria/de terceiros e chat-state
client.chatWaAppStateMutationCoordinatorConfigurações de chat: silenciar, fixar, arquivar, ler, excluir
client.groupWaGroupCoordinatorGrupos e comunidades
client.newsletterWaNewsletterCoordinatorCanais: criar, enviar, seguir, administrar
client.statusWaStatusCoordinatorEnvio de status (broadcast) e reações
client.broadcastListWaBroadcastListCoordinatorGerenciamento de listas de transmissão e envios
client.privacyWaPrivacyCoordinatorCategorias de privacidade, lista de bloqueios
client.profileWaProfileCoordinatorFoto de perfil, texto de status, nome de usuário
client.businessWaBusinessCoordinatorPerfil business, nomes verificados
client.botWaBotCoordinatorPerfis e prompts de bot (Meta AI e outros)
client.emailWaEmailCoordinatorVincular/verificar e-mail na conta
client.lowlevelWaLowLevelCoordinatorEscape hatch para envio/query de node bruto
Como os tipos dos coordinators são exportados a partir da raiz do pacote, você pode anotá-los em TypeScript:
import type { WaGroupCoordinator } from 'zapo-js'

const groups: WaGroupCoordinator = client.group

Fluxo de dados

  • Entrada: os frames são decodificados em binary nodes, parseados e normalizados em payloads de eventos tipados, e então emitidos (message, receipt, group, …).
  • Saída: sua chamada a um coordinator (por exemplo, client.message.send) é construída em um node de protocolo, criptografada e escrita no socket; o coordinator resolve assim que o servidor envia o ack.

Convenções de engenharia

Se você ler o código-fonte, estas convenções são onipresentes e explicam boa parte do formato da API:
  • Uint8Array em todo lugar para dados binários (Buffer é evitado), com views zero-copy nos caminhos quentes.
  • Apenas named exports — não há default exports.
  • Sem enums — as constantes usam Object.freeze({ ... } as const), expostas como os objetos WA_*.
  • Estruturas em memória limitadas para evitar crescimento ilimitado em processos de longa duração.

A seguir

Autenticação

Pareamento com QR ou um código de 8 dígitos, e o ciclo de vida das credenciais.

Eventos

O mapa completo de eventos e como escutá-los.

Stores

Providers, domínios e backends.

Configuração

Cada campo de WaClientOptions explicado.
Last modified on May 27, 2026