Official Node.js SDK for the DevHub Communication API.
npm i @devotel/devhub
This SDK supports both ESM (ES Modules) and CommonJS module systems:
// Default import (recommended)
import DevHubSDK from "@devotel/devhub";
// Named import
import { DevHubSDK } from "@devotel/devhub";
const devhub = new DevHubSDK({
apiKey: "<your-api-key>",
});
// Default import (recommended)
const DevHubSDK = require("@devotel/devhub").default;
// Named import
const { DevHubSDK } = require("@devotel/devhub");
const devhub = new DevHubSDK({
apiKey: "<your-api-key>",
});
import DevHubSDK from "@devotel/devhub";
const devhub = new DevHubSDK({
apiKey: "your-api-key",
});
// Send SMS
await devhub.sms.send({
recipient: "+1234567890",
message: "Hello from DevHub!",
sender: "<sender>",
});
// Send Email
await devhub.email.send({
recipient: "user@example.com",
subject: "Hello",
body: "<h1>Hello from DevHub!</h1>",
sender: "sender@example.com",
});
// Send WhatsApp message
await devhub.whatsapp.sendNormalMessage({
account_id: "your-account-id",
to: "+1234567890",
type: "text",
text: { body: "Hello from DevHub!" },
});
// Send SMS
await devhub.sms.send({
recipient: "+1234567890",
message: "Your message",
sender: "optional-sender-id",
});
// Get available senders
await devhub.sms.getSenders();
// Buy a number
await devhub.sms.buyNumber({
country_code: "US",
area_code: "555",
});
// Get available numbers
await devhub.sms.getNumbers();
// Send email
await devhub.email.send({
recipient: "recipient@example.com",
subject: "Subject",
body: "<p>HTML content</p>",
sender: "sender@example.com",
});
// Get WhatsApp accounts
await devhub.whatsapp.getAccounts();
// Send template message
await devhub.whatsapp.sendTemplateMessage("account-id", {
to: "+1234567890",
template: {
name: "template-name",
language: { code: "en" },
},
});
// Send normal message
await devhub.whatsapp.sendNormalMessage({
account_id: "your-account-id",
to: "+1234567890",
type: "text",
text: { body: "Hello!" },
});
// Get templates
await devhub.whatsapp.getTemplates();
// Get contacts
await devhub.contacts.getContacts();
// Create contact
await devhub.contacts.createContact({
firstName: "John",
lastName: "Doe",
phoneNumber: "+1234567890",
email: "john@example.com",
});
// Update contact
await devhub.contacts.updateContact("contact-id", {
firstName: "Jane",
});
// Create custom field
await devhub.contacts.createCustomField({
label: "Company",
component: "Input",
required: false,
});
// Get RCS accounts
await devhub.rcs.getAccounts();
// Send RCS message
await devhub.rcs.send({
account_id: "your-account-id",
number: "+1234567890",
contentMessage: {
text: "Hello from RCS!",
},
});
// Create RCS template
await devhub.rcs.createTemplate({
name: "greeting",
content: "Hello {{name}}!",
});
// Get contact groups
await devhub.contactGroups.getContactGroups();
// Create contact group
await devhub.contactGroups.createContactGroup({
name: "VIP Customers",
description: "High value customers",
});
// Update contact group
await devhub.contactGroups.updateContactGroup("group-id", {
name: "Premium Customers",
});
// Send message via any channel
await devhub.messages.send({
channel: "SMS",
sms: {
sender: "DevHub",
recipient: "+1234567890",
message: "Hello!",
},
});
All methods return a response object with the following structure:
{
success: boolean,
data?: any,
error?: string
}
Example:
const result = await devhub.sms.send({
recipient: "+1234567890",
message: "Hello!",
});
if (result.success) {
console.log("Message sent:", result.data);
} else {
console.error("Error:", result.error);
}
The SDK is written in TypeScript and provides full type definitions. Available types:
import { DevHubConfig, ApiResponse, ChannelType } from "@devotel/devhub";
import { SmsMessage, BuyNumberRequest } from "@devotel/devhub";
// Usage
const smsData: SmsMessage = {
recipient: "+1234567890",
message: "Hello!",
sender: "DevHub",
};
import { EmailMessage } from "@devotel/devhub";
// Usage
const emailData: EmailMessage = {
recipient: "user@example.com",
subject: "Hello",
body: "<h1>Hello!</h1>",
sender: "sender@example.com",
};
import { WhatsAppTemplate, WhatsAppNormalMessage } from "@devotel/devhub";
// Template message
const templateData: WhatsAppTemplate = {
to: "+1234567890",
template: {
name: "hello_world",
language: { code: "en" },
},
};
// Normal message
const normalData: WhatsAppNormalMessage = {
account_id: "your-account-id",
to: "+1234567890",
type: "text",
text: { body: "Hello!" },
};
import { Contact, CustomField } from "@devotel/devhub";
// Contact
const contactData: Contact = {
firstName: "John",
lastName: "Doe",
email: "john@example.com",
phoneNumber: "+1234567890",
};
// Custom field
const fieldData: CustomField = {
label: "Company",
component: "Input",
required: false,
};
import { RcsMessage } from "@devotel/devhub";
// Usage
const rcsData: RcsMessage = {
account_id: "your-account-id",
number: "+1234567890",
contentMessage: {
text: "Hello from RCS!",
},
};
import { UnifiedMessage } from "@devotel/devhub";
// Usage
const unifiedData: UnifiedMessage = {
channel: "SMS",
sms: {
sender: "DevHub",
recipient: "+1234567890",
message: "Hello!",
},
};
MIT