https://github.com/green-api/whatsapp-api-client-js-v2
whatsapp-api-client-js-v2
https://github.com/green-api/whatsapp-api-client-js-v2
Last synced: 4 months ago
JSON representation
whatsapp-api-client-js-v2
- Host: GitHub
- URL: https://github.com/green-api/whatsapp-api-client-js-v2
- Owner: green-api
- License: mit
- Created: 2025-03-24T05:09:40.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-10-20T03:54:21.000Z (8 months ago)
- Last Synced: 2025-10-20T07:34:19.861Z (8 months ago)
- Language: TypeScript
- Size: 91.8 KB
- Stars: 1
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GREEN-API WhatsApp SDK Library v2
A TypeScript/JavaScript SDK for interacting with the GREEN-API WhatsApp gateway.
## Installation
```bash
npm install @green-api/whatsapp-api-client-js-v2
# or
yarn add @green-api/whatsapp-api-client-js-v2
```
#### API
Documentation for the REST API is located at [link](https://green-api.com/en/docs/api/). The library is a wrapper for
the REST API,
so the documentation at the link above is also applicable to the library itself.
#### Authorization
To send a message or perform other GREEN-API methods, the WhatsApp account in the phone application must be in the
authorized state. To authorize the instance, go to [console](https://console.green-api.com/) and
scan the QR code using the WhatsApp application.
## Getting Started
To use the SDK, you need to create an instance of the `GreenApiClient` with your GREEN-API instance credentials:
```typescript
import { GreenApiClient } from '@green-api/whatsapp-api-client-js-v2';
const client = new GreenApiClient({
idInstance: 12345,
apiTokenInstance: 'your-api-token'
});
```
For Partner API access, use the `GreenApiPartnerClient`:
```typescript
import { GreenApiPartnerClient } from '@green-api/whatsapp-api-client-js-v2';
const partnerClient = new GreenApiPartnerClient({
partnerToken: 'your-partner-token',
partnerApiUrl: 'https://api.green-api.com' // Optional, defaults to this URL
});
```
## Usage Examples
### Sending a Text Message
```typescript
await client.sendMessage({
chatId: '1234567890@c.us',
message: 'Hello from GREEN-API SDK!'
});
```
### Sending a File by URL
```typescript
await client.sendFileByUrl({
chatId: '1234567890@c.us',
file: {
url: 'https://example.com/file.pdf',
fileName: 'document.pdf'
},
caption: 'Check this file'
});
```
### Creating a Poll
```typescript
await client.sendPoll({
chatId: '1234567890@c.us',
message: 'What\'s your favorite color?',
options: [
{optionName: 'Red'},
{optionName: 'Blue'},
{optionName: 'Green'}
],
multipleAnswers: false
});
```
### Managing Groups
```typescript
// Create a group
const group = await client.createGroup({
groupName: 'My Test Group',
chatIds: ['1234567890@c.us', '0987654321@c.us']
});
// Add a participant
await client.addGroupParticipant({
groupId: group.chatId,
participantChatId: '1122334455@c.us'
});
```
### Receiving Notifications
```typescript
// Receive notification with 30 sec timeout
const notification = await client.receiveNotification(30);
if (notification) {
console.log('Received notification:', notification.body.typeWebhook);
// Process the notification
if (notification.body.typeWebhook === 'incomingMessageReceived') {
// Handle incoming message
console.log('Message:', notification.body.messageData);
}
// Delete the notification from queue after processing
await client.deleteNotification(notification.receiptId);
}
// Download file from a message
const fileData = await client.downloadFile({
chatId: '1234567890@c.us',
idMessage: 'MESSAGE_ID_WITH_FILE'
});
console.log('File URL:', fileData.downloadUrl);
```
### Working with WhatsApp Statuses (Beta)
```typescript
// Send text status
await client.sendTextStatus({
message: "Hello from GREEN-API SDK!",
backgroundColor: "#228B22", // Green background
font: "SERIF",
participants: ["1234567890@c.us"] // Optional: limit visibility to specific contacts
});
// Send media status
await client.sendMediaStatus({
urlFile: "https://example.com/image.jpg",
fileName: "image.jpg",
caption: "Check out this view!",
participants: ["1234567890@c.us"]
});
// Get status statistics
const stats = await client.getStatusStatistic({
idMessage: "BAE5F4886F6F2D05"
});
console.log(`Status was viewed by ${stats.length} contacts`);
// Get incoming statuses from contacts
const statuses = await client.getIncomingStatuses({minutes: 60}); // Last hour
statuses.forEach(status => {
console.log(`Status from ${status.senderName} at ${new Date(status.timestamp * 1000)}`);
});
```
### Partner API (Instance Management)
```typescript
// Get all instances
const instances = await partnerClient.getInstances();
console.log(`Total instances: ${instances.length}`);
console.log(`Active instances: ${instances.filter(i => !i.deleted).length}`);
// Create a new instance
const instance = await partnerClient.createInstance({
name: "Marketing Campaign",
incomingWebhook: "yes",
outgoingWebhook: "yes",
delaySendMessagesMilliseconds: 3000
});
console.log(`Created instance with ID: ${instance.idInstance}`);
console.log(`API Token: ${instance.apiTokenInstance}`);
// Delete an instance
const result = await partnerClient.deleteInstanceAccount({
idInstance: instance.idInstance
});
if (result.deleteInstanceAccount) {
console.log("Instance successfully deleted");
}
```
### Editing and Deleting Messages
```typescript
// Edit a message
const editResult = await client.editMessage({
chatId: '1234567890@c.us',
idMessage: 'BAE5367237E13A87',
message: 'This is the edited message text'
});
console.log('Edited message ID:', editResult.idMessage);
// Delete a message for everyone
await client.deleteMessage({
chatId: '1234567890@c.us',
idMessage: 'BAE5F4886F6F2D05'
});
// Delete a message only for sender
await client.deleteMessage({
chatId: '1234567890@c.us',
idMessage: 'BAE5F4886F6F2D05',
onlySenderDelete: true
});
```
## SDK methods
The SDK provides the following groups of methods:
1. **Message Sending Methods**
- `sendMessage`
- `sendFileByUrl`
- `sendFileByUpload`
- `sendPoll`
- `forwardMessages`
- `sendLocation`
- `sendContact`
- `uploadFile`
2. **Account Management Methods**
- `reboot`
- `logout`
- `getStateInstance`
- `getQR`
- `getSettings`
- `setSettings`
- `getWaSettings`
- `setProfilePicture`
- `getAuthorizationCode`
3. **Message Queue Methods**
- `showMessagesQueue`
- `clearMessagesQueue`
4. **Service Methods**
- `readChat`
- `checkWhatsapp`
- `getAvatar`
- `getContacts`
- `getContactInfo`
- `archiveChat`
- `unarchiveChat`
- `setDisappearingChat`
- `editMessage`
- `deleteMessage`
5. **Group Management Methods**
- `createGroup`
- `updateGroupName`
- `getGroupData`
- `addGroupParticipant`
- `removeGroupParticipant`
- `setGroupAdmin`
- `removeAdmin`
- `setGroupPicture`
- `leaveGroup`
6. **Journal Methods**
- `getMessage`
- `getChatHistory`
- `lastIncomingMessages`
- `lastOutgoingMessages`
7. **Message Receiving Methods**
- `receiveNotification`
- `deleteNotification`
- `downloadFile`
8. **Status Methods (Beta)**
- `sendTextStatus`
- `sendVoiceStatus`
- `sendMediaStatus`
- `deleteStatus`
- `getStatusStatistic`
- `getIncomingStatuses`
- `getOutgoingStatuses`
9. **Partner API Methods**
- `getInstances`
- `createInstance`
- `deleteInstanceAccount`
## License
MIT