selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
WuzAPI logo

Self-host WuzAPI

v1.1.0

RESTful API for WhatsApp with multi-device support

ReleaseOpen SourceMIT
Updated10 hours ago
LanguageGo
Setup difficultyModerate
Stars
1 046
Port
8080 (HTTP REST API)
Install with Go

What is WuzAPI?

WuzAPI is a self-hosted RESTful API service that wraps the Whatsmeow Go library to provide WhatsApp messaging capabilities. It supports multiple concurrent WhatsApp sessions, sending and receiving various message types including text, images, audio, video, documents, stickers, locations, contacts, and polls. Features include group management, webhooks with HMAC signing, a web-based dashboard for managing instances, and a Svelte web client for messaging. It can run via Docker Compose with optional PostgreSQL and RabbitMQ, via Homebrew on macOS/Linux, or as a compiled Go binary. The project is licensed under MIT and includes a warning about WhatsApp Terms of Service compliance.

Should you self-host WuzAPI?

WuzAPI scores 57/100 on selfhost.directory (how scoring works) and ranks #7 of 14 in Messaging. It has 1 046 GitHub stars.

It shipped 3 stable releases in the past year. The latest, v1.1.0, came out on 26 October 2026. New versions land roughly every 5 weeks.

Setup is moderate: expect some configuration beyond a single command. It is MIT-licensed and written mostly in Go.

Its closest alternative on selfhost.directory is EMQX (78/100, 16 867 stars). It scores higher overall, so compare the two before you pick. See WuzAPI vs EMQX side by side.

Features

  • Admin API
  • Chat presence
  • Contact Management
  • Group Management
  • History Sync
  • Media handling
  • Message sending
  • Multi-device WhatsApp sessions
  • Proxy Support
  • RESTful API
  • S3 media storage
  • Session Management
  • Web Dashboard
  • Webhooks with HMAC signing
  • Web messaging client

WuzAPI README

How to install WuzAPI

Install WuzAPI with Go

Go programming language

go build . ./wuzapi

Requires Go toolchain. Can be run directly or as a systemd service.

How to configure WuzAPI

  • DB_HOSTdbPostgreSQL host

    PostgreSQL host

  • DB_NAMEwuzapiPostgreSQL database name

    PostgreSQL database name

  • DB_PASSWORDwuzapiPostgreSQL password

    PostgreSQL password

  • DB_PORT5432PostgreSQL port

    PostgreSQL port

  • DB_SSLMODEfalsePostgreSQL SSL mode

    PostgreSQL SSL mode

  • DB_USERwuzapiPostgreSQL username

    PostgreSQL username

  • LOG_LEVELMinimum log level (trace, debug, info, warn, error, fatal, panic)

    Minimum log level (trace, debug, info, warn, error, fatal, panic)

    values: trace, debug, info, warn, error, fatal, panic

  • RABBITMQ_QUEUEwhatsapp_eventsRabbitMQ queue name

    RabbitMQ queue name

  • RABBITMQ_URLamqp://wuzapi:wuzapi@localhost:5672/%2FRabbitMQ connection URL

    RabbitMQ connection URL

  • SESSION_DEVICE_NAMEWuzAPIDevice name shown in WhatsApp

    Device name shown in WhatsApp

  • TZAmerica/Sao_PauloTimezone for server operations

    Timezone for server operations

  • WEBHOOK_FORMATjsonWebhook format: json or form

    Webhook format: json or form

    values: json, form

  • WUZAPI_ADDRESS0.0.0.0IP address to bind the server to

    IP address to bind the server to

  • WUZAPI_ADMIN_TOKENAuthentication token for admin endpoints

    Authentication token for admin endpoints

  • WUZAPI_AUTO_PRESENCEavailableAuto presence after connecting: available or unavailable

    Auto presence after connecting: available or unavailable

    values: available, unavailable

  • WUZAPI_GLOBAL_ENCRYPTION_KEYEncryption key for sensitive data (32 bytes for AES-256)

    Encryption key for sensitive data (32 bytes for AES-256)

  • WUZAPI_GLOBAL_HMAC_KEYGlobal HMAC key for webhook signing (minimum 32 characters)

    Global HMAC key for webhook signing (minimum 32 characters)

  • WUZAPI_GLOBAL_WEBHOOKGlobal webhook URL for all instances

    Global webhook URL for all instances

  • WUZAPI_MEDIA_CONCURRENCY2Attachment work concurrency (positive integer)

    Attachment work concurrency (positive integer)

  • WUZAPI_MEDIA_TMPDIRTemporary directory for media files (disk-backed writable mount recommended)

    Temporary directory for media files (disk-backed writable mount recommended)

  • WUZAPI_PORT8080Port for the WuzAPI server

    Port for the WuzAPI server

  • WUZAPI_PROXY_POOL_FALLBACKblockBehavior when proxy pool is full: block or direct

    Behavior when proxy pool is full: block or direct

    values: block, direct

  • WUZAPI_SOCKET_RECOVERYtrueRecover closed sockets after send failures

    Recover closed sockets after send failures

    values: true, false

  • WUZAPI_WEBHOOK_USE_PROXYtrueRoute webhook deliveries through per-user proxy when configured

    Route webhook deliveries through per-user proxy when configured

    values: true, false

WuzAPI releases & version history

More in Messaging

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…