🏭 Engines

Engines

Under the hood WAHA allows you to use different engines. You can control what you want to run by settings WHATSAPP_DEFAULT_ENGINE environment variables.

docker run -it -e "WHATSAPP_DEFAULT_ENGINE=WEBJS" devlikeapro/waha

If you have any problems with one engine - try another!

All engines are available in both Core and Plus versions.

WEBJS

👉 Read more about WEBJS

WHATSAPP_DEFAULT_ENGINE=WEBJS

A WhatsApp API client that connects through the WhatsApp Web browser app. It uses Puppeteer to run a real instance of Whatsapp Web to avoid getting blocked.

NOWEB

👉 Read more about NOWEB

WHATSAPP_DEFAULT_ENGINE=NOWEB

NOWEB engine does not require a browser to work with WhatsApp Web, it does so directly using a WebSocket. Not running Chromium saves you CPU and Memory, so you can run more instances on a single server!

Quotes from the users:

The server has 2 CPU and 8GB of memory. Today we have 85 sessions in this instance.

400 sessions with 4CPU and 32RAM. It’s working fine.

VENOM

👉 Read more about VENOM

WHATSAPP_DEFAULT_ENGINE=VENOM

It’s a high-performance system developed with JavaScript to create a bot for WhatsApp. It uses Puppeteer to run a real instance of Whatsapp Web to avoid getting blocked.

Docker images

WAHA provides few docker images with different setup.

ImageCPUBrowser
WAHA Plus
devlikeapro/waha-plus:latestx86Chromium
devlikeapro/waha-plus:chromex86Chrome (supports video)
devlikeapro/waha-plus:nowebx86None
devlikeapro/waha-plus:armARMChromium
devlikeapro/waha-plus:noweb-armARMNone
WAHA Core
devlikeapro/waha:latestx86Chromium
devlikeapro/waha:chromex86Chrome
devlikeapro/waha:nowebx86None
devlikeapro/waha:armARMChromium
devlikeapro/waha:noweb-armARMNone

Browsers

  • Chromium - is the default browser for WAHA. It’s a good choice for most cases.
  • Chrome - is a good choice if you need to receive videos in Plus version.
  • None - is a good choice if you want to use NOWEB engine.

CPU

  • x86 - is a good choice for most cases.
  • ARM - is a good choice if you’re using ARM processors (like Apple Silicon, Apple M1, etc.)

Versions

💡 You can pin WAHA version by adding -{version} at the end of image tag.

  • devlikeapro/waha-plus:chrome-{version} => devlikeapro/waha-plus:chrome-2024.6.1
  • devlikeapro/waha-plus:latest-{version} => devlikeapro/waha-plus:latest-2024.6.1

Features

Some engines may not support certain features. Here, you will find a list of supported endpoints and webhooks per engine.

SymbolMeaning
✔️The engines supports the feature.
➖The engine does not support this feature.
Please search for the issue about the endpoint in the project’s issue and upvote it by using the “👍” reaction on the issue’s description. This will help us determine the level of interest in the feature.
If you are unable to find the issue, please create a new one.
The feature available in WAHA Plus.

If you don’t specify WHATSAPP_DEFAULT_ENGINE environment variable - look at WEBJS engine, it’s the engine WAHA runs by default.

Protocols

WEBJSNOWEBVENOM
Run a browser (chromium\chrome) to communicate with WhatsApp✔️➖✔️
Communicate with WhatsApp via websocket (no browser)➖✔️➖

Endpoints

If you find any inconsistency with actual endpoints - please create an issue

WEBJSNOWEBVENOM
Session
POST /api/sessions/start✔️✔️✔️
POST /api/sessions/stop✔️✔️✔️
POST /api/sessions/logout✔️✔️✔️
GET /api/sessions/✔️✔️✔️
GET /api/sessions/{session}/me✔️✔️➖
Authentication
POST /api/{session}/auth/qr✔️✔️✔️
POST /api/{session}/auth/request-code➖✔️➖
POST /api/{session}/auth/authorize-code➖➖️
#113
➖
Screenshot
POST /api/screenshot✔️➖✔️
ChattingWEBJSNOWEBVENOM
GET /api/checkNumberStatus✔️✔️✔️
GET /api/sendContactVcard➖✔️➖
GET /api/sendText✔️✔️✔️
POST /api/sendText✔️✔️✔️
POST /api/reply✔️✔️✔️
PUT /api/{session}/chats/{chatId}/messages/{messageId}✔️✔️➖
DELETE /api/{session}/chats/{chatId}/messages/{messageId}✔️✔️➖
POST /api/sendPoll➖✔️➖
POST /api/sendLocation✔️✔️✔️
POST /api/sendLinkPreview➖✔️✔️
POST /api/sendImage ✔️✔️✔️
POST /api/sendFile ✔️✔️✔️
POST /api/sendVoice ✔️✔️✔️
POST /api/sendVideo ✔️✔️➖
POST /api/sendSeen✔️✔️✔️
POST /api/startTyping✔️✔️✔️
POST /api/stopTyping✔️✔️➖
POST /api/reaction✔️✔️➖
POST /api/star✔️✔️➖
GET /api/messages✔️✔️*1✔️
WEBJSNOWEBVENOM
Status
POST /api/{session}/status/text➖✔️➖
POST /api/{session}/status/image ➖✔️➖
POST /api/{session}/status/voice ➖✔️➖
POST /api/{session}/status/video ➖✔️➖
Chats
GET /api/{session}/chats✔️✔️*1➖
DELETE /api/{session}/chats/{chatId}✔️➖ *2➖
GET /api/{session}/chats/{chatId}/messages✔️✔️*1✔️
DELETE /api/{session}/chats/{chatId}/messages✔️➖ *2➖
PUT /api/{session}/chats/{chatId}/messages/{messageId}✔️✔️➖
DELETE /api/{session}/chats/{chatId}/messages/{messageId}✔️✔️➖
Contacts
GET /api/contacts✔️✔️*1➖
GET /api/contacts/all✔️✔️*1➖
GET /api/contacts/check-exists✔️✔️✔️
GET /api/contacts/about✔️➖➖
GET /api/contacts/profile-picture✔️✔️➖
POST /api/contacts/block✔️➖*2➖
POST /api/contacts/unblock✔️➖*2➖

*

  1. NOWEB - you need to Enable Store to get chats, contacts and messages
  2. NOWEB - Create an issue with the feature request if you need it
GroupsWEBJSNOWEBVENOM
POST /api/{session}/groups✔️✔️➖
GET /api/{session}/groups✔️✔️➖
GET /api/{session}/groups/{id}✔️✔️➖
DELETE /api/{session}/groups/{id}✔️➖➖
GET /api/{session}/groups/{id}/settings/security/info-admin-only✔️➖➖
PUT /api/{session}/groups/{id}/settings/security/info-admin-only✔️➖➖
GET /api/{session}/groups/{id}/settings/security/messages-admin-only✔️➖➖
PUT /api/{session}/groups/{id}/settings/security/messages-admin-only✔️➖➖
POST /api/{session}/groups/{id}/leave✔️✔️➖
PUT /api/{session}/groups/{id}/description✔️✔️➖
PUT /api/{session}/groups/{id}/subject✔️✔️➖
GET /api/{session}/groups/{id}/invite-code✔️✔️➖
POST /api/{session}/groups/{id}/invite-code/revoke✔️✔️➖
GET /api/{session}/groups/{id}/participants✔️✔️➖
POST /api/{session}/groups/{id}/participants/add✔️✔️➖
POST /api/{session}/groups/{id}/participants/remove✔️✔️➖
POST /api/{session}/groups/{id}/admin/promote✔️✔️➖
POST /api/{session}/groups/{id}/admin/demote✔️✔️➖
WEBJSNOWEBVENOM
Presence
POST /api/{session}/presence✔️✔️➖
GET /api/{session}/presence➖✔️➖
GET /api/{session}/presence/{chatId}➖✔️➖
POST /api/{session}/presence/{chatId}/subscribe➖✔️➖
Other
GET /api/version✔️✔️➖
GET /health ✔️✔️✔️

Webhooks

WebhooksWEBJSNOWEBVENOM
message✔️✔️✔️
message with files ✔️✔️✔️
message.reaction✔️✔️➖
message.any✔️✔️✔️
message.ack✔️✔️✔️
message.revoked✔️➖➖
state.change✔️✔️✔️
group.join✔️✔️✔️
group.leave✔️➖➖
presence.update➖✔️➖
poll.vote➖✔️➖
poll.vote.failed➖✔️➖