Ir al contenido

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.

Ventana de terminal
npm install emitay
export EMITAY_API_KEY=sk_test_…
npx emitay whoami

Lee 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

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.

Ventana de terminal
npx emitay listen --forward-to http://localhost:3000/webhooks/emitay
Escuchando los eventos de MI EMPRESA S.A.C. (RUC 20…), en modo de prueba
Reenviando a http://localhost:3000/webhooks/emitay
Secreto 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 de EMITAY_WEBHOOK_SECRET o uno propio de tu llave, que es el mismo en cada ejecución: configuras tu receptor una vez.
  • --events document.accepted,email.failed reenví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.
Ventana de terminal
npx emitay events --type document.rejected --limit 5
npx emitay events --follow

Muestra 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.

Ventana de terminal
npx emitay document F001-123

Acepta 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.

Ventana de terminal
npx emitay logs --errors
2026-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.

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.