After three years, I've decided to archive this open-source WhatsApp API project. Your support and contributions have been incredible!
While I'm no longer actively maintaining this project, I've been working on something new and exciting. It's not open-source, but it's a powerful API that provides advanced features for those who need them. If you're interested in exploring this, feel free to reach out for more information.
Thank you @salman0ansari for the inspiration.
Thank you once again for being a part of this journey. Keep building amazing things with technology!
Best regards,
An implementation of Baileys as a simple RESTful API service with multi device support just download
, install
, and start
using, simple
as that.
- Download or clone this repo.
- Enter to the project directory.
- Execute
yarn install
to install the dependencies. - Copy
.env.example
to.env
and set the environment variables.
- Follow the Installation procedure.
- Update
.env
and set
MONGODB_ENABLED=true
MONGODB_URL=mongodb://mongodb:27017/whatsapp_api
- Set your
TOKEN=
to a random string. - Execute
docker-compose up -d
Edit environment variables on .env
Important: You must set TOKEN= to a random string to protect the route.
# ==================================
# SECURITY CONFIGURATION
# ==================================
TOKEN=RANDOM_STRING_HERE
DEVELOPMENT:
Executeyarn dev
PRODUCTION:
Executeyarn start
To generate an Instance Key
Using the route:
curl --location --request GET 'localhost:3333/instance/init' \
--data-raw ''
Response:
{
"error": false,
"message": "Initializing successfull",
"key": "d7e2abff-3ac8-44a9-a738-1b28e0fca8a5"
}
You can set which events you want to send to webhook by setting the environment variable WEBHOOK_ALLOWED_EVENTS
Set a comma seperated list of events you want to get notified about.
Default value is all
which will forward all events.
Allowed values:
connection
- receive all connection eventsconnection:open
- receive open connection eventsconnection:close
- receive close connection eventspresense
- receive presence eventsmessages
- receive all messages eventcall
- receive all events related to callscall:terminate
- receive call terminate eventscall:offer
- receive call terminate eventgroups
- receive all events related to groupsgroup_participants
- receive all events related to group participants
You can also use the Baileys event format example: messages.upsert
To generate a Custom Instance
Using the route:
curl --location --request GET 'localhost:3333/instance/init?key=CUSTOM_INSTANCE_KEY_HERE&webhook=true&webhookUrl=https://webhook.site/d7114704-97f6-4562-9a47-dcf66b07266d' \
--data-raw ''
Response:
{
"error": false,
"message": "Initializing successfull",
"key": "CUSTOM_INSTANCE_KEY_HERE"
}
Save the value of the key
from response. Then use this value to call all the routes.
All routes are available as a postman collection.
Visit http://localhost:3333/instance/qr?key=INSTANCE_KEY_HERE to view the QR Code and scan with your device. If you take too long to scan the QR Code, you will have to refresh the page.
# /message/text?key=INSTANCE_KEY_HERE&id=PHONE-NUMBER-WITH-COUNTRY-CODE&message=MESSAGE
curl --location --request POST 'localhost:3333/message/text?key=INSTANCE_KEY_HERE' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'id=919999999999' \
--data-urlencode 'message=Hello World'
Route | Source File |
---|---|
Instance Routes | instance.route.js |
Message Routes | message.route.js |
Group Routes | group.route.js |
Miscellaneous Routes | misc.route.js |
See all routes here src/api/routes
I can't guarantee or can be held responsible if you get blocked or banned by using this software. WhatsApp does not allow bots using unofficial methods on their platform, so this shouldn't be considered totally safe.
- This code is in no way affiliated, authorized, maintained, sponsored or endorsed by WA (WhatsApp) or any of its affiliates or subsidiaries.
- The official WhatsApp website can be found at https://whatsapp.com. "WhatsApp" as well as related names, marks, emblems and images are registered trademarks of their respective owners.
- This is an independent and unofficial software Use at your own risk.
- Do not spam people with this.