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 mcpv7@phoneNumberHello @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 needs| Variable | 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 --helpbrew install ffmpegexport CGO_CFLAGS_ALLOW="-Xpreprocessor"sudo apt updatesudo apt install ffmpeggit clone https://github.com/aldinokemal/go-whatsapp-web-multidevicecd srcgo run . rest (for REST API mode)http://localhost:3000git clone https://github.com/aldinokemal/go-whatsapp-web-multidevicedocker-compose up -d --buildhttp://localhost:3000git clone https://github.com/aldinokemal/go-whatsapp-web-multidevicecd srcgo build -o whatsappgo 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-multidevicecd srcgo run . mcp or build the binary and run ./whatsapp mcphttp://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/ssehttp://localhost:8080/messageMake 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