WaClient and its coordinators, with code-grounded descriptions. Dedicated pages go deeper for message types, chat mutations, and the low-level API.
WaClient
Ignoring inbound stanzas
client.ignoreKey(input) drops matching <message>, <receipt>, <notification>, <presence>, <chatstate>, and <call> stanzas before any handler — including the persistence and decryption paths — sees them. The coordinator still sends the appropriate ack so the server stops re-delivering.
It accepts two shapes:
Declarative descriptor — WaIgnoreKey
Multiple top-level fields AND together; the
remoteJid array ORs. At least one of remoteJid / fromMe / id / participant is required — empty descriptors and empty arrays throw.
Predicate — WaIgnoreKeyPredicate
For anything the descriptor can’t express (chat-kind filters, custom rules combining several fields), pass a predicate (ctx: WaIgnoreKeyContext) => boolean. Return true to drop. The lib has already parsed the wire-format node before calling you — no BinaryNode digging required.
WaIgnoreKeyContext carries the same fields the descriptor matches on, already parsed:
The predicate sees the device-stripped
from / participant — but no PN ↔ LID alt-attr resolution. The descriptor form is what handles the PN ↔ LID part automatically; if you need both per-JID matching with alt-form coverage and a custom rule, prefer the descriptor’s remoteJid with only.Stream-control nodes and the connection-critical
success / failure tags bypass filters so the auth flow stays intact.Coordinator getters
auth
client.auth (WaAuthClient). Pairing is mostly event-driven (Authentication); these are the user-facing entry points.
message
WaMessageCoordinator — see Sending & Receiving.
source is a WaIncomingMessageEvent or a raw Proto.IMessage.
presence
WaPresenceCoordinator — see Presence & status.
chat
WaAppStateMutationCoordinator — full reference (incl. the generic set/remove and all schemas) in Chat mutations.
Pin and archive are mutually exclusive (pinning clears archive and vice-versa); locking clears both.
clearChat/deleteChat/deleteMessageForMe are local-only (your devices) — use a revoke to delete for everyone. A mute timer doesn’t auto-unmute client-side.group
WaGroupCoordinator — see Groups & communities. Participant ops return one WaParticipantActionResult per jid — the IQ succeeds as a whole even when some entries fail, so check each result’s status / code.
Methods marked (MEX) require an active MEX transport and throw when it’s unavailable.
newsletter
WaNewsletterCoordinator — see Newsletters. Composed of discovery, admin, and messaging ops.
Discovery
Admin
Messaging
privacy
WaPrivacyCoordinator — see Privacy.
profile
WaProfileCoordinator — see Profile.
status
WaStatusCoordinator — see Status broadcasts.
broadcastList
WaBroadcastListCoordinator.
business
WaBusinessCoordinator — see Business.
bot
WaBotCoordinator — see Bots.
WaEmailCoordinator.
mobile
WaMobileCoordinator — see Hosting companion devices. Requires a mobile-primary session; link/revoke/publish methods throw on a Web/companion connection.
lowlevel
WaLowLevelCoordinator — full reference in Low-level API: sendNode, query, registerIncomingHandler, unregisterIncomingHandler, registerIncomingStanzaFilter.
For top-level helpers exported from the package root — message inspection (
getContentType), target normalization (resolveMessageTarget), JID predicates and constants — see JIDs, helpers & constants. For typed business hours, see Profile, privacy & business.