An implementation of @adiwajshing/Baileys as a simple REST API with multiple device support
- NodeJS version 14.5.0 or higher
- Prisma supported databases. Tested on MySQL and PostgreSQL
- Download or clone this repo. If you want to skip the build step, you can download the prebuilt one (file with the
baileys-api-VERSION.tgz
name pattern) from the release page - Enter to the project directory
- Install the dependencies
# npm
npm install
# yarn
yarn
- Build the project using the
build
script
# npm
npm run build
# yarn
yarn build
You can skip this part if you're using the prebuilt one from the release page
- Copy the
.env.example
file and rename it into.env
, then update your connection url in theDATABASE_URL
field - Update your provider in the
prisma/schema.prisma
file if you're using database other than MySQL - Run your migration
# npm
npx prisma migrate (dev|deploy)
# yarn
yarn prisma migrate (dev|deploy)
or push the schema
# npm
npx prisma db push
# yarn
yarn prisma db push
Don't forget to always re-run those whenever there's a change on the prisma/schema.prisma
file
# Listening Host
HOST="localhost"
# Listening Port
PORT="3000"
# Database Connection URL
DATABASE_URL="mysql://root:12345@localhost:3306/baileys_api"
# Reconnect Interval (in Milliseconds)
RECONNECT_INTERVAL="5000"
# Maximum Reconnect Attempts
MAX_RECONNECT_RETRIES="5"
# Maximum SSE QR Generation Attempts
SSE_MAX_QR_GENERATION="10"
# Pino Logger Level
LOG_LEVEL="warn"
- Make sure you have completed the Installation and Setup step
- You can then start the app using the
start
script
# npm
npm run start
# yarn
yarn start
- Now the endpoint should be available according to your environment variables configuration. Default is at
http://localhost:3000
The API documentation is available online here. You can also import the Postman Collection File (postman_collection.json)
into your Postman App alternatively
- There's no authentication, you may want to implement your own. I don't want to force anyone into using a specific authentication method, choose whatever you love
This project is intended for learning purpose only, don't use it for spamming or any activities that's prohibited by WhatsApp