Skip to main content
@getnexorai/sdk ofrece dos superficies separadas:
  • un cliente JavaScript de servidor para 16 operaciones REST públicas;
  • un widget avanzado de Chat web para el navegador.
Esta referencia está fijada a @getnexorai/sdk v0.1.44. No presenta el paquete como un wrapper de toda la API REST.
Mantén separados los dos tipos de clave. El código de servidor usa una clave REST secreta cargada desde una variable de entorno. El navegador solo puede usar la clave de Chat web visible en el navegador y no secreta que comienza con nxr_pub_.

Instala para usar en servidor

El SDK requiere Node.js 18 o posterior.
El paquete expone el singleton por defecto y exports con nombre desde la raíz. También expone tipos y helpers de chat mediante @getnexorai/sdk/chat.

Inicio rápido en servidor

Define NEXOR_API_KEY en el gestor de secretos de tu servidor. No la subas al repositorio.
createLead y createLeadsBulk siempre envían skip_first_message: true. Crear un lead con estos helpers no significa, por sí solo, que el Agente envíe de inmediato el primer mensaje normal de su cadencia. Para inyección de dependencias o código de servidor multi-tenant, crea clientes independientes en vez de cambiar el singleton:

Métodos REST

Los 16 métodos siguientes están disponibles en el export por defecto ya inicializado y en NexorClient. Usa la referencia de la API REST para los endpoints que el SDK no envuelve.

Comportamiento HTTP

Usa maxRetries: 0 para una operación no idempotente cuando repetirla pueda duplicar un efecto. Pasar idempotencyKey agrega el header Idempotency-Key; no garantiza por sí solo que todos los endpoints dedupliquen la solicitud.

Maneja errores

El SDK expone NexorError, NexorAPIError, NexorAuthError, NexorValidationError y NexorNetworkError.
El paquete v0.1.44 envía actualmente nexor-sdk-js/0.1.0 en su User-Agent de Node.js. No uses ese valor para determinar la versión instalada del paquete.

Widget en el navegador

Para la mayoría de los sitios, usa el loader alojado de Chat web. No requiere npm y su fragmento viene directamente de la sección Instalación del Agente. Usa el widget del SDK cuando necesites control programático mediante initChat, callbacks o configuración en runtime. El build IIFE expone un global llamado Nexor.
Nunca pongas una clave REST nxr_live_ en HTML, un bundle para navegador, una captura o un repositorio público. Una clave para navegador debe comenzar con nxr_pub_. Configura los dominios previstos en los ajustes de Chat web del Agente; esa lista se aplica al transporte normal del widget, no como garantía de autorización para todos los flujos opcionales del SDK.

Callbacks y handle del widget

Pasa callbacks a initChat cuando la página contenedora necesite eventos del ciclo de vida o de la conversación. initChat devuelve un handle con estos métodos:
send(text) resuelve cuando el mensaje queda encolado, no cuando Nexor devuelve o muestra la respuesta. Usa onMessage para observar el mensaje posterior del bot y onError para observar un turno fallido.

Flujo de solicitudes del widget

El flujo de red actual del widget no usa la ruta antigua /api/public/chat que aparecía en notas anteriores del SDK.
En el SDK v0.1.44, requestContact intenta llamar POST /api/public/leads. No actives este flujo opcional en un sitio público no confiable hasta que Nexor complete el refuerzo del backend para solicitudes de contacto. Los dominios permitidos cubren el transporte normal del widget; no garantizan la autorización de requestContact. Usa el formulario de captura, que persiste los datos del visitante mediante POST /api/widget/v1/visitor, o crea el lead desde una integración de servidor confiable.
Las dos rutas de configuración son alternativas: initChat elige la ruta pública en top-level y la ruta del widget dentro de un iframe. Antes de persistir al visitante o enviar un turno, solicita un challenge nuevo de proof of work y, cuando está disponible y se puede resolver, adjunta el resultado. Las rutas de configuración, proof of work, turnos, pendientes, visitantes y telemetría forman el transporte normal del widget y tienen controles específicos por solicitud y sesión. Usa el widget en vez de llamarlas directamente. La fila de requestContact queda fuera de esa garantía.

Reproduce el smoke offline del navegador

El smoke del repositorio vuelve a compilar dist/nexor.iife.js desde el checkout fijado del SDK, registra su digest SHA-256 y lo evalúa en una página JSDOM vacía. Reemplaza fetch por un mock cerrado que rechaza cualquier origen o ruta no reconocida. Luego valida el export global, el DOM montado, la solicitud de configuración top-level, proof of work cuando está disponible, POST /api/widget/v1/turn, telemetría y la respuesta mostrada. También revisa, sin ejecutar los flujos condicionales, que ambas páginas incluyan las rutas de configuración embebida, bandeja de pendientes, persistencia de visitantes y solicitud pública de contacto, y que la ruta no soportada de requestContact incluya la advertencia requerida. Prepara una vez el worktree fijado del SDK y después ejecuta el smoke sin credenciales de Nexor ni llamadas de red:
El último comando vuelve a compilar el bundle fijado y falla si cambian el checkout, el digest del bundle, el prefijo de la clave de navegador, las rutas, proof of work, la respuesta o los snippets documentados.
Última modificación el 8 de septiembre de 2026