Línea de comandos
El paquete emitay instala el comando emitay. No es un cliente completo de la API: son los
comandos que acortan una integración.
npm install emitayexport EMITAY_API_KEY=sk_test_…npx emitay whoamiLee la llave de EMITAY_API_KEY o de --key. Todo lo que imprime está en español.
| Comando | Para qué |
|---|---|
emitay listen --forward-to <url> |
Reenvía cada evento a tu servidor local, firmado como un webhook real |
emitay events [--follow] |
Los últimos eventos; con --follow, los que vayan llegando |
emitay document <id | F001-123> |
Un comprobante con la respuesta de SUNAT y sus enlaces |
emitay logs [--errors] |
Las últimas peticiones a la API, con su error y su Request-Id |
emitay whoami |
La empresa y el modo de la llave |
listen: webhooks en localhost
Sección titulada «listen: webhooks en localhost»emitay listen sigue los eventos de tu cuenta y hace POST de cada uno a la dirección que
le des, con las mismas cabeceras y la misma firma que una entrega real. No necesita un túnel
ni una URL pública, y no crea ningún endpoint en tu cuenta.
npx emitay listen --forward-to http://localhost:3000/webhooks/emitayEscuchando los eventos de MI EMPRESA S.A.C. (RUC 20…), en modo de pruebaReenviando a http://localhost:3000/webhooks/emitaySecreto de firma: whsec_…Por cada evento muestra qué pasó y qué respondió tu servidor:
17:32:56 document.accepted Factura F001-2 (doc_…) — SUNAT 0 → 204 No Content (16 ms)- El secreto con que firma es, por este orden, el de
--secret, el deEMITAY_WEBHOOK_SECRETo uno propio de tu llave, que es el mismo en cada ejecución: configuras tu receptor una vez. --events document.accepted,email.failedreenvía solo esos tipos.--since evt_…empieza por los eventos posteriores a ese, en lugar de por el presente: sirve para volver a pasar por tu receptor algo que ya ocurrió.- Da a tu receptor 10 segundos y no sigue redirecciones, como una entrega real. A diferencia de ella, no reintenta.
npx emitay events --type document.rejected --limit 5npx emitay events --followMuestra los últimos eventos, del más antiguo al más nuevo (20 por defecto, 100 como máximo).
Con --follow se queda mostrando los que llegan.
document
Sección titulada «document»npx emitay document F001-123Acepta el id (doc_…) o la serie y el número. Muestra el estado, la respuesta de SUNAT, la
anulación si la hay y los enlaces al PDF, al XML y al CDR.
npx emitay logs --errors2026-10-08 17:40:12 POST /v1/invoices 422 invalid_request 4 ms req_01m4…Las últimas peticiones que hizo tu llave, con su estado, el código del error, la duración y
el Request-Id. Con --errors, solo las que fallaron. Es lo primero que mirar cuando algo no
sale: el código enlaza con su página de error.
Opciones comunes
Sección titulada «Opciones comunes»| Opción | Qué hace |
|---|---|
--key <sk_…> |
La llave de API; por defecto, EMITAY_API_KEY |
--base-url <url> |
El origen de la API; por defecto, EMITAY_BASE_URL o https://api.emitay.com |
--json |
Una línea de JSON por elemento, para encadenar con otras herramientas |
--help, --version |
La ayuda y la versión |
El comando termina con 0 si todo fue bien, con 1 si la API o la red fallaron y con 2
si el comando está mal escrito.