
WhatsApp API Multi Device Version
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!
Support for ARM
& AMD
Architecture along with MCP
Support
Download:
Breaking Changes
-
v6
- For REST mode, you need to run
<binary> rest
instead of<binary>
- for example:
./whatsapp rest
instead of./whatsapp
- for example:
- For MCP mode, you need to run
<binary> mcp
- for example:
./whatsapp mcp
- for example:
- For REST mode, you need to run
Feature
-
Send WhatsApp message via http API, docs/openapi.yml for more details
-
MCP (Model Context Protocol) Server Support - Integrate with AI agents and tools using standardized protocol
-
Mention someone
-
@phoneNumber
- example:
Hello @628974812XXXX, @628974812XXXX
-
-
Post Whatsapp Status
-
Compress image before send
-
Compress video before send
-
Change OS name become your app (it's the device name when connect via mobile)
-
--os=Chrome
or--os=MyApplication
-
-
Basic Auth (able to add multi credentials)
-
--basic-auth=kemal:secret,toni:password,userName:secretPassword
, or you can simplify -
-b=kemal:secret,toni:password,userName:secretPassword
-
-
Customizable port and debug mode
-
--port 8000
-
--debug true
-
-
Auto reply message
-
--autoreply="Don't reply this message"
-
-
Webhook for received message
-
--webhook="http://yourwebhook.site/handler"
, or you can simplify -
-w="http://yourwebhook.site/handler"
-
-
Webhook Secret Our webhook will be sent to you with an HMAC header and a sha256 default key
secret
.You may modify this by using the option below:
-
--webhook-secret="secret"
-
Configuration
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):
- Command-line flags (highest priority)
- Environment variables
-
.env
file (lowest priority)
Environment Variables
To use environment variables:
- Copy
.env.example
to.env
in your project root - Modify the values in
.env
according to your needs - Or set the same variables as system environment variables
See .env.example for all available configuration options.
Note: Command-line flags will override any values set in environment variables or .env
file.
- For more command
./main --help
Required (without docker)
- Mac OS:
-
brew install ffmpeg
-
export CGO_CFLAGS_ALLOW="-Xpreprocessor"
-
- Linux:
-
sudo apt update
-
sudo apt install ffmpeg
-
- Windows (not recomended, prefer using WSL):
- install ffmpeg, download here
- add to ffmpeg to environment variable
How to use
Basic
- Clone this repo:
git clone https://github.com/aldinokemal/go-whatsapp-web-multidevice
- Open the folder that was cloned via cmd/terminal.
- run
cd src
- run
go run main.go
- Open
http://localhost:3000
Docker (you don't need to install in required)
- Clone this repo:
git clone https://github.com/aldinokemal/go-whatsapp-web-multidevice
- Open the folder that was cloned via cmd/terminal.
- run
docker-compose up -d --build
- open
http://localhost:3000
Build your own binary
- Clone this repo
git clone https://github.com/aldinokemal/go-whatsapp-web-multidevice
- Open the folder that was cloned via cmd/terminal.
- run
cd src
- run
- Linux & MacOS:
go build -o whatsapp
- Windows (CMD / PowerShell):
go build -o whatsapp.exe
- Linux & MacOS:
- run
- Linux & MacOS:
./whatsapp
- run
./whatsapp --help
for more detail flags
- run
- Windows:
.\whatsapp.exe
or you can double-click it- run
.\whatsapp.exe --help
for more detail flags
- run
- Linux & MacOS:
- open
http://localhost:3000
in browser
MCP Server (Model Context Protocol)
This application can also run as an MCP server, allowing AI agents and tools to interact with WhatsApp through a standardized protocol.
- Clone this repo
git clone https://github.com/aldinokemal/go-whatsapp-web-multidevice
- Open the folder that was cloned via cmd/terminal.
- run
cd src
- run
go run main.go mcp
or build the binary and run./whatsapp mcp
- The MCP server will start on
http://localhost:8080
by default
MCP Server Options
-
--host localhost
- Set the host for MCP server (default: localhost) -
--port 8080
- Set the port for MCP server (default: 8080)
Available MCP Tools
-
whatsapp_send_text
- Send text messages -
whatsapp_send_contact
- Send contact cards -
whatsapp_send_link
- Send links with captions -
whatsapp_send_location
- Send location coordinates
MCP Endpoints
- SSE endpoint:
http://localhost:8080/sse
- Message endpoint:
http://localhost:8080/message
MCP Configuration
make sure you have running MCP server, ./whatsapp mcp
{
"mcpServers": {
"whatsapp": {
"url": "http://localhost:8080/sse"
}
}
Production Mode REST (docker)
docker run --detach --publish=3000:3000 --name=whatsapp --restart=always --volume=$(docker volume create --name=whatsapp):/app/storages aldinokemal2104/go-whatsapp-web-multidevice --autoreply="Dont't reply this message please"
Production Mode REST (docker compose)
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:
Production Mode (binary)
- download binary from release
You can fork or edit this source code !
Current API
MCP (Model Context Protocol) API
- MCP server provides standardized tools for AI agents to interact with WhatsApp
- Supports Server-Sent Events (SSE) transport
- Available tools:
whatsapp_send_text
,whatsapp_send_contact
,whatsapp_send_link
,whatsapp_send_location
- Compatible with MCP-enabled AI tools and agents
HTTP REST API
- API Specification Document.
- Check docs/openapi.yml for detailed API specifications.
- Use SwaggerEditor to visualize the API.
- Generate HTTP clients using openapi-generator.
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 |
✅ | 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 | POST | /group/participants/requested |
✅ | Approve Requested Participant in Group | POST | /group/participants/requested/approve |
✅ | Reject Requested Participant in Group | POST | /group/participants/requested/reject |
✅ | Unfollow Newsletter | POST | /newsletter/unfollow |
✅ = Available
❌ = Not Available Yet
User Interface
MCP UI
- Setup MCP (tested in cursor)
- Test MCP
- Successfully setup MCP
HTTP REST API UI
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 | ![]() |
Revoke Message | ![]() |
Delete Message | ![]() |
Reaction Message | ![]() |
Edit Message | ![]() |
User Info | ![]() |
User Avatar | ![]() |
My Privacy | ![]() |
My Group | ![]() |
Create Group | ![]() |
Join Group with LInk | ![]() |
Auto Reply | ![]() |
Basic Auth Prompt | ![]() |
Manage Participant | ![]() |
My Newsletter | ![]() |
Mac OS NOTE
- Please do this if you have an error (invalid flag in pkg-config --cflags: -Xpreprocessor)
export CGO_CFLAGS_ALLOW="-Xpreprocessor"
Important
- This project is unofficial and not affiliated with WhatsApp.
- Please use official WhatsApp API to avoid any issues.
- We only able to run MCP or REST API, this is limitation from whatsmeow library. independent MCP will be available in the future.
相关推荐
AI's query engine - Platform for building AI that can answer questions over large scale federated data. - The only MCP Server you'll ever need
Vibe coding should have human in the loop! interactive-mcp: Local, cross-platform MCP server for interact with your AI Agent
A simple Model Context Protocol (MCP) server that integrates with Notion's API to manage my personal todo list.
Simple solution to give Claude ability to check current time via MCP