Saltar al contenido
API de Ruka

Guía de integración

Lleva el detalle de compras a tu dashboard.

Consulta las líneas de compra de Ruka, conserva sus unidades y clasificaciones y prepara una base útil para analizar costos por proveedor, insumo o centro de costo.

Revisado el

Qué vas a construir

Una carga paginada de líneas, con importes y clasificaciones disponibles para tu modelo de análisis. No una suma que mezcla kilos, cajas y unidades.

Antes de empezar

  • Una clave de la cuenta con permiso para ver reportes y acceso a las empresas que vas a analizar.
  • Un proceso en tu servidor. El ejemplo descargable usa Node.js 22 o superior, sin dependencias adicionales.
  • Un destino propio donde guardar o transformar los datos. Ruka no crea un dashboard externo al ejecutar esta consulta.

1. Define qué compras quieres analizar.

Usa purchase_lines cuando necesites el detalle de cada línea. issued_from e issued_to son obligatorios y ambos extremos se incluyen; su diferencia no puede superar 31 días. Para períodos mayores, divide la extracción en ventanas.

El filtro por emisión es el predeterminado. date_basis=reporting tiene otra lógica: usa mes de reporte y, si falta, acuse y después emisión. No combines ambas bases en una serie sin identificar cuál usaste.

1. Define qué compras quieres analizar.
curl --fail-with-body --get \
  'https://api.rukafactura.cl/api/v1/reports/purchase_lines' \
  --header "Authorization: Bearer $RUKA_API_KEY" \
  --data-urlencode 'issued_from=2026-10-01' \
  --data-urlencode 'issued_to=2026-10-26' \
  --data-urlencode 'per_page=100' \
  --data-urlencode 'page=1'

2. Recorre todas las páginas.

La respuesta contiene data y meta. Continúa por page hasta total_pages y conserva exactamente los mismos filtros. El límite es 100 registros por página. Una respuesta vacía puede ser correcta: comprueba el rango y los permisos antes de tratarla como una falla.

El ejemplo descargable entrega una página por vez y se detiene ante un error. Guarda cada lote antes de avanzar tu checkpoint. No registra tokens ni datos de compras, no sigue redirecciones y no hace reintentos ilimitados.

2. Recorre todas las páginas.
import { purchaseLinePages } from './ruka-purchases.mjs';

for await (const page of purchaseLinePages({
  issued_from: '2026-10-01',
  issued_to: '2026-10-26',
}, { token: process.env.RUKA_API_KEY })) {
  // Guarda page.data en tu destino antes de continuar.
  // Define aquí tu persistencia; el ejemplo no escribe una base.
}

3. Modela el costo, no solo el importe.

Montos y cantidades llegan como strings decimales; conserva esa precisión en una columna decimal o una biblioteca decimal. null significa que falta una asignación, no que su valor sea cero. Un costo unitario comparable exige cantidades y unidades compatibles.

cost_center_allocations contiene las divisiones sin multiplicar la fila original. No sumes el importe completo de la línea y, además, todos sus repartos. Si incluyes notas con include_credit_notes=true, se agregan DTE 61 y 56 con sus montos originales, sin invertir automáticamente el signo: define el tratamiento por tipo documental en tu modelo.

4. Comprueba el resultado antes de automatizar.

Contrasta una muestra autorizada con Ruka: misma empresa, período, filtros, unidades y tratamiento de notas. Una diferencia entre total de factura y líneas filtradas no demuestra por sí sola un error: son alcances distintos.

Ante 401 revisa la clave; ante 403, los permisos; ante 422, los filtros. Un 429 requiere espaciar solicitudes y respetar Retry-After cuando esté presente. Conserva el lote incompleto y reconcilia antes de dar por terminada la carga.

Antes de conectar producción

  • La segunda página conserva los filtros de la primera.
  • Una clasificación null permanece desconocida.
  • Las notas no se restan dos veces.
  • Los repartos no duplican la compra.
  • La clave nunca llega al navegador ni al repositorio.

Ejemplo para tu servidor

Archivo JavaScript legible, para Node.js 22 o superior. No incluye claves, no se ejecuta al descargarlo y no reemplaza la persistencia ni los controles de tu integración.

Descargar ejemplo .mjs

Contrato y mantenimiento

La guía acompaña el contrato publicado en la fecha indicada. Antes de integrar, revisa permisos, filtros y respuestas vigentes en la referencia. Trabaja primero con datos de prueba autorizados.

Ver referencia de esta operación