A Go REST API for WhatsApp built on whatsmeow. Run multiple WhatsApp sessions behind a single HTTP API with webhook or Redis event delivery.
- Multi-instance — run multiple WhatsApp sessions in one process, each with its own credentials, webhook, and event filters
- Full REST API — send and receive messages, manage groups, communities, contacts, chats, newsletters, status updates, and more
- Event delivery — receive real-time events via webhook (HTTP POST with optional HMAC-SHA256 signing) or Redis Streams
- Dual storage — SQLite (zero-config) or PostgreSQL for both app state and device sessions
- Docker ready — single-container deployment with Docker Compose
- OpenAPI documented — complete API and event specs in
openapi/
docker run -d \
-p 8080:8080 \
-v $(pwd)/data:/app/data \
-e WSAPI_ADMIN_API_KEY=my-secret-admin-key \
-e WSAPI_DEFAULT_API_KEY=my-secret-instance-key \
wsapichat/wsapi:latestVerify it's running:
curl http://localhost:8080/healthSee the Getting Started guide for the full walkthrough — create an instance, pair your device, and send your first message.
| Page | Description |
|---|---|
| Getting Started | Installation, quick-start walkthrough |
| Instance Modes | Single vs multi mode |
| Configuration | Config file, environment variables |
| Authentication | API key auth for admin and instance endpoints |
| API Overview | All 74 endpoints grouped by domain |
| Event Delivery | Webhooks, Redis Streams, event types, filtering |
| Docker Deployment | Docker run, Compose, volumes, production tips |
| Database Setup | SQLite vs PostgreSQL, two-database architecture |
| History Sync | Pairing history sync, on-demand retrieval |
OpenAPI specs: wsapi-api.yml (REST API) · wsapi-events.yml (events)
make build # compile binary
make test # run tests
make lint # run golangci-lint
make vet # run go vet
make fmt-check # check formatting
make openapi-lint # validate OpenAPI specs
make help # show all targetsSee CONTRIBUTING.md for the full development guide.