@arplyx/sdk
v0.1.0
Published
SDK oficial de Arplyx: enviá mensajes y broadcasts de WhatsApp y consultá estados desde Node/TypeScript.
Maintainers
Readme
@arplyx/sdk
SDK oficial de Arplyx para Node.js / TypeScript: enviá mensajes y broadcasts de WhatsApp y consultá estados con una API tipada.
Instalación
npm install @arplyx/sdkRequiere Node.js 18+. Funciona con ESM y CommonJS.
Uso
import { Arplyx, ArplyxError } from '@arplyx/sdk';
const arplyx = new Arplyx({ apiKey: process.env.ARPLYX_API_KEY! });
// Enviar un texto
const msg = await arplyx.sendMessage({
externalId: 'pedido-10045',
to: '+5491155551234',
text: 'Tu pedido fue confirmado.',
channel: 'whatsapp_direct',
whatsappAccountId: 'TU_ACCOUNT_ID',
});
console.log(msg.messageId, msg.status);
// Consultar estado (por messageId o por tu externalId)
const status = await arplyx.getMessage('pedido-10045');
console.log(status.status); // pending | queued | sent | delivered | read | failedPlantillas (Meta Official)
await arplyx.sendMessage({
externalId: 'pedido-10045',
to: '+5491155551234',
channel: 'whatsapp_meta',
template: { name: 'pedido_confirmado', language: 'es_AR', body: ['Juan', '10045'] },
});Broadcast a una lista (planes Basic/Pro)
await arplyx.sendBroadcast({
externalId: 'promo-junio-2026',
listId: 'TU_LIST_ID',
channel: 'whatsapp_direct',
text: 'Este mes 2x1 en turnos.',
whatsappAccountId: 'TU_ACCOUNT_ID',
});Listar cuentas de WhatsApp
const accounts = await arplyx.listWhatsappAccounts();
// accounts[].id se usa como whatsappAccountId al enviarManejo de errores
Las respuestas no-2xx lanzan ArplyxError:
try {
await arplyx.sendMessage({ externalId: 'x', to: '+549...', text: 'hola' });
} catch (err) {
if (err instanceof ArplyxError) {
console.error(err.status); // 400, 401, 409, 422, 429, 500…
console.error(err.code); // 'validation_error', 'conflict', 'quota_exceeded'…
console.error(err.details); // detalles por campo si es validation_error
}
}Idempotencia
Todos los envíos usan tu externalId como clave de idempotencia: reintentar con el mismo externalId y payload no duplica el envío (devuelve el original). Es seguro reintentar ante timeouts.
Configuración
| Opción | Requerida | Default |
|---|---|---|
| apiKey | Sí | — |
| baseUrl | No | https://api.arplyx.com |
| fetch | No | globalThis.fetch |
Docs de la API: https://docs.arplyx.com/api/ · OpenAPI: https://api.arplyx.com/openapi.yaml
