GOWA - WhatsApp REST API with support for UI, Webhooks, and MCP. Built with Golang for efficient memory use.
If you're using this tools to generate income, consider supporting its development by becoming a Patreon member!
Your support helps ensure the library stays maintained and receives regular updates!
ARM
& AMD
Architecture along with MCP
SupportDownload:
@aldinokemal2104/n8n-nodes-gowa
-> Installv6
<binary> rest
instead of <binary>
./whatsapp rest
instead of <binary> mcp
./whatsapp mcp
v7
@phoneNumber
Hello @628974812XXXX, @628974812XXXX
--os=Chrome
or --os=MyApplication
--basic-auth=kemal:secret,toni:password,userName:secretPassword
, or you can simplify-b=kemal:secret,toni:password,userName:secretPassword
--port 8000
--debug true
--autoreply="Don't reply this message"
--webhook="http://yourwebhook.site/handler"
, or you can simplify-w="http://yourwebhook.site/handler"
secret
.You may modify this by using the option below:
--webhook-secret="secret"
You can configure the application using either command-line flags (shown above) or environment variables. Configuration
can be set in three ways (in order of priority):
.env
file (lowest priority)You can configure the application using environment variables. Configuration can be set in three ways (in order of
priority):
.env
file (lowest priority)To use environment variables:
.env.example
to .env
in your project root (cp src/.env.example src/.env
).env
according to your needsVariable | Description | Default | Example |
---|---|---|---|
APP_PORT | Application port | 3000 | APP_PORT=8080 |
APP_DEBUG | Enable debug logging | false | APP_DEBUG=true |
APP_OS | OS name (device name in WhatsApp) | Chrome | APP_OS=MyApp |
APP_BASIC_AUTH | Basic authentication credentials | - | APP_BASIC_AUTH=user1:pass1,user2:pass2 |
APP_CHAT_FLUSH_INTERVAL | Chat flush interval in days | 7 | APP_CHAT_FLUSH_INTERVAL=30 |
DB_URI | Database connection URI | file:storages/whatsapp.db?_foreign_keys=on | DB_URI=postgres://user:pass@host/db |
WHATSAPP_AUTO_REPLY | Auto-reply message | - | WHATSAPP_AUTO_REPLY="Auto reply message" |
WHATSAPP_WEBHOOK | Webhook URL(s) for events (comma-separated) | - | WHATSAPP_WEBHOOK=https://webhook.site/xxx |
WHATSAPP_WEBHOOK_SECRET | Webhook secret for validation | secret | WHATSAPP_WEBHOOK_SECRET=super-secret-key |
WHATSAPP_ACCOUNT_VALIDATION | Enable account validation | true | WHATSAPP_ACCOUNT_VALIDATION=false |
WHATSAPP_CHAT_STORAGE | Enable chat storage | true | WHATSAPP_CHAT_STORAGE=false |
Note: Command-line flags will override any values set in environment variables or .env
file.
./whatsapp --help
brew install ffmpeg
export CGO_CFLAGS_ALLOW="-Xpreprocessor"
sudo apt update
sudo apt install ffmpeg
git clone https://github.com/aldinokemal/go-whatsapp-web-multidevice
cd src
go run . rest
(for REST API mode)http://localhost:3000
git clone https://github.com/aldinokemal/go-whatsapp-web-multidevice
docker-compose up -d --build
http://localhost:3000
git clone https://github.com/aldinokemal/go-whatsapp-web-multidevice
cd src
go build -o whatsapp
go build -o whatsapp.exe
./whatsapp rest
(for REST API mode)./whatsapp --help
for more detail flags.\whatsapp.exe rest
(for REST API mode).\whatsapp.exe --help
for more detail flagshttp://localhost:3000
in browserThis application can also run as an MCP server, allowing AI agents and tools to interact with WhatsApp through a
standardized protocol.
git clone https://github.com/aldinokemal/go-whatsapp-web-multidevice
cd src
go run . mcp
or build the binary and run ./whatsapp mcp
http://localhost:8080
by default--host localhost
- Set the host for MCP server (default: localhost)--port 8080
- Set the port for MCP server (default: 8080)whatsapp_send_text
- Send text messageswhatsapp_send_contact
- Send contact cardswhatsapp_send_link
- Send links with captionswhatsapp_send_location
- Send location coordinateshttp://localhost:8080/sse
http://localhost:8080/message
Make sure you have the MCP server running: ./whatsapp mcp
For AI tools that support MCP with SSE (like Cursor), add this configuration:
{
"mcpServers": {
"whatsapp": {
"url": "http://localhost:8080/sse"
}
}
}
docker run --detach --publish=3000:3000 --name=whatsapp --restart=always --volume=$(docker volume create --name=whatsapp):/app/storages aldinokemal2104/go-whatsapp-web-multidevice rest --autoreply="Dont't reply this message please"
create docker-compose.yml
file with the following configuration:
services:
whatsapp:
image: aldinokemal2104/go-whatsapp-web-multidevice
container_name: whatsapp
restart: always
ports:
- "3000:3000"
volumes:
- whatsapp:/app/storages
command:
- rest
- --basic-auth=admin:admin
- --port=3000
- --debug=true
- --os=Chrome
- --account-validation=false
volumes:
whatsapp:
or with env file
services:
whatsapp:
image: aldinokemal2104/go-whatsapp-web-multidevice
container_name: whatsapp
restart: always
ports:
- "3000:3000"
volumes:
- whatsapp:/app/storages
environment:
- APP_BASIC_AUTH=admin:admin
- APP_PORT=3000
- APP_DEBUG=true
- APP_OS=Chrome
- APP_ACCOUNT_VALIDATION=false
volumes:
whatsapp:
You can fork or edit this source code !
whatsapp_send_text
, whatsapp_send_contact
, whatsapp_send_link
, whatsapp_send_location
Feature | Menu | Method | URL |
---|---|---|---|
✅ | Login with Scan QR | GET | /app/login |
✅ | Login With Pair Code | GET | /app/login-with-code |
✅ | Logout | GET | /app/logout |
✅ | Reconnect | GET | /app/reconnect |
✅ | Devices | GET | /app/devices |
✅ | User Info | GET | /user/info |
✅ | User Avatar | GET | /user/avatar |
✅ | User Change Avatar | POST | /user/avatar |
✅ | User Change PushName | POST | /user/pushname |
✅ | User My Groups | GET | /user/my/groups |
✅ | User My Newsletter | GET | /user/my/newsletters |
✅ | User My Privacy Setting | GET | /user/my/privacy |
✅ | User My Contacts | GET | /user/my/contacts |
✅ | Send Message | POST | /send/message |
✅ | Send Image | POST | /send/image |
✅ | Send Audio | POST | /send/audio |
✅ | Send File | POST | /send/file |
✅ | Send Video | POST | /send/video |
✅ | Send Contact | POST | /send/contact |
✅ | Send Link | POST | /send/link |
✅ | Send Location | POST | /send/location |
✅ | Send Poll / Vote | POST | /send/poll |
✅ | Send Presence | POST | /send/presence |
✅ | Revoke Message | POST | /message/:message_id/revoke |
✅ | React Message | POST | /message/:message_id/reaction |
✅ | Delete Message | POST | /message/:message_id/delete |
✅ | Edit Message | POST | /message/:message_id/update |
✅ | Read Message (DM) | POST | /message/:message_id/read |
✅ | Star Message | POST | /message/:message_id/star |
✅ | Unstar Message | POST | /message/:message_id/unstar |
✅ | Join Group With Link | POST | /group/join-with-link |
✅ | Leave Group | POST | /group/leave |
✅ | Create Group | POST | /group |
✅ | Add Participants in Group | POST | /group/participants |
✅ | Remove Participant in Group | POST | /group/participants/remove |
✅ | Promote Participant in Group | POST | /group/participants/promote |
✅ | Demote Participant in Group | POST | /group/participants/demote |
✅ | List Requested Participants in Group | GET | /group/participant-requests |
✅ | Approve Requested Participant in Group | POST | /group/participant-requests/approve |
✅ | Reject Requested Participant in Group | POST | /group/participant-requests/reject |
✅ | Unfollow Newsletter | POST | /newsletter/unfollow |
✅ = Available
❌ = Not Available Yet
Description | Image |
---|---|
Homepage | ![]() |
Login | ![]() |
Login With Code | ![]() |
Send Message | ![]() |
Send Image | ![]() |
Send File | ![]() |
Send Video | ![]() |
Send Contact | ![]() |
Send Location | ![]() |
Send Audio | ![]() |
Send Poll | ![]() |
Send Presence | ![]() |
Send Link | ![]() |
My Group | ![]() |
Create Group | ![]() |
Join Group with LInk | ![]() |
Manage Participant | ![]() |
My Newsletter | ![]() |
My Contacts | ![]() |
export CGO_CFLAGS_ALLOW="-Xpreprocessor"
aldinokemal/go-whatsapp-web-multidevice
February 9, 2022
July 7, 2025
Go