Skip to content

mauriciorobertodev/whappy-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

59 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Whappy GO

WhatsApp + Happy + Go πŸ‘

A simple WhatsApp HTTP API built on top of whatsmeow.

🎯 What is Whappy GO?

Whappy GO is a lightweight HTTP API that wraps whatsmeow, providing a clean and consistent way to interact with WhatsApp.
It makes it easy to send messages, manage instances, and handle groups through RESTful endpoints.

πŸ§‘β€πŸ’» About the Author

Hey there! I’m Mauricio Roberto, a Junior Fullstack Developer from Brazil πŸ‡§πŸ‡·.
I built Whappy GO as a side project to learn more about Golang (I usually work with Laravel and TypeScript), explore DDD concepts (though I’ll admit, that part didn’t go so well πŸ˜…),
and, of course, to level up my English β€” which is still pretty tough for me 😩.

⚑ Features

  • πŸš€ HTTP Endpoints for WhatsApp β€” simple and intuitive REST API for message automation.
  • πŸ” Multi-instance Authentication β€” manage multiple WhatsApp sessions via QR Code.
  • πŸ’¬ Messaging Support β€” send text, images, documents, audio, and more.
  • πŸ‘₯ Group & Contact Management β€” create, update, and manage groups and contacts.
  • ⚑ High-performance Core β€” built with Fiber for fast and efficient HTTP handling.
  • πŸ—„οΈ Database Drivers β€” support for sqlite and postgres with seamless integration.
  • πŸ“¦ Storage System β€” choose between local or s3 for global automatic media saving, and uploads feature.
  • πŸ“€ Uploads System β€” enable upload routes for users, store files once, and reference them by upload ID.
  • πŸ•‹ Cache Layer β€” memory or redis caching for fast lookups and reduced load.
  • πŸ“€ Upload Cache β€” configurable cache for WhatsApp server uploads (default: 24 h).
  • 🧩 Flexible Authentication β€” use instance tokens or impersonate an instance via ADMIN_TOKEN + X-Instance-ID header.
  • πŸ“ Beautiful Documentation β€” clear API reference and a polished web interface 😏.
  • πŸ›  Event Bus System β€” central event hub with memory and redis Pub/Sub drivers for flexible events consumption.
  • πŸͺ Instance Webhooks β€” register webhook URLs per instance to receive event notifications with secure HMAC-SHA256 signatures.

πŸ“Œ Endpoints

View the full API Documentation β€” proudly made with API Dog.

Legend

βœ… Done | 🚧 In Progress | ❌ Not Started


πŸ“¦ Instances

Note: This endpoints need Authorization header with ADMIN_TOKEN.

  • βœ… GET /admin/instances – List all instances.
  • βœ… POST /admin/instances – Create a new instance.
  • βœ… GET /admin/instances/{id} – Get instance details.
  • ❌ PUT /admin/instances/{id} – Update an instance.
  • ❌ DELETE /admin/instances/{id} – Delete an instance.
  • βœ… PUT /admin/instances/{id}/token – Renew a token instance.

Note: All endpoints above here require the Authorization header with the instance token. OR you can send Authorization with ADMIN_TOKEN + X-INSTANCE-ID with the instance ID.

πŸ” Auth

Endpoints to pair/unpair an whatsapp account.

  • βœ… POST /session/login – Log out the instance (requires authentication to send messages).
  • βœ… POST /session/logout – Log out the instance (requires authentication to send messages).
  • βœ… GET /session/qr – Generate QR code to connect WhatsApp.

πŸ”Œ Connection

Endpoints to connect, disconnect, or check the instance via whatsApp webSocket.

βœ… POST /session/connect – Connect the WhatsApp server instance (events are now being listened to).
βœ… POST /session/disconnect – Disconnect the WhatsApp server instance.
βœ… GET /session/ping –

πŸ§‘β€πŸ’» Users

❌ GET /users/{jid or lid}/info. –
❌ GET /users/{jid or lid}/photo –
❌ GET /users/{jid or lid}/presence –

πŸ“¨ Messages

Endpoints to send messages.

βœ… GET /messages/id – Generate message IDs whatsapp like, multi id can be generated using ?quantity=8.

βœ… POST /messages/text – Send text message.
βœ… POST /messages/image – Send image message.
βœ… POST /messages/video – Send video message.
βœ… POST /messages/audio – Send audio message.
βœ… POST /messages/voice – Send voice message.
❌ POST /messages/sticker – Send sticker message.
❌ POST /messages/location – Send location message.
❌ POST /messages/contact – Send contact message.
❌ POST /messages/gif – Send gif message.
❌ POST /messages/poll – Send poll message.
βœ… POST /messages/reaction –

βœ… POST /messages/read – Mark messages as read. (many messages supported).

πŸ‘€ Contacts

Endpoints to manage contacts.

βœ… GET /contacts – List all contacts.
βœ… GET /contacts/{phone or jid} – Get details of a contact.
βœ… POST /contacts/check – Check if given phone numbers exist on WhatsApp.

🚫 Blocklist

Endpoints to manage the blocklist.

βœ… GET /blocklist –
βœ… POST /blocklist/{phone or jid} –
βœ… DELETE /blocklist/{phone or jid} –

πŸ‘₯ Groups

Endpoints to manage groups.

βœ… GET /groups – List joined groups and participants.
βœ… POST /groups – Create a new group.
βœ… GET /groups/{id} – Get group info.
βœ… PATCH /groups/{id} – Update group permissions.
βœ… DELETE /groups/{id} – Leave group.

βœ… PATCH /groups/{id}/name – Update group name.
βœ… PATCH /groups/{id}/description – Update group description.
βœ… PATCH /groups/{id}/disappearing – Update message disappearing settings.

βœ… GET /groups/{id}/photo – Get group photo.
βœ… PUT /groups/{id}/photo – Update group photo.
βœ… DELETE /groups/{id}/photo – Delete group photo.

βœ… POST /groups/join – Enter on group.

βœ… GET /groups/{id}/invite – Get group invite link.
βœ… DELETE /groups/{id}/invite – Revoke group invite link and return new link.

βœ… GET /groups/{id}/participants – Get participants.
βœ… POST /groups/{id}/participants – Add participants.
βœ… DELETE /groups/{id}/participants – Remove participants.

βœ… POST /groups/{id}/admins – Promote participants to admin.
βœ… DELETE /groups/{id}/admins – Demote admins.

πŸ‘₯ Communities

Endpoints to manage communities.

❌ GET /communities – List joined communities and groups with participants.
❌ POST /communities – Create a new community.
❌ GET /communities/{id} – Get community info.
❌ POST /communities/{id}/groups – Links groups.
❌ DELETE /communities/{id}/groups – Unlinks groups.

πŸ’¬ Chat

Endpoints with utils for chats.

βœ… POST /chat/presence – Change presence in chat to TYPING/RECORDING/PAUSE.
❌ PATCH /chat/mute –
❌ PATCH /chat/pin –

πŸ“Έ Pictures

Endpoints to fetch pictures.

βœ… GET /pictures/{phone or jid} –

πŸ“€ Uploads

Works only if storage is configured. Endpoints to manage uploads, used later when sending messages.

βœ… GET /uploads – List stored files.
βœ… POST /uploads – Upload.
βœ… PUT /uploads/{id} – Update.
βœ… GET /uploads/{id} – Get.
βœ… DELETE /uploads/{id} – Delete.

πŸ’… Status

Endpoints to manage status.

❌ POST /status/text – Create a text status.
❌ POST /status/image – Create a image status.
❌ POST /status/audio – Create an audio status.
❌ POST /status/video – Create a video status.

⬇️ Download

❌ GET /download/image –
❌ GET /download/video –
❌ GET /download/audio –
❌ GET /download/sticker –
❌ GET /download/document –

🌐 Webhooks

βœ… GET /webhooks – Get all webhooks.
βœ… POST /webhooks – Create a new webhook.
βœ… GET /webhooks/{id} – Get a specific webhook.
βœ… PUT /webhooks/{id} – Update a specific webhook.
βœ… DELETE /webhooks/{id} – Delete a specific webhook.


πŸ’» API Clients / SDKs

Here you can list SDKs, libraries, or clients that integrate with Whappy GO.

🚧 Whappy GO Laravel SDK – A PHP client built using Saloon for easy integration with Whappy GO. By @mauriciorobertodev

✨ (Add your own SDK or client here) – e.g., Node.js, Python, Golang, etc.

πŸ› οΈ Built With Whappy GO

Show off your projects, tools, or services built with Whappy GO. Feel free to add anything you’ve created using the API.

✨ (Add your project here) – Share what you've built with Whappy GO.

πŸ’¬ Join the Community

Have questions, ideas, or feedback?
Come chat with us in the Discussions!

You can also:

  • πŸ› Report bugs in Issues
  • πŸ’‘ Suggest features in the Ideas
  • Help improve docs or examples ✨

πŸ‘©β€πŸ’» How to Contribute

Contributions are always welcome!
If you don’t have a specific idea in mind, you can look for TODO: comments in the code,
or help improve the documentation, fix bugs, or add new MIME type extensions.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to your branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

🀝 Contributors


🌟 Support

If you find Whappy GO useful, please consider:

  • ⭐ Starring the repository
  • πŸ› Reporting bugs
  • πŸ’‘ Suggesting new features
  • πŸ“– Improving API Docs
  • πŸ§‘β€πŸ’» Contributing code
  • πŸ§ͺ Create tests

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ”¬ References

While building Whappy GO, I studied several resources that helped me structure ideas around architecture, usability, and design patterns.