🆕 Changelog
You can find here the list of changes made to WAHA.
If you wish to get real-time updates about WAHA, please subscribe to our channels:
👉 You can subscribe on free tier!
💡 Check the 🔧 Install & Update page to learn how to update WAHA.
2024.11
2024.11.4
- NOWEB - fix many contacts send status issues #390 , #413
- NOWEB -
contacts
list for 🟢 Status (aka Stories) API is not required anymore - WEBJS - fix HTTP ERROR 429 #633
2024.11.3
- add
linkPreview
flag inPOST /api/sendText
to disable generating preview for links #596 , #598 - Fix “Sqlite: attempt to write to read only database” error #628
- Fix
POST /api/sendVideo
- “TargetCloseError: Protocol error” #629
2024.11.2
- WEBJS - fix cases when it stops receiving events (message, message.ack, etc)
2024.11.1
- Create, Update and Delete 🏷️ Labels - #607
- WEBJS, NOWEB
- WEBJS - Add 🟢 Status (aka Stories) API
- NOWEB + MongoDB - fix double message issue - #623
2024.10
2024.10.13
2024.10.12
- WEBJS - fix
FAILED
session (remove--single-process
)
2024.10.11
- WEBJS + MongoDB - Fix
SingletonLock: File exists
error on launch
2024.10.10
- WEBJS - Update puppeter and Chrome version
- WEBJS - Set window size to 1280x720
- WEBJS - Fix
SingletonLock: File exists
error on launch
2024.10.9
- Add pagination and filters to 💬 Chats - Get messages from chat
- Add 💬 Chats - Get message by id
- Add 💬 Chats - Pagination
- Add 👤 Contacts - Pagination
- Add 💬 Chats - Unread Chat
POST /api/{session}/chats/{chatId}/unread
- WEBJS, NOWEB
- #498
- NOWEB - Fix
/archive
and/unarchive
chats - 💬 Chats - Archive Chat - Remove the device from Connected Devices on 🖥️ Session Logout
2024.10.8
- Add
WAHA_LOCAL_STORE_BASE_DIR
to allow overriding the base directory for local storage #597
2024.10.7
- WAHA Core - fix webhooks issue #595
2024.10.6
- WEBJS + MongoDB - reduce CPU usage
2024.10.5
- Add Send Buttons API
POST /api/sendButtons
- $544 - Add forward message API
POST /api/forwardMessage
- #158- 📤 Send messages - Forward Message
- WEBJS, NOWEB
- Fix sessions stuck in
STARTING
on container restart - #586 - Add
WAHA_AUTO_START_DELAY_SECONDS=0
environment variable so you can control the delay between sessions - Track session status and do not restart it - #491
- Add workers environment variables:
WAHA_WORKER_ID
,WAHA_WORKER_RESTART_SESSIONS
- Add request id in webhooks headers and logs #580
- Add
policy
for webhook retries #587
2024.10.4
- NOWEB - send video note via
POST /api/sendVideo
viaasNote: true
- NOWEB - handle “sent by advertisement” message properly #567
- NOWEB + MongoDB - save auth data when stopping session (and container)
2024.10.3
- WEBJS + MongoDB - handle removing temp folder with retries
- WEBJS - add more logs for state changes to help debugging
2024.10.2
- 📢 WEBJS + MongoDB setup - handle disconnection properly (it stop saving auth data if connection to mongodb lost)
2024.10.1
- Release Notes
- Receive media now available in WAHA Core version!
- Add
PORT
environment variable for Heroku deployment - #555 - Add
WAHA_BASE_URL
environment variable to set the base URL for the server formedia.url
links - WEBJS - Add
message.waiting
event for encrypted but not yet decrypted messages #554 - WEBJS - handle connectivity issues better, restart client if required #552
- Use
axios
as default library for sending webhooks - solve bad webhooks performance issues for many sessions installation. - Handle webhooks retries properly in WAHA Plus version (using
axios
)
2024.9
2024.9.6
- NOWEB - set session presence (
online|offline
) at the start - #412- Affects notifications on your phone (if it’s
online
- you won’t get in-app notifications on your device)
- Affects notifications on your phone (if it’s
- WEBJS, NOWEB - fix auto restart logic bug
- WEBJS - support pairing via code
POST /api/{session}/auth/request-code
- Read more 🖥️ Sessions
- Retrieve engine info only on detailed
GET /api/sessions/{name}
- Check session’s status before performing the request in most endpoints
- Dashboard - add login via QR and Code auth flows
- Dashboard, API - Add
me
forSTOPPED
sessions (account phone number, push name) - Dashboard - Hide duplicated sessions flag for multiple servers setup (match by
session.name+me.id
)
2024.9.5
- NOWEB - fix memory leak and performance problems #533
- WEBJS - reduce memory usage for chrome/chromium for ~40MB per session
- Adjust error message for WAHA Core when session
STOPPED
#538 - Removed
VENOM
engine completely - Add special
/api/server/debug/heapsnapshot
to get heap dump for Node.js byWAHA_DEBUG_MODE=True
2024.9.4
- Fix empty config sessions operations (
Session not found
)
2024.9.3
- NOWEB - fix restarting issue when websocket is not connected yet (WebSocket was closed before the connection was established)
2024.9.2
- NOWEB - fix error on incoming messages - #521
2024.9.1
- Release Notes
- Add support for S3 to store media file - #353
- Read more 🗄️ Storages
- Add more granular API for 🖥️ Sessions
- Add ability to add your Metadata to a session #443.
metadata
field available in:- List Sessions and Get Session responses
- 🔄 Webhooks events
- 📊 Dashboard for view, and search sessions by metadata
- Add Bulk Operations (start, restart, etc.) for 📊 Dashboard - #438
- Add environment variables on 📊 Dashboard - #319
- Add 🔄 Webhooks - Custom Headers on 📊 Dashboard
- Add
GET /api/server/version
and/api/server/environment
endpoints - Validate API request on
/api/sessions/*
endpoints - #470- 📢 Requires attention - make sure you’re sending the right requests
- Add
POST /api/sendSeen
documentation and correct swagger spec #485 - Add
GET /api/server/status
endpoint to get server uptime - 🔍 Observability - Add
POST /api/server/stop
endpoint to restart server - 🔍 Observability - Add
WHATSAPP_API_SCHEMA=http
environment variable so you can get the rightmedia.url
link - Add
media.error
to messages with media and error - #510 - Add
reply_to
field for text and media (image, files, etc) messages - #503 - Add
replyTo
field for receiving message - #506 - Update NOWEB engine to the latest upstream changes
2024.8
2024.8.5
- NOWEB - ⚠️ urgent fix #511
2024.8.4
- WEBJS - fix get
GET /api/{session}/chats?limit=1
“Cannot read properties of undefined (reading ‘getChats’)” - #486 - NOWEB - fix sticker download - #504
2024.8.3
- fix restart container with NOWEB engine #483
- fix " this.logger.info is not a function" in swagger plus #496
2024.8.2
- fix flaky WEBJS engine issues (
Failed to add page binding with name ...
) - WEBJS + MongoDB - switch to native
zip
andunzip
binaries #465- If you’re not using official docker image install
zip
andunzip
AND setWAHA_ZIPPER=ZIPUNZIP
env variable.
- If you’re not using official docker image install
- Add
WAHA_HTTP_LOG_LEVEL=info
variable to controlrequest completed
log level - #466 - 🔍 Observability
2024.8.1
- Release Notes
- Add 🏷️ Labels support #318
- Add 📞 Calls events #307
- Add chat.archive event #434
- Add Archive and Unarchive chat endpoints #434
- Add “sessions.name” index for MongoDB storage #447
- Add
WHATSAPP_API_KEY_EXCLUDE_PATH
to exclude URI from key auth #451 - 🔒 Security - Add
GET /ping
endpoint to just touch the service (no checks like inGET /health
is done during that) - 🔍 Observability
2024.7
2024.7.7
- WEBJS + MongoDB fix -unexpected end of file
#4572024.7.6
- WEBJS restart fix #4442024.7.5
- 📰 WhatsApp Channels2024.7.4
- NOWEB fix profile picture #4222024.7.3
- added JSON logging format - 🔍 Observability.2024.7.2
- WEBJS create group fix #4162024.7.1
- WEBJS urgent update #399
2024.6
📢 Breaking changes
Docker image has been renamed to devlikeapro/waha
and devlikeapro/waha-plus
!
- Read more about WAHA Docker images
- Build:
2024.6.2
🎉 New
Starting 2026.6.1
we publish images with {version}
tag, so you can pin the version you want to use.
devlikeapro/waha-plus:chrome-{version}
=> devlikeapro/waha-plus:chrome-2024.6.1
- Read more about WAHA Docker images
- Build:
2024.6.1
Added limit
and offset
parameters to GET /api/{session}/chats
endpoint.
- Read more about Get all chats
- Build:
2024.6.4
- Engine: WEBJS
- Engine: NOWEB
Added Out of the box HTTPS Support!
👉 Step-by-step guide on how to set up HTTPS for WAHA
- Read more about 🔒 Security
- Build:
2024.6.5
- Issue: #42
- Issue: #369
Add Websockets support!
- Read more about Websockets
- Build:
2024.6.7
🎉 New - NOWEB
You asked it, we did it - contacts, chats, and messages endpoints are now available in NOWEB engine! Please make sure to Enable NOWEB Store before using these endpoints.
- Build:
2024.6.3
- Engine: NOWEB
- Read more about NOWEB Store
- Issue #169
- Issue #206
- Issue #217
- Issue #322
- Issue #339
Generate thumbnail preview for video and image messages in NOWEB engine.
- Build:
2024.6.3
- Engine: NOWEB
Fix sending poll response in NOWEB engine.
- Build:
2024.6.1
- Engine: NOWEB
- Issue: #356
Delete status endpoint - POST /api/{session}/status/delete
- Build:
2024.6.7
- Engine: NOWEB
- Issue: #386
🎉 New - DASHBOARD
Starting 2024.6.3
Dashboard is available in WAHA Core version!
- Read more about WAHA Dashboard
- Build:
2024.6.3
Starting 2024.6.3
Dashboard allows connecting to multiple WAHA instances!
- Read more about WAHA Dashboard
- Build:
2024.6.3
🐛 Fixes - NOWEB
Sender presence keeps on typing after sending message.
- Issue: #379
- Build:
2024.6.6
2024.5
🎉 New
Added WAHA_PRINT_QR
environment variable to control QR code printing (by default True
). Set WAHA_PRINT_QR=False
to disable QR code printing.
- Read more about it on Configuration
- Issue: #351
- Build:
2024.5.13
Swagger White Label - show your own brand in the Swagger documentation!
- Read more about Swagger White Label
- Issue: #305
- Build:
2024.5.4
🐛 Fixes
Don’t allow to start two sessions with the same name.
Before API allowed to start two sessions with the same name, which could lead to potential problems (no way to stop the first, abandoned session).
- Issue: #315
- Read more about start a session
- Build:
2024.5.3
- Engine: ALL
🐛 Fixes - WEBJS
Handling rare errors in MongoDB process for saving and restoring session data.
- Build:
2024.5.12
- Engine: WEBJS
- Commit: 9c398f2
Fix send video issue POST /api/sendVideo
in WEBJS.
Use local cache for WEBJS engine (versions file).
- Issue: #316
- Build:
2024.5.4
- Engine: WEBJS
🐛 Fixes - NOWEB
Fix message.ack
event for viewing status (status@broadcast
) messages.
- Issue: #329
- Build:
2024.5.14
Auto restart NOWEB connection every 30 minutes.
- Issue: #336
- Build:
2024.5.14
Set heap memory limit to 16GB for NOWEB engine.
- Issue: #347
- Build:
2024.5.12
Add body
to messages with caption in NOWEB engine.
- Build:
2024.5.10
Fix “document with caption” message media issue
- Issue: #345
- Build:
2024.5.10
Important NOWEB Engine Update! WhatsApp has deprecated the version currently being used in the NOWEB engine
- Read on Patreon
- Read on Boosty
- Build:
2024.5.8
- Engine: NOWEB
2024.4
🎉 New
Add WAHA Dashboard - UI to manage your WhatsApp sessions!
- Read more about Dashboard
- Open screenshot
Add GET /api/sessions/{session}
endpoint to get information about a specific session.
- Read more about Get session information
- Issue: #300
Implement GET /api/contacts/profile-picture
for NOWEB engine.
- Read more about Get contact profile picture
- Issue: #298
2024.3
🎉 New
Add message.reaction
webhook in WEBJS and NOWEB engines
- Read more about message.reaction event
- Issue: #275
👉 NOWEB engine note - reactions were sent in 'message'
and 'message.any'
events, not it’s available only in 'message.reaction'
!
Add star and unstar message endpoint PUT /api/star
- Read Star and unstar message documentation
- Issue: #273
Add PUT /api/{session}/chats/{chatId}/messages/{messageId}
endpoint to edit the message.
- Read more about Edit message
- Issue: #241
Add DELETE /api/{session}/chats/{chatId}/messages/{messageId}
endpoint to delete the message.
- Read more about Delete message
- Issue: #209
Add POST /api/sendContactVcard
support for NOWEB engine.
- Read more about Send Contact vCard
- Issue: #276
Handles caption
and filename
right in POST /api/sendFile
Add security settings for who can send messages PUT /api/{session}/groups/{groupId}/settings/security/messages-admin-only
- Read Security - who can send messages
- Issue: #274
Add config.debug
field to POST /api/sessions/start
to enable debug and verbose logs for the session.
📢 Breaking changes
- NOWEB - reactions were sent in
'message'
and'message.any'
events, not it’s available only in'message.reaction'
! - Add required body in
PUT /api/{session}/groups/{groupId}/settings/security/info-admin-only
endpoint.
{
"adminsOnly": false
}
POST /api/sendContactVcard
doesn’t work in VENOM anymore (use NOWEB engine).
2024.2
- Add support for MongoDB as storage for Session data
- Support persistent file storage for media files - now you can save media files between container restarts
- If you set
WHATSAPP_FILES_LIFETIME=0
environment variable - media files will be never deleted. - Add
GET /api/health
endpoint to check the health of the service
2024.1
- Implement Patron Portal where you can get your personal API key and manage your perks.
- Read more on Patreon ->
- Read more on Boosty ->
2024.2
- Listen for browser disconnected and page close events in WEBJS engine #262
2023.12
December 2023
- Add
chatId
field toGET /api/contacts/check-exists
to help get the rightchatId
for Brazilian numbers. Read more about error sending text to half of Brazilian numbers (every number registered before 2012) ->
2023.11
November 2023
- Add different formats for QR code:
- binary image -
GET /api/{session}/auth/qr
- base64 image -
GET /api/{session}/auth/qr
and setAccept: application/json
header - raw -
GET /api/{session}/auth/qr?format=raw
- binary image -
- Add different formats for the screenshot:
- binary image -
GET /api/{session}/screenshot
- base64 image -
GET /api/{session}/screenshot
and setAccept: application/json
header
- binary image -
- Add
WHATSAPP_SWAGGER_ENABLED=false
so you can hide Swagger documentation (available only in Plus version). #185 - Add dedicated
media
field in webhook payload - now you can know which media is attached to the message.
{
"event": "message",
"session": "default",
"payload": {
"hasMedia": true,
"media": {
"url": "http://localhost:3000/api/files/true_11111111111@c.us_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.pdf",
"mimetype": "application/pdf",
"filename": "file.pdf"
}
}
}
- Add
WHATSAPP_DOWNLOAD_MEDIA
environment variable to control media download. Available only in Plus version.WHATSAPP_DOWNLOAD_MEDIA=True
- download mediaWHATSAPP_DOWNLOAD_MEDIA=False
- do not download media at all.
- Add
filename
field for document (file attachments) - the original filename of the document. - Add
/api/sendVideo
endpoint to NOWEB and WEBJS engines. Available only in Plus version. - Add security settings for edit group info
GET /api/{session}/groups/{groupId}/settings/security/info-admin-only
- updates the group settings to only allow admins to edit group info (title, description, photo).
2023.10
October 2023
- Add
session.status
event for all engines! Now you can get the latest session’s status immediately after it changes. - Add
message.revoked
event in WEBJS engine - Add
me
field in webhook payload - now you can know which number is associated with the session - Add
enviroment
field in webhook payload - now you can know which environment is used for the session
2023.9
September 2023
- Add
GET /api/sessions/{session/me
endpoint so you can get the phone number associated with the session - Add polls support in NOWEB engine
- Add dedicated Get QR endpoint!
- Support pairing method (NOWEB) - you can connect with a code instead of QR.
- Add string field
ackName: DEVICE|READ|...
in message.ack payload - Support
message.ack
event webhook in NOWEB engine
2023.8
August 2023
- Added stories (aka status) endpoints to NOWEB engine!
POST /api/{session}/status/text|image|voice|video
- choose one that suites your!
- Added chats endpoints
- Get all chats -
GET /api/{session/chats
- Delete chat -
DELETE /api/{session/chats/{chatId}
- Get messages from chat -
GET /api/{session/chats/{chatId}/messages?limit=1000?downloadMedia=true
- Clear messages in the chat
DELETE /api/{session/chats/{chatId}/messages
- Get all chats -
- Added
downloadMedia
flag to speed upGET /api/messages
andGET /api/{session/chats/{chatId}/messages
performance. - Added set presence endpoint!
- Added security settings for edit group info
PUT /api/{session}/groups/{groupId}/settings/security/info-admin-only
- updates the group settings to only allow admins to edit group info (title, description, photo).
2023.7
July 2023
- Now session can have their own 🔄 Webhooks -
you can define webhook configuration when you start a session with
POST /api/sessions/start
!- Add HMAC authentication for webhooks
- Configure retries
- Add you custom headers
- Added proxy configuration with supporting proxy authentication.
Thanks puntolino for the contribution!
You can control proxy’s settings per session with
POST /api/sessions/start
or globally with environment variables. - Added presence information - now you can get online status for a contact by calling endpoints or receiving a webhook event!
- Now you can mention contact in groups by settings
mentions
field inPOST /api/sendText
read more about it in Send Messages ->
2023.6
June 2023
Improvements on session management, restarting sessions and more:
- Added
WHATSAPP_RESTART_ALL_SESSIONS=True
: Set this variable toTrue
to start all STOPPED sessions after container restarts. By default, this variable is set toFalse
.- Please note that this will start all STOPPED sessions, not just the sessions that were working before the
restart. You can maintain the session list by
using
POST /api/sessions/stop
with thelogout: True
parameter or by callingPOST /api/sessions/logout
to remove STOPPED sessions. You can see all sessions, including STOPPED sessions, in theGET /api/sessions/all=True
response.
- Please note that this will start all STOPPED sessions, not just the sessions that were working before the
restart. You can maintain the session list by
using
WHATSAPP_START_SESSION
now support more than one session! Separate session names by command, and it’ll start them ALWAYS after container restartWHATSAPP_START_SESSION=session1,session2
WHATSAPP_SWAGGER_CONFIG_ADVANCED=true
enables advanced configuration options for Swagger documentation - you can customize host, port and base URL for the requests. Disabled by default.- Added
?all=true
parameter toGET /api/session?all=True
endpoint - it’ll show you ALL session, included STOPPED, so you can know which one will be restarted if you setWHATSAPP_RESTART_ALL_SESSIONS=True
environment variable. - Added
POST /api/sessions/logout
that allow you to logout from session - remove saved credentials. - Added
logout
boolean parameter toPOST /api/sessions/stop
request that allow you to stop the session AND logout at the same time. - Added
engine
field in webhook payload
{
"event": "message",
"session": "default",
"engine": "WEBJS",
"payload": {}
}
2023.5
May 2023
- Added new NOWEB engine. NOWEB engine does not require a browser to work
with
WhatsApp Web, it does so directly using a WebSocket.
- Less CPU and RAM usage!
- Send Locations API works!
- Send Link Preview API works!
- ⚠ Read the article before using it How to avoid blocking ->.
2023.4
March 2023
- Add Groups API
- Use Chromium by default instead of Chrome
2023.1
January 2023
- Added Contacts API
- Get all contacts
- Get a contact
- Get contact “about” (status)
- Get contact profile picture
- Check number exists (is registered in WhatsApp) - works even if the number is not in the contact list
- Block and unblock contact
2022.12
December 2023
- Added
GET /messages/
endpoint to get chat messages #31 - Added
WHATSAPP_SWAGGER_USERNAME
andWHATSAPP_SWAGGER_PASSWORD
to hide and protect swagger panel.
2022.11
Please test changes in test environment before update production!!
Engine
- WAHA has changed its underlying engine from Venom to Whatsapp Web.JS. It might change the response and webhook’s payloads.
- Optimize CPU and memory consumption.
Requests
- For all
/api/sessions/
requests usename
field instead ofsessionName
. - For all “chatting” requests use
session
field instead ofsessionName
.
Sessions
Now you don’t have to scan QR code each time you run WAHA, WAHA saves it for you! Available only in Plus version.
Authentication
Now you can authenticate all requests for WAHA - use WHATSAPP_API_KEY=secret
environment variable to set “secret key”.
If WHATSAPP_API_KEY
is set - requests must have X-Api-Key
header with secret
value, where secret
- any random
secret key.
Webhooks
Instead of setting each webhook via environment variables - we use two environments variables:
WHATSAPP_HOOK_URL
- to set a URLWHATSAPP_HOOK_EVENTS
- to set events that are sent to the URL
Webhook payload
The data for webhooks are wrapped inside a new WAWebhook
object with event
and payload
fields to help you identify
which handler you should call based on event
.
{
"event": "message.any",
"payload": {
}
}