MCPcopy Index your code
hub / github.com/code-chat-br/whatsapp-api

github.com/code-chat-br/whatsapp-api @v1.3.7.187

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.3.7.187 ↗ · + Follow
418 symbols 951 edges 60 files 3 documented · 1%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Telegram Group Whatsapp Group License Support Support

Project Structure

WhatsApp-Api-NodeJs

This code is an implementation of WhiskeySockets, as a RestFull Api service, which controls whatsapp functions.

With this one you can create multiservice chats, service bots or any other system that uses whatsapp. With this code you don't need to know javascript for nodejs , just start the server and make the language requests that you feel most comfortable with.

Infrastructure

1. Docker installation

  • First, let's install Docker. Docker is a platform that allows us to quickly create, test and deploy applications in isolated environments called containers.
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker ${USER}

2. Installing the database

PostgreSql [required]

  • Now, we have configured our PostgreSQL database using Docker Compose.
  • Access your postgre manager and create a database.

compose from postgres

3. Nvm installation

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# or
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

After finishing, restart the terminal to load the new information.

3.1 Nodejs installation

  • Installing Node.js using NVM, a version manager that allows us to switch between different versions of Node.js easily.
nvm install 20

4. pm2 installation

npm i -g pm2

5. Application startup

Cloning the Repository

git clone https://github.com/code-chat-br/whatsapp-api.git

Go to the project directory and install all dependencies.

Give preference to npm as it has greater compatibility.

cd whatsapp-api-v2

npm install
# or
npm install --force

6. Environment variables

See additional settings that can be applied through the env file by clicking here.

⚠️Attention⚠️: copy the .env.dev file to .env.

cp .env.dev .env

7. Prism ORM

  • We're going to use Prisma ORM to manage our database. Prisma simplifies database access and ensures operations are secure and easy to maintain.
  • Commands and Explanations:
  • In development environment: npx prisma migrate dev
    • We use migrate dev in development to automatically create and apply migrations, making working with the database easier.
  • In production environment: npx prisma migrate deploy
    • In production, we use migrate deploy to apply migrations in a controlled and secure way.
  • Data visualization: npx prisma studio
    • Prisma Studio is a visual tool that helps us manage and visualize bank data in an intuitive way.

Define the DATABASE_URL environment variable for the database deployment.

bash deploy_db.sh

Finally, run the command below to start the application:

npm run start:dev

npm run start:prod

# pm2
pm2 start 'npm run start:prod' --name CodeChat_API_v1.3.0

Worker

Worker options for session management

To use the worker with the API it is necessary to define the following environment variables in the API:

  • PROVIDER_ENABLED=true: This variable enables the use of the provider (worker) in the API.
  • PROVIDER_HOST=127.0.0.1: Defines the host where the worker is listening for requests.
  • PROVIDER_PORT=5656: Defines the port where the worker is listening for requests.
  • PROVIDER_PREFIX=codechat: Set prefix for instance grouping on worker

WebSocket

websocket compatibility added. Read here.

Swagger - OpenAPI 3.0.0

Authentication

You can define two authentication types for the routes in the env file. Authentications must be inserted in the request header.

  1. jwt: A JWT is a standard for authentication and information exchange defined with a signature.

Authentications are generated at instance creation time.

Note: There is also the possibility to define a global api key, which can access and control all instances.

App in Docker

After building the application, in the same directory as the files above, run the following command:

docker-compose up

Send Messages

Send Text
Send Buttons
Send Media: audio - video - image - document - gif

base64: false | ✔ | | Send Media File | ✔ | | Send Audio type WhatsApp | ✔ | | Send Audio type WhatsApp - File | ✔ | | Send Location | ✔ | | Send List | ❌ | | Send Link Preview | ✔ | | Send Contact | ✔ | | Send Reaction - emoji | ✔ |

Postman collections

  • Run in Postman

Webhook Events

Name Event TypeData Description
QRCODE_UPDATED qrcode.updated JSON Sends the base64 of the QR code for reading
CONNECTION_UPDATE connection.update JSON Informs the status of the connection with WhatsApp
MESSAGES_SET messages.set JSON Sends a list of all your messages uploaded on WhatsApp

This event occurs only once | | MESSAGES_UPSERT | messages.upsert | JSON | Notifies you when a message is received | | MESSAGES_UPDATE | messages.update | JSON | Tells you when a message is updated | | SEND_MESSAGE | send.message | JSON | Notifies when a message is sent | | CONTACTS_SET | contacts.set | JSON | Performs initial loading of all contacts

This event occurs only once | | CONTACTS_UPSERT | contacts.upsert | JSON | Reloads all contacts with additional information

This event occurs only once | | CONTACTS_UPDATE | contacts.update | JSON | Informs you when a contact is updated | | PRESENCE_UPDATE | presence.update | JSON | Informs if the user is online, typing, recording, or last seen

unavailable available composing recording paused | | CHATS_SET | chats.set | JSON | Sends a list of all loaded chats | | CHATS_UPDATE | chats.update | JSON | Informs you when the chat is updated | | CHATS_UPSERT | chats.upsert | JSON | Sends any new chat information | | CHATS_DELETE | chats.delete | JSON | Informs when a chat is deleted | | GROUPS_UPSERT | groups.upsert | JSON | Notifies when a group is created | | GROUPS_UPDATE | groups.update | JSON | Notifies when a group has its information updated | | GROUP_PARTICIPANTS_UPDATE | group-participants.update | JSON | Notifies when an action occurs involving a participant

add remove promote demote| | REFRESH_TOKEN | refresh.token | JSON | Notifies when the JWT token is updated | | CALL_UPSERT | call.upsert | JSON | Notifies when there is a new call event | | LABELS_ASSOCIATION | labels.association | JSON | Associates labels to chats or contacts | | LABELS_EDIT | labels.edit | JSON | Notifies when a label is edited |

SSL

To install the SSL certificate, follow the instructions below.

Note

This code is in no way affiliated with WhatsApp. Use at your own discretion. Don't spam this.

This code was produced based on the baileys library and it is still under development.

Donate to the project.

Pix: 2b526ada-4ef4-4db4-bbeb-f60da2421fce

PicPay

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Method 212
Class 164
Function 38
Interface 3
Enum 1

Languages

TypeScript100%

Modules by API surface

src/whatsapp/dto/sendMessage.dto.ts80 symbols
src/whatsapp/services/whatsapp.service.ts68 symbols
src/whatsapp/dto/chat.dto.ts27 symbols
src/whatsapp/controllers/chat.controller.ts19 symbols
src/whatsapp/controllers/instance.controller.ts15 symbols
src/whatsapp/services/instance.service.ts14 symbols
src/provider/sessions.ts13 symbols
src/whatsapp/controllers/sendMessage.controller.ts12 symbols
src/whatsapp/controllers/group.controller.ts12 symbols
src/whatsapp/services/monitor.service.ts11 symbols
src/config/logger.config.ts11 symbols
src/repository/repository.service.ts10 symbols

Datastores touched

db_testDatabase · 1 repos

For agents

$ claude mcp add whatsapp-api \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page