salman0ansari / whatsapp-api-nodejs

RESTful WhatsApp API with Multiple Device Support
GNU General Public License v3.0
1.27k stars 605 forks source link
api baileys baileys-rest express expressjs hacktoberfest node nodejs nodejs-bot nodejs-wrapper rest-api restful whatsapp whatsapp-api whatsapp-bot whatsapp-rest whatsapp-web

Archive Notice 🔒

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 once again for being a part of this journey. Keep building amazing things with technology!

Best regards,

@salman0ansari

whatsapp-api-nodejs Multi Device


Telegram Badge Skype Badge


An implementation of Baileys as a simple RESTful API service with multi device support just download, install, and start using, simple as that.

Libraries Used

Installation

  1. Download or clone this repo.
  2. Enter to the project directory.
  3. Execute yarn install to install the dependencies.
  4. Copy .env.example to .env and set the environment variables.

Docker Compose

  1. Follow the Installation procedure.
  2. Update .env and set
MONGODB_ENABLED=true
MONGODB_URL=mongodb://mongodb:27017/whatsapp_api
  1. Set your TOKEN= to a random string.
  2. Execute
docker-compose up -d

Configuration

Edit environment variables on .env

Important: You must set TOKEN= to a random string to protect the route.
# ==================================
# SECURITY CONFIGURATION
# ==================================
TOKEN=RANDOM_STRING_HERE

Usage

  1. DEVELOPMENT: Execute yarn dev
  2. PRODUCTION: Execute yarn start

Generate basic instance using random key.

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"
}

WEBHOOK_ALLOWED_EVENTS

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:

You can also use the Baileys event format example: messages.upsert

Generate custom instance with custom key and custom webhook.

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"
}

Using Key

Save the value of the key from response. Then use this value to call all the routes.

Postman Docs

All routes are available as a postman collection.

QR Code

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.

Send Message

# /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'

Routes

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

Note

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.

Legal