aldinokemal / go-whatsapp-web-multidevice
- вторник, 1 июля 2025 г. в 00:00:02
 
API for Whatsapp Web Multi Device Version, Support UI, Webhook & MCP
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!
Download:
v6
<binary> rest instead of <binary>
./whatsapp rest instead of <binary> mcp
./whatsapp mcpSend 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
@phoneNumberHello @628974812XXXX, @628974812XXXXPost 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=MyApplicationBasic Auth (able to add multi credentials)
--basic-auth=kemal:secret,toni:password,userName:secretPassword, or you can simplify-b=kemal:secret,toni:password,userName:secretPasswordCustomizable port and debug mode
--port 8000--debug trueAuto 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"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 Yetexport CGO_CFLAGS_ALLOW="-Xpreprocessor"