MCPcopy
hub / github.com/devlikeapro/waha

github.com/devlikeapro/waha @2026.6.2 sqlite

repository ↗ · DeepWiki ↗ · release 2026.6.2 ↗
6,687 symbols 15,075 edges 561 files 666 documented · 10%
README

WAHA

WAHA - WhatsApp HTTP API (REST API) that you can install on your own server and run in less than 5 minutes!

Docker Pulls

Tables of Contents

Quick start

Requirements

Only thing that you must have - installed docker. Please follow the original instruction how to install docker ->.

When you are ready - come back and follows the below steps to send the first text message to WhatsApp via HTTP API!

Send your first message

Let's go over steps that allow you to send your first text message via WhatsApp HTTP API!

1. Download image

Assuming you have installed Docker, let's download the image.

docker pull devlikeapro/waha
docker login -u devlikeapro -p {KEY}
docker pull devlikeapro/waha-plus
docker logout

Read more about how to get PASSWORD for ➕ WAHA Plus

2. Run WhatsApp HTTP API

Run WhatsApp HTTP API:

docker run -it --rm -p 3000:3000/tcp --name waha devlikeapro/waha

# It prints logs and the last line must be
# WhatsApp HTTP API is running on: http://[::1]:3000

Open the link in your browser http://localhost:3000/ and you'll see API documentation (Swagger).

3. Start a new session

To start a new session you should have your mobile phone with installed WhatsApp application close to you.

Please go and read how what we'll need to a bit later: How to log in - the instruction on WhatsApp site

When your ready - find POST /api/sessions, click on Try it out, then Execute a bit below.

The example payload:

{
  "name": "default"
}

By using the request with name values you can start multiple session (WhatsApp accounts) inside the single docker container in Plus

4. Get and scan QR

Find GET /api/screenshot and execute it, it shows you QR code.

Scan the QR with your cell phone's WhatsApp app.

5. Get the screenshot

Execute GET /api/screenshot after a few seconds after scanning the QR - it'll show you the screenshot of you Whatsapp instance. If you can get the actual screenshot - then you're ready to start sending messages!

6. Send a text message

Let's send a text message - find POST /api/sendText in swagger and change chatId this way: use a phone international phone number without + symbol and add @c.us at the end.

For phone number 12132132131 the chatId is 12132132131@c.us.

The example payload:

{
  "chatId": "12132132130@c.us",
  "text": "Hi there!",
  "session": "default"
}

Also, you can use curl and send POST request like this:

# Phone without +
export PHONE=12132132130
curl -d "{\"chatId\": \"${PHONE}@c.us\", \"text\": \"Hello from WhatsApp HTTP API\" }" -H "Content-Type: application/json" -X POST http://localhost:3000/api/sendText

What is next?

Go and read the full documentation!

Development

Start the project

  1. Clone the repository
  2. Make sure you're using node>=22 (check .nvmrc to get the version)
  3. Install the whatsapp-rust-bridge prerequisites: ```bash

Bun runtime used by whatsapp-rust-bridge prepare scripts

curl -fsSL https://bun.sh/install | bash -s -- bun-v1.3.9

Rust nightly toolchain used for whatsapp-rust-bridge

curl -fsSL https://sh.rustup.rs | bash -s -- -y --default-toolchain nightly-2026-01-30 rustup target add wasm32-unknown-unknown cargo install wasm-pack --vers 0.14.0 --locked


4. Run the following commands:
```bash
# Install dependencies
yarn install
# Fetch and compile proto files
yarn gows:proto
# Run
yarn start
# open http://localhost:3000

Extension points exported contracts — how you extend this code

IMediaEngineProcessor (Interface)
* Engine specific media processor * Knows how to extract necessary attributes and fetch the data from Message [5 implementers]
src/core/media/IMediaEngineProcessor.ts
IEngineHelper (Interface)
(no doc) [8 implementers]
src/apps/chatwoot/waha/engines.ts
RMutexClient (Interface)
(no doc) [2 implementers]
src/modules/rmutex/types.ts
Completable (Interface)
(no doc) [1 implementers]
src/utils/reactive/complete.ts
WebSocket (Interface)
(no doc)
src/nestjs/ws/ws.ts
IApiKeyRepository (Interface)
(no doc) [6 implementers]
src/core/storage/IApiKeyRepository.ts
MessageToChatWootConverter (Interface)
(no doc) [25 implementers]
src/apps/chatwoot/messages/to/chatwoot/index.ts
RMutexLocked (Interface)
(no doc) [2 implementers]
src/modules/rmutex/types.ts

Core symbols most depended-on inside this repo

deserialize
called by 315
src/core/engines/gows/grpc/gows.ts
toObject
called by 311
src/core/engines/gows/grpc/gows.ts
get
called by 282
src/apps/app_sdk/services/IAppsService.ts
Activity
called by 275
src/core/abc/activity.ts
from
called by 253
src/core/engines/gows/grpc/gows.ts
serialize
called by 223
src/core/engines/gows/grpc/gows.ts
map
called by 220
src/apps/chatwoot/storage/MessageMappingService.ts
initialize
called by 189
src/core/engines/webjs/WebjsClientCore.ts

Shape

Method 3,766
Class 1,445
Function 1,257
Interface 150
Enum 65
Route 4

Languages

TypeScript100%
Python1%

Modules by API surface

src/core/engines/gows/grpc/gows.ts1,254 symbols
src/core/engines/webjs/_lodash.js490 symbols
src/core/engines/noweb/session.noweb.core.ts187 symbols
src/core/engines/wpp/session.wpp.core.ts169 symbols
src/core/engines/gows/session.gows.core.ts167 symbols
src/core/engines/webjs/session.webjs.core.ts163 symbols
src/core/abc/session.abc.ts134 symbols
src/core/engines/gows/grpc/gows_grpc_pb.js126 symbols
src/structures/webhooks.dto.ts70 symbols
src/structures/chatting.dto.ts66 symbols
src/apps/app_sdk/waha/WAHASelf.ts61 symbols
src/apps/chatwoot/waha/engines.ts58 symbols

Dependencies from manifests, versioned

@adiwajshing/baileysgithub:devlikeapro/B · 1×
@adiwajshing/keyed-db0.2.4 · 1×
@aws-sdk/client-s33.633.0 · 1×
@aws-sdk/s3-request-presigner3.633.0 · 1×
@bull-board/api6.9.1 · 1×
@bull-board/nestjs6.9.1 · 1×
@casl/ability6.8.0 · 1×
@figuro/chatwoot-sdk1.1.17 · 1×
@grpc/grpc-js1.14.1 · 1×
@grpc/proto-loader0.8.0 · 1×
@liaoliaots/nestjs-redis9 · 1×

Datastores touched

(mongodb)Database · 1 repos
postgresDatabase · 1 repos

For agents

$ claude mcp add waha \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact