A TypeScript/JavaScript SDK for interacting with the GREEN-API WhatsApp gateway.
npm install @green-api/whatsapp-api-client-js-v2
# or
yarn add @green-api/whatsapp-api-client-js-v2
Documentation for the REST API is located at link. The library is a wrapper for the REST API, so the documentation at the link above is also applicable to the library itself.
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 and scan the QR code using the WhatsApp application.
To use the SDK, you need to create an instance of the GreenApiClient
with your GREEN-API instance credentials:
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
:
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
});
await client.sendMessage({
chatId: '[email protected]',
message: 'Hello from GREEN-API SDK!'
});
await client.sendFileByUrl({
chatId: '[email protected]',
file: {
url: 'https://example.com/file.pdf',
fileName: 'document.pdf'
},
caption: 'Check this file'
});
await client.sendPoll({
chatId: '[email protected]',
message: 'What\'s your favorite color?',
options: [
{optionName: 'Red'},
{optionName: 'Blue'},
{optionName: 'Green'}
],
multipleAnswers: false
});
// Create a group
const group = await client.createGroup({
groupName: 'My Test Group',
chatIds: ['[email protected]', '[email protected]']
});
// Add a participant
await client.addGroupParticipant({
groupId: group.chatId,
participantChatId: '[email protected]'
});
// 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: '[email protected]',
idMessage: 'MESSAGE_ID_WITH_FILE'
});
console.log('File URL:', fileData.downloadUrl);
// Send text status
await client.sendTextStatus({
message: "Hello from GREEN-API SDK!",
backgroundColor: "#228B22", // Green background
font: "SERIF",
participants: ["[email protected]"] // 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: ["[email protected]"]
});
// 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)}`);
});
// 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");
}
// Edit a message
const editResult = await client.editMessage({
chatId: '[email protected]',
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: '[email protected]',
idMessage: 'BAE5F4886F6F2D05'
});
// Delete a message only for sender
await client.deleteMessage({
chatId: '[email protected]',
idMessage: 'BAE5F4886F6F2D05',
onlySenderDelete: true
});
The SDK provides the following groups of methods:
-
Message Sending Methods
sendMessage
sendFileByUrl
sendFileByUpload
sendPoll
forwardMessages
sendLocation
sendContact
uploadFile
-
Account Management Methods
reboot
logout
getStateInstance
getQR
getSettings
setSettings
getWaSettings
setProfilePicture
getAuthorizationCode
-
Message Queue Methods
showMessagesQueue
clearMessagesQueue
-
Service Methods
readChat
checkWhatsapp
getAvatar
getContacts
getContactInfo
archiveChat
unarchiveChat
setDisappearingChat
editMessage
deleteMessage
-
Group Management Methods
createGroup
updateGroupName
getGroupData
addGroupParticipant
removeGroupParticipant
setGroupAdmin
removeAdmin
setGroupPicture
leaveGroup
-
Journal Methods
getMessage
getChatHistory
lastIncomingMessages
lastOutgoingMessages
-
Message Receiving Methods
receiveNotification
deleteNotification
downloadFile
-
Status Methods (Beta)
sendTextStatus
sendVoiceStatus
sendMediaStatus
deleteStatus
getStatusStatistic
getIncomingStatuses
getOutgoingStatuses
-
Partner API Methods
getInstances
createInstance
deleteInstanceAccount
MIT