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 client.chat é o WaAppStateMutationCoordinator. Ele escreve mutations de app-state — as configurações por chat e por conta que o WhatsApp sincroniza entre todos os seus dispositivos vinculados (silenciar, fixar, arquivar, ler, labels, contatos, …). Há duas camadas:
  1. Helpers tipados de conveniência para as operações comuns (setChatMute, setChatPin, …).
  2. Um set / remove genérico que funciona contra qualquer schema de app-state registrado — para tudo que não tem um helper dedicado.
Mutations feitas em outro lugar chegam de volta como eventos mutation.

Helpers de conveniência

MétodoAssinaturaEfeito
setChatMute(chatJid, muted, muteEndTimestampMs?) => Promise<void>Silencia/dessilencia um chat, opcionalmente até um timestamp.
setChatPin(chatJid, pinned) => Promise<void>Fixa/desafixa um chat.
setChatArchive(chatJid, archived) => Promise<void>Arquiva/desarquiva um chat.
setChatRead(chatJid, read) => Promise<void>Marca um chat como lido/não lido.
setChatLock(chatJid, locked) => Promise<void>Bloqueia/desbloqueia um chat.
setMessageStar(message: WaAppStateMessageKey, starred) => Promise<void>Marca/desmarca uma mensagem com estrela.
clearChat(chatJid, options?: WaClearChatOptions) => Promise<void>Limpa as mensagens de um chat.
deleteChat(chatJid, options?: WaDeleteChatOptions) => Promise<void>Exclui um chat.
deleteMessageForMe(message: WaAppStateMessageKey, options?) => Promise<void>Exclui uma mensagem apenas para você.
setStatusPrivacy(input: WaSetStatusPrivacyInput) => Promise<void>Define quem pode ver o seu status.
setUserStatusMute(jid, muted) => Promise<void>Silencia/dessilencia o status de um contato.
setBroadcastList(input: WaSetBroadcastListInput) => Promise<void>Cria/atualiza uma lista de transmissão.
removeBroadcastList(id) => Promise<void>Exclui uma lista de transmissão.

Exemplos

// Silenciar por 8 horas
await client.chat.setChatMute(chatJid, true, Date.now() + 8 * 3600_000)
await client.chat.setChatMute(chatJid, false) // dessilenciar

await client.chat.setChatPin(chatJid, true)
await client.chat.setChatArchive(chatJid, true)
await client.chat.setChatRead(chatJid, true)
await client.chat.setChatLock(chatJid, true)
// Limpar / excluir um chat
await client.chat.clearChat(chatJid, { deleteStarred: false, deleteMedia: true })
await client.chat.deleteChat(chatJid, { deleteMedia: true })
Um WaAppStateMessageKey identifica uma única mensagem:
interface WaAppStateMessageKey {
  chatJid: string
  id: string
  fromMe: boolean
  participantJid?: string // remetente do grupo
}

await client.chat.setMessageStar(
  { chatJid, id: stanzaId, fromMe: false, participantJid: senderJid },
  true
)

await client.chat.deleteMessageForMe(
  { chatJid, id: stanzaId, fromMe: false },
  { deleteMedia: true }
)

Formatos de opções

interface WaClearChatOptions { deleteStarred?: boolean; deleteMedia?: boolean }
interface WaDeleteChatOptions { deleteMedia?: boolean }
interface WaDeleteMessageForMeOptions { deleteMedia?: boolean; messageTimestampMs?: number }

Status e listas de transmissão

await client.chat.setStatusPrivacy({
  mode: 'contacts',          // modo de distribuição
  userJids: [],              // para modos allow/deny
  shareToFB: false
})

await client.chat.setUserStatusMute(contactJid, true)

await client.chat.setBroadcastList({
  id: 'list-1',
  listName: 'Customers',
  participants: [{ lidJid, pnJid }],
  labelIds: ['label-1']
})
await client.chat.removeBroadcastList('list-1')

set / remove genérico

Para schemas sem um helper, use set (com campos de valor) ou remove (apenas índice). A entrada é plana: escolha um nome de schema, depois preencha os campos de índice do schema (id, chatJid, labelId, …) e os campos de valor lado a lado. O coordinator os roteia para o subcampo SyncActionValue correto.
set(input: WaSetMutationInput): Promise<void>
remove(input: WaRemoveMutationInput): Promise<void>
// Adiciona um contato à agenda
await client.chat.set({
  schema: 'Contact',
  id: '5511999999999@s.whatsapp.net',
  contactAction: { fullName: 'Maria Silva', firstName: 'Maria' }
})

// Cria uma label de chat (color é um índice de paleta do lado do servidor)
await client.chat.set({
  schema: 'LabelEdit',
  id: 'label-1',
  labelEditAction: { name: 'Pending', color: 0, isActive: true }
})

// Aplica essa label a um chat
await client.chat.set({
  schema: 'LabelJid',
  labelId: 'label-1',
  chatJid: '5511999999999@s.whatsapp.net',
  labelAssociationAction: { labeled: true }
})

// Salva uma resposta rápida de business
await client.chat.set({
  schema: 'QuickReply',
  id: 'qr-greeting',
  quickReplyAction: { shortcut: '/hi', message: 'Hi! How can I help?' }
})
remove recebe o mesmo formato menos os campos de valor:
await client.chat.remove({ schema: 'Contact', id: '5511999999999@s.whatsapp.net' })
await client.chat.remove({ schema: 'LabelJid', labelId: 'label-1', chatJid })
await client.chat.remove({ schema: 'QuickReply', id: 'qr-greeting' })
O nome do campo de valor (contactAction, labelEditAction, …) corresponde ao subcampo SyncActionValue do schema. Importe WA_APPSTATE_SCHEMAS para inspecionar as partes de índice de um schema e o campo de valor em tempo de execução.

Todos os schemas

Cada chave abaixo é um schema válido para set / remove (WaAppstateActionKey = keyof typeof WA_APPSTATE_SCHEMAS). Schemas com um ✓ também têm um helper tipado de conveniência.

Ações de chat

SchemaHelperPropósito
MutesetChatMuteSilenciar um chat.
PinsetChatPinFixar um chat.
ArchivesetChatArchiveArquivar um chat.
StarsetMessageStarMarcar uma mensagem com estrela.
MarkChatAsReadsetChatReadMarcar como lido/não lido.
ClearChatclearChatLimpar mensagens.
DeleteChatdeleteChatExcluir um chat.
DeleteMessageForMedeleteMessageForMeExcluir uma mensagem para mim.
ChatLockSettings / LockChatsetChatLockBloqueio de chat.
UnarchiveChatsSettingConfiguração global de desarquivar-ao-receber-mensagem.
ChatAssignment / ChatAssignmentOpenedStatusAtribuição de chat a agente.
FavoritesChats favoritos.

Contatos

SchemaPropósito
ContactContato da agenda.
LidContact / OutContactRegistros de contato LID / de saída.
PnForLidChat / ShareOwnPnLigação número de telefone ↔ LID.

Labels

SchemaPropósito
LabelEditCriar/editar/excluir uma definição de label.
LabelJidAssociar/desassociar uma label a um chat.
LabelReorderingReordenar labels.

Status e chamadas

SchemaHelperPropósito
StatusPrivacysetStatusPrivacyPrivacidade de distribuição de status.
UserStatusMutesetUserStatusMuteSilenciar o status de um contato.
VoipRelayAllCallsPrivacidade de relay-all-calls.
CallLogEntradas do log de chamadas.

Stickers

SchemaPropósito
FavoriteStickerStickers favoritos.
RemoveRecentStickerRemover dos recentes.

Business e marketing

SchemaHelperPropósito
BusinessBroadcastListsetBroadcastList / removeBroadcastListListas de transmissão.
QuickReplyRespostas rápidas de business.
BotWelcomeRequestMensagem de boas-vindas do bot.
BusinessBroadcastCampaign / BusinessBroadcastInsightsCampanhas e insights de broadcast.
MarketingMessage / MarketingMessageBroadcastMensagens de marketing.
AdsCtwaPerCustomerDataSharing / CustomerData / DetectedOutcomeStatusDados de Ads / CTWA.
BizAiSettingsNudge / AgentIA de business / agent.

Pagamentos

SchemaPropósito
PaymentInfo / PaymentTosInfo e termos de pagamento.
CustomPaymentMethods / MerchantPaymentPartnerMétodos de pagamento.
SubscriptionsSyncV2Assinaturas.

Threads de IA

SchemaPropósito
AiThreadDelete / AiThreadPin / AiThreadRenameGerenciamento de thread de IA.

Configurações e sistema

SchemaPropósito
SettingPushName / SettingsSyncPush name e configurações.
TimeFormat / LocaleSettingFormato de hora e locale.
DisableLinkPreviewsAlternância de pré-visualização de links.
PrimaryFeature / PrimaryVersionFuncionalidade/versão do dispositivo primário.
Nux / NoteEditExperiência de novo usuário / notas.
DeviceCapabilities / AndroidUnsupportedActionsSincronização de capacidade do dispositivo.
InteractiveMessageActionAção de mensagem interativa.
AvatarUpdatedMarcador de atualização de avatar.
ExternalWebBeta / WaffleAccountLinkStateWeb beta / vinculação de conta.
NctSaltSync / SentinelContabilidade interna de sincronização.
Favorites / CustomerDataDiversos.
Vários schemas (Sentinel, NctSaltSync, PrimaryVersion, DeviceCapabilities, …) são gerenciados internamente pelo engine de sincronização. Eles estão listados por completude porque o sistema de tipos os aceita, mas escrevê-los à mão pode dessincronizar o app-state — prefira os helpers de conveniência e os schemas de business documentados.

Sincronizando

MétodoAssinaturaPropósito
sync(options?) => Promise<WaAppStateSyncResult>Executa uma rodada de sincronização de app-state.
flushMutations() => Promise<void>Descarrega agora as mutations enfileiradas para o servidor.
getBlockedCollections(syncResult) => readonly string[]Coleções bloqueadas durante uma sincronização.
emitEventsFromSyncResult(syncResult) => voidReemite eventos mutation a partir de um resultado de sincronização.
Last modified on May 27, 2026