{"_id":"@arplyx/sdk","_rev":"3-28ed4f32e658cb46fb81bdbfa4374fd8","name":"@arplyx/sdk","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@arplyx/sdk","version":"0.1.0","keywords":["arplyx","whatsapp","whatsapp-api","sdk","mensajeria","broadcasts"],"license":"MIT","_id":"@arplyx/sdk@0.1.0","maintainers":[{"name":"leobon","email":"leonelb@gmail.com"}],"homepage":"https://docs.arplyx.com/api/","dist":{"shasum":"a433a331953d20de3bfcf327aa5c25905e1688f3","tarball":"https://registry.npmjs.org/@arplyx/sdk/-/sdk-0.1.0.tgz","fileCount":6,"integrity":"sha512-v3zlCBavxf84di+M/rH3SYT15lyEBbhaIW8SuYhsbHD0C2LAYklYbPukGkjaNtkoARzEiahTTs3f7qrBHvvKJQ==","signatures":[{"sig":"MEQCIBHocDZr+8GRHyk6a+Nn19kh5yJziOaA07nOrZ2uu+qNAiB+/zLa07DHsO0oiiE08d0Nh7UnKYXUs7rsMbg/O4SIKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22706},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"8b4ff504468e14c7f5c4356ed68b3b00f150190b","scripts":{"build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"leobon","email":"leonelb@gmail.com"},"_npmVersion":"10.8.2","description":"SDK oficial de Arplyx: enviá mensajes y broadcasts de WhatsApp y consultá estados desde Node/TypeScript.","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","typescript":"^5.6.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.0_1781750311756_0.6891837761749371","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@arplyx/sdk","version":"0.2.0","keywords":["arplyx","whatsapp","whatsapp-api","sdk","mensajeria","broadcasts"],"license":"MIT","_id":"@arplyx/sdk@0.2.0","maintainers":[{"name":"leobon","email":"leonelb@gmail.com"}],"homepage":"https://docs.arplyx.com/api/","dist":{"shasum":"6e8ee32e3657f693d457efc56ceb1526dfd23ee1","tarball":"https://registry.npmjs.org/@arplyx/sdk/-/sdk-0.2.0.tgz","fileCount":6,"integrity":"sha512-IIJ7DbZm3C90FDJcHENGCS/wLncztwtrRKf8n3ufUgBE8SNLnNq6m9WMmEjKchdP3bIr1VV50Vxc4dasWjhxyw==","signatures":[{"sig":"MEQCIDGCv7EuVxOvKHc8KcgvFOlFPV/opSP82xZUllxpl4sJAiAL7f+IANoBDOgpcgz1GBEIFG0vpryUvLPT+TwJjtbCkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45930},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"5cd28bc8ce00ae16a5d32286e19a73aded4cf057","scripts":{"build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"leobon","email":"leonelb@gmail.com"},"_npmVersion":"10.9.8","description":"SDK oficial de Arplyx: enviá mensajes y broadcasts de WhatsApp y consultá estados desde Node/TypeScript.","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","typescript":"^5.6.0","@types/node":"^26.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.2.0_1783178689717_0.09365645328787031","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@arplyx/sdk","version":"0.3.0","description":"SDK oficial de Arplyx: enviÃ¡ mensajes y broadcasts de WhatsApp y consultÃ¡ estados desde Node/TypeScript.","type":"module","license":"MIT","homepage":"https://docs.arplyx.com/api/","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"engines":{"node":">=18"},"scripts":{"build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"keywords":["arplyx","whatsapp","whatsapp-api","sdk","mensajeria","broadcasts"],"devDependencies":{"@types/node":"^26.1.0","tsup":"^8.3.0","typescript":"^5.6.0"},"_id":"@arplyx/sdk@0.3.0","gitHead":"86935eff97b3ff88330b63aeaeb44ea2f581b2b7","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-XD4Z5D1ydJbYpd5vPPFtP+ly5sQVFVZ2WpPN18+cTKwF2rROs2oxGyh7ulEShoEKX8SGY6Z0Rlre4/GL9IiQ4w==","shasum":"e4780f49b15e01a3022f3b52862547cb5106817e","tarball":"https://registry.npmjs.org/@arplyx/sdk/-/sdk-0.3.0.tgz","fileCount":6,"unpackedSize":58316,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAHiMPFjIieyOW1YVo228NIH4TFfGbQjVxrxmqSnblRuAiA4+eQobzH87tqSvt68VD91Ijl3apaVvUI8qfOEboNfAQ=="}]},"_npmUser":{"name":"leobon","email":"leonelb@gmail.com"},"directories":{},"maintainers":[{"name":"leobon","email":"leonelb@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.3.0_1785334572009_0.44628148694050807"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-18T02:38:31.562Z","modified":"2026-07-29T14:16:12.353Z","0.1.0":"2026-06-18T02:38:31.897Z","0.2.0":"2026-07-04T15:24:49.863Z","0.3.0":"2026-07-29T14:16:12.175Z"},"license":"MIT","homepage":"https://docs.arplyx.com/api/","keywords":["arplyx","whatsapp","whatsapp-api","sdk","mensajeria","broadcasts"],"description":"SDK oficial de Arplyx: enviÃ¡ mensajes y broadcasts de WhatsApp y consultÃ¡ estados desde Node/TypeScript.","maintainers":[{"name":"leobon","email":"leonelb@gmail.com"}],"readme":"# @arplyx/sdk\r\n\r\nSDK oficial de **Arplyx** para Node.js / TypeScript: enviá mensajes y broadcasts de WhatsApp y consultá estados con una API tipada.\r\n\r\n## Instalación\r\n\r\n```bash\r\nnpm install @arplyx/sdk\r\n```\r\n\r\nRequiere Node.js 18+. Funciona con ESM y CommonJS.\r\n\r\n## Uso\r\n\r\n```ts\r\nimport { Arplyx, ArplyxError } from '@arplyx/sdk';\r\n\r\nconst arplyx = new Arplyx({ apiKey: process.env.ARPLYX_API_KEY! });\r\n\r\n// Enviar un texto\r\nconst msg = await arplyx.sendMessage({\r\n  externalId: 'pedido-10045',\r\n  to: '+5491155551234',\r\n  text: 'Tu pedido fue confirmado.',\r\n  channel: 'whatsapp_direct',\r\n  whatsappAccountId: 'TU_ACCOUNT_ID',\r\n});\r\nconsole.log(msg.messageId, msg.status);\r\n\r\n// Consultar estado (por messageId o por tu externalId)\r\nconst status = await arplyx.getMessage('pedido-10045');\r\nconsole.log(status.status); // pending | queued | sent | delivered | read | failed\r\n```\r\n\r\n### Plantillas (Meta Official)\r\n\r\n```ts\r\nawait arplyx.sendMessage({\r\n  externalId: 'pedido-10045',\r\n  to: '+5491155551234',\r\n  channel: 'whatsapp_meta',\r\n  template: { name: 'pedido_confirmado', language: 'es_AR', body: ['Juan', '10045'] },\r\n});\r\n```\r\n\r\n### Broadcast a una lista (planes Basic/Pro)\r\n\r\n```ts\r\nawait arplyx.sendBroadcast({\r\n  externalId: 'promo-junio-2026',\r\n  listId: 'TU_LIST_ID',\r\n  channel: 'whatsapp_direct',\r\n  text: 'Este mes 2x1 en turnos.',\r\n  whatsappAccountId: 'TU_ACCOUNT_ID',\r\n});\r\n```\r\n\r\n### Listar cuentas de WhatsApp\r\n\r\n```ts\r\nconst accounts = await arplyx.listWhatsappAccounts();\r\n// accounts[].id se usa como whatsappAccountId al enviar\r\n```\r\n\r\n### ¿Este número ya me escribió? (opt-in para WhatsApp Direct)\r\n\r\nPara no enviar por WhatsApp Direct a números que nunca abrieron conversación\r\n(el patrón que hace que Meta restrinja la cuenta), pedile a la persona que\r\nescriba primero y verificalo antes de habilitarla:\r\n\r\n```ts\r\nconst sender = await arplyx.getInboundSender('+5493411234567');\r\nif (sender.hasWritten) {\r\n  // escribió el 2026-07-02 → seguro habilitarla como destino\r\n  console.log(sender.firstInboundAt, sender.inboundCount);\r\n}\r\n\r\n// Batch (máx 200 números por request)\r\nconst senders = await arplyx.lookupInboundSenders({\r\n  phones: ['+5493411234567', '+5491155551234'],\r\n});\r\n```\r\n\r\nEl dato sobrevive a la retención de mensajes y está disponible en todos los\r\nplanes. \"Nunca escribió\" devuelve `200` con `hasWritten: false` (no lanza).\r\n\r\n### Listar mensajes entrantes (plan Pro)\r\n\r\n```ts\r\nconst page = await arplyx.listInboundMessages({ from: '+5493411234567' });\r\nfor (const m of page.inboundMessages) console.log(m.receivedAt, m.text);\r\n```\r\n\r\n## Manejo de errores\r\n\r\nLas respuestas no-2xx lanzan `ArplyxError`:\r\n\r\n```ts\r\ntry {\r\n  await arplyx.sendMessage({ externalId: 'x', to: '+549...', text: 'hola' });\r\n} catch (err) {\r\n  if (err instanceof ArplyxError) {\r\n    console.error(err.status); // 400, 401, 409, 422, 429, 500…\r\n    console.error(err.code);   // 'validation_error', 'conflict', 'quota_exceeded'…\r\n    console.error(err.details); // detalles por campo si es validation_error\r\n  }\r\n}\r\n```\r\n\r\n## Idempotencia\r\n\r\nTodos 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.\r\n\r\n## Configuración\r\n\r\n| Opción | Requerida | Default |\r\n|---|---|---|\r\n| `apiKey` | Sí | — |\r\n| `baseUrl` | No | `https://api.arplyx.com` |\r\n| `fetch` | No | `globalThis.fetch` |\r\n\r\nDocs de la API: https://docs.arplyx.com/api/ · OpenAPI: https://api.arplyx.com/openapi.yaml\r\n","readmeFilename":"README.md"}