🆕 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.


Latest Version: GitHub Release

2024.11

2024.11.4

2024.11.3

  • add linkPreview flag in POST /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

2024.10

2024.10.13

  • NOWEB - fix waves issue on voice message #621
  • Fix GET /api/messages limit #620

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

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

2024.10.4

  • NOWEB - send video note via POST /api/sendVideo via asNote: 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 for media.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)
  • WEBJS, NOWEB - fix auto restart logic bug
  • WEBJS - support pairing via code POST /api/{session}/auth/request-code
  • 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 for STOPPED 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 by WAHA_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

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 and unzip binaries #465
    • If you’re not using official docker image install zip and unzip AND set WAHA_ZIPPER=ZIPUNZIP env variable.
  • Add WAHA_HTTP_LOG_LEVEL=info variable to control request completed log level - #466 - 🔍 Observability

2024.8.1 - Release Notes


2024.7


2024.6

📢 Breaking changes


Docker image has been renamed to devlikeapro/waha and devlikeapro/waha-plus!


🎉 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


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


Add Websockets support!


🎉 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.


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!


Starting 2024.6.3 Dashboard allows connecting to multiple WAHA instances!


🐛 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.


Swagger White Label - show your own brand in the Swagger documentation!


🐛 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).


🐛 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.

  • Issue: #321
  • Issue: #328
  • Build: 2024.5.9
  • Engine: 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


2024.4

🎉 New

Add WAHA Dashboard - UI to manage your WhatsApp sessions!


Add GET /api/sessions/{session} endpoint to get information about a specific session.


Implement GET /api/contacts/profile-picture for NOWEB engine.


2024.3

🎉 New


Add message.reaction webhook in WEBJS and NOWEB engines

👉 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


Add PUT /api/{session}/chats/{chatId}/messages/{messageId} endpoint to edit the message.


Add DELETE /api/{session}/chats/{chatId}/messages/{messageId} endpoint to delete the message.


Add POST /api/sendContactVcard support for NOWEB engine.


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


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

2024.1

2024.2

  • Listen for browser disconnected and page close events in WEBJS engine #262

2023.12

December 2023

2023.11

November 2023

  • Add different formats for QR code:
    1. binary image - GET /api/{session}/auth/qr
    2. base64 image - GET /api/{session}/auth/qr and set Accept: application/json header
    3. raw - GET /api/{session}/auth/qr?format=raw
  • Add different formats for the screenshot:
    1. binary image - GET /api/{session}/screenshot
    2. base64 image - GET /api/{session}/screenshot and set Accept: application/json header
  • 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 media
    • WHATSAPP_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

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
  • Added downloadMedia flag to speed up GET /api/messages and GET /api/{session/chats/{chatId}/messages performance.
  • Added set presence endpoint!
    • With online presence you can show your status as online #121
    • With offline presence you can get notifications for your device #28
  • 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 in POST /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 to True to start all STOPPED sessions after container restarts. By default, this variable is set to False.
    • 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 the logout: True parameter or by calling POST /api/sessions/logout to remove STOPPED sessions. You can see all sessions, including STOPPED sessions, in the GET /api/sessions/all=True response.
  • WHATSAPP_START_SESSION now support more than one session! Separate session names by command, and it’ll start them ALWAYS after container restart WHATSAPP_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 to GET /api/session?all=True endpoint - it’ll show you ALL session, included STOPPED, so you can know which one will be restarted if you set WHATSAPP_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 to POST /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 and WHATSAPP_SWAGGER_PASSWORD to hide and protect swagger panel.

2022.11

Please test changes in test environment before update production!!

Engine

  1. WAHA has changed its underlying engine from Venom to Whatsapp Web.JS. It might change the response and webhook’s payloads.
  2. Optimize CPU and memory consumption.

Requests

  • For all /api/sessions/ requests use name field instead of sessionName.
  • For all “chatting” requests use session field instead of sessionName.

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 URL
  • WHATSAPP_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": {
  }
}