← Back to Skills Marketplace
aldinokemal

GOWA - WhatsApp Automation

by aldinokemal · GitHub ↗ · v1.4.0
cross-platform ✓ Security Clean
1361
Downloads
2
Stars
2
Active Installs
8
Versions
Install in OpenClaw
/install gowa
Description
Interact with WhatsApp via GOWA (Go WhatsApp Web Multi-Device) REST API for personal automation. Supports sending messages with ghost mentions (@everyone), images, documents, group management, and more. Always use REST mode (http://localhost:3000) for production.
README (SKILL.md)

GOWA - WhatsApp Automation via REST API

Interact with WhatsApp through GOWA (Go WhatsApp Web Multi-Device) REST API for personal automation tasks.

Installation & Setup

GOWA is available at: https://github.com/aldinokemal/go-whatsapp-web-multidevice

Download

Go to the releases page and download the zip matching your OS and architecture.

Release files are named: whatsapp_VERSION_OS_ARCH.zip

Available platforms: linux (amd64/arm64/386), darwin (amd64/arm64), windows (amd64/386)

Run REST Server

./gowa rest

The server starts on http://localhost:3000 by default.

Login (First Time)

Open http://localhost:3000 in a browser, scan the QR code with WhatsApp on your phone to link the device.

Production Setup

GOWA runs in REST mode:

  • Base URL: http://localhost:3000
  • GOWA auto-connects to the device stored in the database — no X-Device-Id header needed for single-device setups.

⚠️ Important: Use REST API (port 3000) only. Do NOT use MCP mode - all schedulers and automation depend on REST.

Quick Examples

Ghost Mention (mention all without @)

curl -X POST http://localhost:3000/send/message \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "[email protected]",
    "message": "Important announcement",
    "mentions": ["@everyone"]
  }'

Send Text Message

curl -X POST http://localhost:3000/send/message \
  -H "Content-Type: application/json" \
  -d '{"phone": "628123456789", "message": "Hello!"}'

Send Image

curl -X POST http://localhost:3000/send/image \
  -F "phone=628xxx" \
  -F "caption=Photo" \
  -F "image=@/path/to/image.jpg"

Check Status

curl http://localhost:3000/app/status | jq .

Complete API Operations

Messages

Send Text with Ghost Mention:

  • Endpoint: POST /send/message
  • Body: {"phone": "[email protected]", "message": "text", "mentions": ["@everyone"]}
  • @everyone mentions all members without showing @ in text ✅

Reply to Message:

  • Body: {"phone": "...", "message": "...", "reply_message_id": "msg_id"}

Disappearing Message:

  • Body: {"phone": "...", "message": "...", "duration": 86400} (seconds)

Forward Message:

  • Body: {"phone": "...", "message": "...", "is_forwarded": true}

Media

Send Image:

  • Endpoint: POST /send/image
  • Form data: phone, caption, image (file), compress (bool)

Send Document:

  • Endpoint: POST /send/file
  • Form data: phone, caption, file

Send Video:

  • Endpoint: POST /send/video
  • Form data: phone, caption, video, compress (bool)

Send Audio:

  • Endpoint: POST /send/audio
  • Form data: phone, audio

Send Sticker:

  • Endpoint: POST /send/sticker
  • Form data: phone, sticker (auto-converts to WebP)

Send Contact:

  • Endpoint: POST /send/contact
  • Body: {"phone": "...", "contact_name": "...", "contact_phone": "..."}

Send Location:

  • Endpoint: POST /send/location
  • Body: {"phone": "...", "latitude": 0.0, "longitude": 0.0}

Send Link:

  • Endpoint: POST /send/link
  • Body: {"phone": "...", "link": "...", "caption": "..."}

Send Poll:

  • Endpoint: POST /send/poll
  • Body: {"phone": "...", "question": "...", "options": ["A", "B"]}

Connection & Status

Get Status:

  • GET /app/status
  • Returns: {"is_connected": true, "is_logged_in": true}

Reconnect:

  • GET /app/reconnect

Logout:

  • GET /app/logout

Get QR Code (for login):

  • GET /app/login
  • Returns: PNG image (QR code to scan)

Login with Pairing Code:

  • GET /app/login-with-code?phone=628xxx

Groups

List My Groups:

  • GET /user/my/groups
  • Returns: {results: {data: [...]}} - groups array is at .results.data
  • Example: curl ... | jq '.results.data[] | {Name, JID, Members: .Participants | length}'
  • Max 500 groups (WhatsApp protocol limit)

Get Group Info:

Create Group:

Get Group Participants:

Add Participant:

  • POST /group/participants
  • Body: {"group_jid": "...", "participants": ["[email protected]"]}

Remove Participant:

  • POST /group/participants/remove
  • Body: {"group_jid": "...", "participants": ["[email protected]"]}

Promote to Admin:

  • POST /group/participants/promote
  • Body: {"group_jid": "...", "participants": ["[email protected]"]}

Demote from Admin:

  • POST /group/participants/demote
  • Body: {"group_jid": "...", "participants": ["[email protected]"]}

Leave Group:

  • POST /group/leave
  • Body: {"group_jid": "..."}

Set Group Photo:

  • POST /group/photo
  • Form data: group_jid, photo

Set Group Name:

  • POST /group/name
  • Body: {"group_jid": "...", "name": "..."}

Set Group Description:

  • POST /group/topic
  • Body: {"group_jid": "...", "topic": "..."}

Get Invite Link:

Join via Link:

  • POST /group/join-with-link
  • Body: {"link": "https://chat.whatsapp.com/..."}

Contacts & Chats

List Contacts:

  • GET /user/my/contacts

Get Chats:

  • GET /chats

Get User Info:

  • GET /user/info?phone=628xxx

Check if User Exists:

  • GET /user/check?phone=628xxx

Message Operations

Revoke/Delete Message:

  • POST /message/{message_id}/revoke

React to Message:

  • POST /message/{message_id}/reaction
  • Body: {"emoji": "👍"}

Edit Message:

  • POST /message/{message_id}/update
  • Body: {"message": "edited text"}

Mark as Read:

  • POST /message/{message_id}/read

Star Message:

  • POST /message/{message_id}/star

Download Media:

  • GET /message/{message_id}/download

Phone Number Format

Ghost Mention Feature

How it works:

  • Use "mentions": ["@everyone"] in /send/message
  • All group members get notification
  • No @ symbol shown in message text (true ghost mention)
  • Tested and confirmed working ✅

Example for schedulers:

curl -s -X POST http://localhost:3000/send/message \
  -H 'Content-Type: application/json' \
  -d '{"phone": "[email protected]", "message": "Reminder text", "mentions": ["@everyone"]}' | jq .

API Reference

Full OpenAPI 3.0 spec available at:

Notes

  • Auto-compresses images and videos before sending
  • Auto-converts images to WebP for stickers
  • Max 500 groups can be retrieved (WhatsApp protocol limit)
  • All media files can be sent as file upload or URL
  • Supports disappearing messages with custom duration
  • Multi-device support available via X-Device-Id header when running multiple devices
  • Built by @aldinokemal: https://github.com/aldinokemal/go-whatsapp-web-multidevice
Usage Guidance
This skill is coherent: it expects you to run a local GOWA REST server and then uses localhost:3000 endpoints to control your WhatsApp account. Before installing or using it, consider: 1) Running the GOWA server locally and binding it to localhost only; enable Basic Auth if you plan to expose the server beyond your machine. 2) Scanning the GOWA GitHub releases yourself (verify checksums/signatures where available) rather than downloading from untrusted mirrors. 3) Remember that linking the server requires scanning a WhatsApp QR code — that effectively gives the server (and any automated agent calling it) full control of the linked WhatsApp account, including sending messages, exporting participants, and changing group settings. 4) If you allow the agent to invoke the skill autonomously, it could send messages without separate consent — restrict invocation or require confirmation if that matters. If you want extra assurance, review the GOWA source code or run it in an isolated environment before granting it access to your primary account.
Capability Analysis
Type: OpenClaw Skill Name: gowa Version: 1.4.0 The skill bundle is designed to interact with a locally running WhatsApp REST API (GOWA). All `curl` commands and network interactions specified in `SKILL.md` are directed to `http://localhost:3000`. File access is limited to sending local files as media, which is a core function of the stated purpose. While the skill instructs the user to download and run a third-party binary from GitHub, this is a transparent setup step, and the skill itself contains no evidence of intentional harmful behavior, data exfiltration, persistence mechanisms, or prompt injection attempts against the agent.
Capability Assessment
Purpose & Capability
Name and description (GOWA WhatsApp automation) match the SKILL.md and references: the instructions target a local GOWA REST server (http://localhost:3000) and expose endpoints for messaging, media, groups, and device management. Nothing requested (no env vars, no external credentials) is unrelated to WhatsApp automation.
Instruction Scope
Runtime instructions confine actions to calling a local REST server and uploading local media files when needed. The SKILL.md does not instruct reading unrelated system files, exfiltrating data, or contacting external endpoints beyond the documented API. Note: sending media requires access to local file paths and operations that control your WhatsApp account (sending messages, exporting participants) — these are consistent with the stated purpose but are powerful actions on your account.
Install Mechanism
This is an instruction-only skill with no automated install script. Installation guidance points to GitHub releases (official project repo). No downloads or extract operations are performed by the skill itself, which reduces installation risk; the user is expected to download/run the server manually.
Credentials
The skill declares no required environment variables or credentials. The reference notes optional Basic Auth for the GOWA server (user-configured) but the skill does not demand secrets. The lack of unrelated credential requests is proportionate to the stated functionality.
Persistence & Privilege
always:false and no special privileges requested. The skill does not request persistent platform-wide presence or modify other skills. Note: autonomous model invocation is allowed by default on the platform — this would let the agent call the local REST endpoints without additional user prompts if the agent chooses to do so; that is a platform behavior, not specific to this skill.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install gowa
  3. After installation, invoke the skill by name or use /gowa
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.4.0
Security: Remove gowa_helper.py script (file exfiltration risk), remove wget/systemd examples. Skill is now pure API documentation with curl examples only.
v1.3.0
Remove hardcoded X-Device-Id header from all examples. GOWA auto-connects to the stored device in single-device setups.
v1.2.0
Re-publish: Installation guide with GitHub releases download, systemd service setup, REST API docs.
v1.1.2
Fix download example: use v8.2.0 which has actual binary assets, add note that not all releases include binaries.
v1.1.1
Fix download instructions: correct release asset naming (whatsapp_VERSION_OS_ARCH.zip) and list all available platforms.
v1.1.0
Add installation & setup instructions: download from GitHub releases, run REST server, and systemd service setup.
v1.0.1
Fixed API reference to use public GitHub URL instead of local path
v1.0.0
Initial release: WhatsApp automation via REST API with ghost mention support (@everyone), media sending, group management, and more. Built on go-whatsapp-web-multidevice.
Metadata
Slug gowa
Version 1.4.0
License
All-time Installs 2
Active Installs 2
Total Versions 8
Frequently Asked Questions

What is GOWA - WhatsApp Automation?

Interact with WhatsApp via GOWA (Go WhatsApp Web Multi-Device) REST API for personal automation. Supports sending messages with ghost mentions (@everyone), images, documents, group management, and more. Always use REST mode (http://localhost:3000) for production. It is an AI Agent Skill for Claude Code / OpenClaw, with 1361 downloads so far.

How do I install GOWA - WhatsApp Automation?

Run "/install gowa" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is GOWA - WhatsApp Automation free?

Yes, GOWA - WhatsApp Automation is completely free (open-source). You can download, install and use it at no cost.

Which platforms does GOWA - WhatsApp Automation support?

GOWA - WhatsApp Automation is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created GOWA - WhatsApp Automation?

It is built and maintained by aldinokemal (@aldinokemal); the current version is v1.4.0.

💬 Comments