Skip to main content

1. Start the server

The image’s default command is rest, so no arguments are needed. The same image is published as ghcr.io/aldinokemal/go-whatsapp-web-multidevice.
Check it is up:
Basic Auth is optional but strongly recommended. Without APP_BASIC_AUTH, every route except /health is open to anyone who can reach the port.

2. Create a device

Each WhatsApp account lives in a device slot. Create one and give it an ID you will reuse:
Omit device_id to get a generated UUID.

3. Pair the account

Open results.qr_link in a browser and scan it from WhatsApp → Linked devices → Link a device. The code expires after results.qr_duration seconds; request a new one if it lapses.
Confirm the device is logged in (results.is_logged_in should be true):

4. Send a message

phone takes a number with country code and no + or spaces, or a full JID such as 628123456789@s.whatsapp.net or 120363025246125486@g.us for a group. With only one device registered, X-Device-Id is optional.

5. Receive messages

Restart with a webhook URL and GOWA will POST every event to it:
See Webhooks for payloads and signature checks.

Next steps

Installation

Docker Compose, reverse proxy, PostgreSQL.

Configuration reference

Every flag and environment variable.

Multi-device

Run several accounts on one server.

API reference

All endpoints.