OpenWA

Application

rmyndharis/OpenWA

Open-source WhatsApp API gateway with multi-session and web dashboard.

Overview

OpenWA is a free, open-source WhatsApp API gateway designed for developers. It provides REST API, webhooks, multi-session management, and a web dashboard. Built with NestJS and TypeScript, it supports SQLite/PostgreSQL and Docker deployment.

README Preview

\n  \n\n\nOpenWA\n\n  Open Source WhatsApp API Gateway\n\n\n\n  Features •\n  Quick Start •\n  Docs •\n  API •\n  Contributing\n\n\n\n  \n  \n  \n  \n  \n  \n\n\n---\n\n## ✨ Why OpenWA?\n\n**OpenWA** is a free, open-source WhatsApp API Gateway designed for developers who need full control over their messaging infrastructure—without vendor lock-in or hidden paywalls.\n\nBuilt on a **pluggable architecture**, OpenWA lets you swap database engines (SQLite/PostgreSQL), storage backends (Local/S3), and cache layers (Memory/Redis) without changing a single line of application code.\n\n|                               |                                                              |\n| ----------------------------- | ------------------------------------------------------------ |\n| 🔓 **100% Open Source**       | No licensing fees, no feature locks, full source code access |\n| 🏗️ **Pluggable Architecture** | Swap adapters for database, storage, and cache via config    |\n| 🖥️ **Full Dashboard**         | Modern React UI for session, webhook, and API key management |\n| 🔹 **Multi-Session Ready**    | Run multiple WhatsApp sessions concurrently on one instance  |\n| 🐳 **Docker Native**          | Production-ready with zero configuration                     |\n| 🔗 **n8n Integration**        | Community nodes for workflow automation                      |\n\n---\n\n## 🎯 Features\n\n### Core Features\n\n| Feature       | Status | Description                          |\n| ------------- | ------ | ------------------------------------ |\n| REST API      | ✅     | Full WhatsApp API via HTTP endpoints |\n| Multi-Session | ✅     | Manage multiple WhatsApp accounts    |\n| Webhooks      | ✅     | Real-time events with HMAC signature |\n| Web Dashboard | ✅     | Visual management interface          |\n| API Key Auth  | ✅     | Secure API authentication            |\n| Swagger Docs  | ✅     | Interactive API documentation        |\n\n### Messaging\n\n| Feature           | Status | 

FAQ (3)

Troubleshooting
Why does OpenWA Chats dashboard not show an "edited" indicator for edited WhatsApp messages?

This is a bug fixed in OpenWA 0.26.0 (PR #1906). Previously, the gateway only updated the stored message body when an edit arrived, without recording an edited marker, so the dashboard showed the new text but no indicator. Upgrade to OpenWA 0.26.0 or later: the fix stores an edited marker in the message metadata on both the inbound edit path and the REST edit path, and Chats displays a localized edited indicator beside the timestamp, persisting after reload. Note: messages edited before the upgrade carry no marker, so they will not show the indicator retroactively.

GitHub Issue #1905
Troubleshooting
Why does POST /api return 404 "Cannot POST" instead of 413 Payload Too Large or 400 Bad Request in open-wa?

On open-wa 0.25.0 (and Docker image ghcr.io/rmyndharis/openwa:0.25.0), requests under /api with a body exceeding BODY_SIZE_LIMIT (default 25mb) or with invalid JSON incorrectly return 404 "Cannot POST <path>" instead of 413 or 400. The cause is @nestjs/serve-static: when the bundled dashboard is served, it registers an Express error handler that rewrites all errors on its excluded paths (/api, /socket.io, /mcp) into 404. This swallows the body parser's real 413/400/415 errors raised before routing.

Fix: upgrade to 0.26.0, where the issue is fixed (#1925) — over-limit bodies now answer 413, malformed JSON answers 400, bodies nested past 100 levels and unsupported charsets answer 400/415 correctly.

Workaround on 0.25.0: set SERVE_DASHBOARD=false so no dashboard build is served; the serve-static module then does not install its error handler and the correct status codes surface. Note the body limit itself was always enforced — only the status code was wrong — so upgrading only changes the reported response, not behavior.

GitHub Issue #1921
Troubleshooting
Can using OpenWA WhatsApp automation get my account banned? How to reduce the risk?

Yes, there is a risk of account bans when using unofficial WhatsApp automation. One user reported a ban even with low usage and no spam. To minimize risk, follow OpenWA’s documented mitigation strategies: enforce strict rate limiting, add realistic delays between messages, avoid bulk messaging to unknown numbers, and never reuse identical message templates. Review the risk management docs at https://github.com/rmyndharis/OpenWA/blob/main/docs/16-risk-management.md. Note: scanning with OpenWA may cause WhatsApp to remove linked devices.

GitHub Issue #60