🏭 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
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
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
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.
Image | CPU | Browser |
---|---|---|
WAHA Plus | ||
devlikeapro/waha-plus:latest | x86 | Chromium |
devlikeapro/waha-plus:chrome | x86 | Chrome (supports video) |
devlikeapro/waha-plus:noweb | x86 | None |
devlikeapro/waha-plus:arm | ARM | Chromium |
devlikeapro/waha-plus:noweb-arm | ARM | None |
WAHA Core | ||
devlikeapro/waha:latest | x86 | Chromium |
devlikeapro/waha:chrome | x86 | Chrome |
devlikeapro/waha:noweb | x86 | None |
devlikeapro/waha:arm | ARM | Chromium |
devlikeapro/waha:noweb-arm | ARM | None |
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.)Chrome version is not available in ARM
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.
Symbol | Meaning |
---|---|
✔️ | The engines supports the feature. |
#123 | Feature request or bug for the endpoint |
![]() | The feature available in WAHA Plus. |
➖ | The engine does not and will newer support this feature |
If you don’t specify WHATSAPP_DEFAULT_ENGINE
environment variable - look at WEBJS engine,
it’s the engine WAHA runs by default.
Protocols
WEBJS | NOWEB | VENOM | |
---|---|---|---|
Run a browser (chromium\chrome) to communicate with WhatsApp | ✔️ | ➖ | ✔️ |
Communicate with WhatsApp via websocket (no browser) | ➖ | ✔️ | ➖ |
Webhooks
Webhooks | WEBJS | NOWEB | VENOM |
---|---|---|---|
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 | ✔️ |
Sessions
If you find any inconsistency with actual endpoints - please create an issue
WEBJS | NOWEB | VENOM | |
---|---|---|---|
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 | ✔️ | ➖ | ✔️ |
Chatting
Chatting | WEBJS | NOWEB | VENOM |
---|---|---|---|
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 | ✔️ |
Status
WEBJS | NOWEB | VENOM | |
---|---|---|---|
Status | |||
POST /api/{session}/status/text | ✔️ | ||
POST /api/{session}/status/image ![]() | ✔️ | ||
POST /api/{session}/status/voice ![]() | ✔️ | ||
POST /api/{session}/status/video ![]() | ✔️ | ||
POST /api/{session}/status/delete | ✔️ |
Chats
WEBJS | NOWEB | VENOM | |
---|---|---|---|
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
WEBJS | NOWEB | VENOM | |
---|---|---|---|
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 |
*
- NOWEB - you need to Enable Store to get chats, contacts and messages
- NOWEB - Create an issue with the feature request if you need it
Channels
WEBJS | NOWEB | |
---|---|---|
Search public channels | #440 | #440 |
Create ChannelPOST /api/{session}/channels | #439 | ✔️ |
Get channel - by id and invite codeGET /api/{session}/channels/{ChannelID} | ✔️ | ✔️ |
List channelsGET /api/{session}/channels | ✔️ | ✔️ |
Delete channelDELETE /api/{session}/channels/{ChannelID} | ✔️ | |
Get messagesGET /api/{session}/chats/{ChannelID}/messages | ✔️ | ✔️ #433 |
Send messages - TextPOST /api/sendText | ✔️ | ✔️ |
Send messages - Image ![]() POST /api/sendImage | ✔️ | ✔️ |
Send messages - PollPOST /api/sendPoll | ||
Receive messages - Textmessage event | ✔️ | ✔️ |
Receive messages - Image ![]() message event | ✔️ | ✔️ |
Receive messages - Polls | ✔️ | |
Receive messages - Polls Votes (in my channel) | ||
Receive messages - Reactions (in my channel) | ||
Channels - follow, unfollow | ||
Channels - mute, unmute | ||
Admins - Send Invite | ||
Admins - Revoke Invite | ||
Admins - Accept Invite | ||
Admins - Demote Admin |
If you see the feature is not available in the above list, please create a feature request or leave “+1” comment on the existing one.
Groups
WEBJS | NOWEB | VENOM | |
---|---|---|---|
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 | ✔️ | ✔️ |
Presence
WEBJS | NOWEB | VENOM | |
---|---|---|---|
POST /api/{session}/presence | ✔️ | ✔️ | |
GET /api/{session}/presence | ✔️ | ||
GET /api/{session}/presence/{chatId} | ✔️ | ||
POST /api/{session}/presence/{chatId}/subscribe | ✔️ |
Observability
WEBJS | NOWEB | VENOM | |
---|---|---|---|
Other | |||
GET /api/version | ✔️ | ✔️ | |
GET /health ![]() | ✔️ | ✔️ | ✔️ |