Skip to content

aldinokemal/go-whatsapp-web-multidevice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WhatsApp API Multi Device Version

Patreon
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!


release version

Build Image

release windows release linux release macos

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 MCP mode, you need to run <binary> mcp
      • for example: ./whatsapp mcp

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):

  1. Command-line flags (highest priority)
  2. Environment variables
  3. .env file (lowest priority)

Environment Variables

You can configure the application using environment variables. Configuration can be set in three ways (in order of priority):

  1. Command-line flags (highest priority)
  2. Environment variables
  3. .env file (lowest priority)

To use environment variables:

  1. Copy .env.example to .env in your project root (cp src/.env.example src/.env)
  2. Modify the values in .env according to your needs
  3. Or set the same variables as system environment variables

Available Environment Variables

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.

  • For more command ./whatsapp --help

Requirements

System Requirements

  • Go 1.24.0 or higher (for building from source)
  • FFmpeg (for media processing)

Platform Support

  • Linux (x86_64, ARM64)
  • macOS (Intel, Apple Silicon)
  • Windows (x86_64) - WSL recommended

Dependencies (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):

How to use

Basic

  1. Clone this repo: git clone https://github.com/aldinokemal/go-whatsapp-web-multidevice
  2. Open the folder that was cloned via cmd/terminal.
  3. run cd src
  4. run go run . rest (for REST API mode)
  5. Open http://localhost:3000

Docker (you don't need to install in required)

  1. Clone this repo: git clone https://github.com/aldinokemal/go-whatsapp-web-multidevice
  2. Open the folder that was cloned via cmd/terminal.
  3. run docker-compose up -d --build
  4. open http://localhost:3000

Build your own binary

  1. Clone this repo git clone https://github.com/aldinokemal/go-whatsapp-web-multidevice
  2. Open the folder that was cloned via cmd/terminal.
  3. run cd src
  4. run
    1. Linux & MacOS: go build -o whatsapp
    2. Windows (CMD / PowerShell): go build -o whatsapp.exe
  5. run
    1. Linux & MacOS: ./whatsapp rest (for REST API mode)
      1. run ./whatsapp --help for more detail flags
    2. Windows: .\whatsapp.exe rest (for REST API mode)
      1. run .\whatsapp.exe --help for more detail flags
  6. 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.

  1. Clone this repo git clone https://github.com/aldinokemal/go-whatsapp-web-multidevice
  2. Open the folder that was cloned via cmd/terminal.
  3. run cd src
  4. run go run . mcp or build the binary and run ./whatsapp mcp
  5. 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 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"
    }
  }
}

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 rest --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)

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

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

User Interface

MCP UI

  • Setup MCP (tested in cursor) Setup MCP
  • Test MCP Test MCP
  • Successfully setup MCP Success MCP

HTTP REST API UI

Description Image
Homepage Homepage
Login Login
Login With Code Login With Code
Send Message Send Message
Send Image Send Image
Send File Send File
Send Video Send Video
Send Contact Send Contact
Send Location Send Location
Send Audio Send Audio
Send Poll Send Poll
Send Presence Send Presence
Revoke Message Revoke Message
Delete Message Delete Message
Reaction Message Reaction Message
Edit Message Edit Message
User Info User Info
User Avatar User Avatar
My Privacy My Privacy
My Group My Group
Create Group My Group
Join Group with LInk My Group
Auto Reply Auto Reply
Basic Auth Prompt Basic Auth Prompt
Manage Participant Manage Participant
My Newsletter List 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.