← All articles

Restored message operations and more useful delivery snapshots

The 5.5 release restores patch-backed send and group operations, preserves ACK snapshots and tightens stream cleanup around the new APIs.

OpenWA 5.5 restores patch-backed attachment sending, URL downloads, message editing, reactions, group contacts and participant listeners. These SDK bindings use the corresponding current runtime patches, so their presence in the package and their native WhatsApp implementation are both part of the working path.

Choose SDK or Easy API

Use the tabs below to choose an embedded Node.js SDK or an HTTP client. SDK examples assume a ready client. For Easy API, start the server, scan its QR, and use the printed address. Set these variables in the shell that runs your examples:

Easy API setup
export OPENWA_API_URL='http://127.0.0.1:8080'export WA_API_KEY='REPLACE_WITH_YOUR_API_KEY'npx @open-wa/wa-automate@5.5.1 \  --host 127.0.0.1 --port 8080 --api-key "$WA_API_KEY"

Python examples use requests: install it with python -m pip install requests. JavaScript examples use Node.js 22.21.1 or later and its built-in fetch. Keep the API key on your application server. Method responses contain { success: true, data }; the examples read data. The API explorer at /api-docs/ lists your server's routes and inputs.

Follow the message after submission

ACK callbacks preserve the available message snapshot, making it useful to connect a submitted message with later acknowledgement changes:

Node.js SDK
const listener = client.onAck(message => {  console.log(message.id, message.ack);});// When finished observing:listener.off();

The HTTP examples display SSE frames. Each data: JSON envelope contains payload.ack, including the message ID and available ACK snapshot. Open the stream before sending, close it when finished, and reconnect after a disconnect. Missed frames are not replayed.

A returned message ID is a submission result. Delivery and read acknowledgements arrive later, and neither API startup nor an HTTP success substitutes for those observations. If a connection drops after submission, inspect the message rather than automatically duplicating an uncertain operation.

Keep group and listener state useful

Group contact reads and participant changes are restored through the event bridge. onGlobalParticipantsChanged observes changes across the session's groups. Shared event subscriptions and scoped cleanup are restored too, so subscriptions can be released with the client lifecycle instead of retaining abandoned resources.

The new event and RSVP contracts have validated JSON serializers, and serving references derive from the same method schemas. The release also moves the coordinated Effect package family to stable v4 and improves stream shutdown. Those changes support the SDK's new media and listener work without requiring applications to expose internal scopes or decoder identifiers.

Native permissions and account support still govern each action. Read the message guide, group guide and session event guide for the relevant application workflows.