Node.js SDK
Official Node.js SDK for APIMW
Node.js SDK
Official Node.js SDK for APIMW API integration.
Requirements
- Node.js 18.0 or higher
- npm or yarn
Installation
npm install @apimw/node
# or
yarn add @apimw/node
Quick Start
import { APIMW } from '@apimw/node';
const client = new APIMW({
apiKey: process.env.APIMW_API_KEY,
apiSecret: process.env.APIMW_API_SECRET
});
// Send a WhatsApp message
const response = await client.whatsapp.sendMessage({
to: '+1234567890',
message: 'Hello from Node.js!'
});
console.log(response.messageId);
Configuration
const client = new APIMW({
apiKey: process.env.APIMW_API_KEY,
apiSecret: process.env.APIMW_API_SECRET,
timeout: 30000,
retry: {
maxAttempts: 3,
delay: 1000
}
});
TypeScript Support
Full TypeScript support with complete type definitions:
import { APIMW, SendMessageRequest, MessageResponse } from '@apimw/node';
const client = new APIMW({
apiKey: process.env.APIMW_API_KEY!,
apiSecret: process.env.APIMW_API_SECRET!
});
const request: SendMessageRequest = {
to: '+1234567890',
message: 'Hello TypeScript!'
};
const response: MessageResponse = await client.whatsapp.sendMessage(request);
Sending Messages
Text Message
const response = await client.whatsapp.sendMessage({
to: '+1234567890',
message: 'Hello World!'
});
Template Message
const response = await client.whatsapp.sendTemplate({
to: '+1234567890',
template: 'order_confirmation',
language: 'en',
components: [
{
type: 'body',
parameters: [
{ type: 'text', text: 'John' },
{ type: 'text', text: 'ORD-123' }
]
}
]
});
Webhooks
Express.js Handler
import express from 'express';
import { WebhookHandler } from '@apimw/node';
const app = express();
const handler = new WebhookHandler(process.env.WEBHOOK_SECRET);
app.post('/webhook', express.raw({ type: '*/*' }), (req, res) => {
const signature = req.headers['x-apimw-signature'];
if (!handler.verify(req.body, signature)) {
return res.status(401).send('Invalid signature');
}
const event = handler.parse(req.body);
switch (event.type) {
case 'message.received':
console.log(`Message from ${event.data.from}: ${event.data.text}`);
break;
}
res.status(200).send('OK');
});
Error Handling
import { ApiError, RateLimitError } from '@apimw/node';
try {
await client.whatsapp.sendMessage({...});
} catch (error) {
if (error instanceof RateLimitError) {
const retryAfter = error.retryAfter;
await sleep(retryAfter * 1000);
// Retry...
} else if (error instanceof ApiError) {
console.error(`API Error: ${error.message} (${error.code})`);
}
}