API de lectura disponible
Consultas HTTPS autenticadas, filtros, paginación y manejo de errores.
Conexión y permisos
Base de datos estructurados: https://finanzas.neavision.com.ar/api/v1/agent. apphelp es la documentación, no el servidor de API. Usar un token dedicado con permisos de lectura de los recursos necesarios. La credencial se configura en el servidor del sistema interno, nunca en el navegador.
Las credenciales se emiten por un usuario autorizado. scopes recurso:read permiten listar y consultar ese recurso; operations:read permite el agregado de stock/recepción. dashboard:read permite saldos de compras; audit:read permite el historial. Un token de lectura no necesita permisos de escritura ni import:write.
curl --fail-with-body \
-H "Authorization: Bearer $NEAVISION_API_TOKEN" \
"https://finanzas.neavision.com.ar/api/v1/agent/invoices?limit=100&includeVoided=true"Paginación de recursos
GET /{resource} devuelve data y page con total y nextCursor. El límite predeterminado es 100, máximo 1000. El cursor es UUID del último registro. Orden predeterminado por ID; otros órdenes disponibles: date-asc, date-desc, amount-asc y amount-desc.
Seguir páginas hasta nextCursor=null manteniendo filtros y orden. El conjunto puede cambiar entre peticiones: esta lista no promete snapshot consistente. Para una copia inicial, usar upsert por (resource,id), releer periódicamente y conciliar; el futuro pull aportará corte consistente.
{
"data": [
{
"id": "20000000-0000-4000-8000-000000000001",
"version": 1,
"createdAt": "2026-10-01T12:00:00Z",
"updatedAt": "2026-10-01T12:00:00Z",
"voidedAt": null,
"supplierId": "10000000-0000-4000-8000-000000000001",
"number": "00001-00000042",
"invoiceType": "A",
"issueDate": "2026-10-01",
"dueDate": "2026-10-31",
"amount": "100000.00",
"currency": "ARS",
"concept": "Compra de armazones",
"category": "Mercadería",
"reconciliationStatus": "confirmed",
"receivingRequired": true,
"lines": [
{
"id": "linea-1",
"kind": "goods",
"productId": "30000000-0000-4000-8000-000000000001",
"description": "Armazón modelo ejemplo",
"quantity": "10",
"unit": "unidad",
"supplierCode": "ARM-001"
}
]
}
],
"page": {
"total": 1,
"nextCursor": null
}
}Filtros y anulaciones
Filtros admitidos: from, to, asOf, supplierId, customerId, currency, category, method, search, minAmount, maxAmount, status, hasInvoice, hasReceipt, dueFrom, dueTo, sort, limit, cursor e includeVoided. Usar sólo los aplicables al recurso. No existe updatedSince ni filtro por updatedAt en la API actual.
from/to usan issueDate, luego date, dueDate, receivedAt o createdAt según el registro. No son filtros de última modificación. dueFrom/dueTo usan nextDueDate o dueDate. En facturas de compra/gastos los saldos de listas se calculan con el corte predeterminado del servidor; asOf no los convierte en un snapshot histórico. En ventas sí se usa asOf para el cálculo. El GET de detalle de una factura usa el corte actual del servidor, no filtros de fecha.
includeVoided=true incorpora anulados en listas; Los pagos se obtienen desde la proyección financiera y excluyen anulados incluso con ese parámetro. GET /payments incluye el conjunto de pagos activos y permite filtrar por fecha del pago. Para anulaciones usar audit y reconciliación; el parámetro includeVoided no recupera pagos anulados desde la proyección. El detalle por ID conserva voidedAt. No usar sólo las listas activas como feed de bajas.
Historial y sincronización actual
GET /audit?cursor=123 devuelve eventos en orden creciente de id: data y page.nextCursor. Páginas de hasta 100 filas. El cursor numérico se guarda como string. Los eventos incluyen create/update/void y sus valores before_value/after_value, pero también cambios técnicos que no pertenecen a los datos comerciales.
Los IDs de auditoría se asignan antes del commit. Con transacciones concurrentes puede confirmarse después un evento con ID menor a otro ya leído. El historial actual no garantiza por sí solo una captura incremental sin pérdidas. Usar solapamiento, deduplicación y conciliación completa periódica; el nuevo endpoint debe resolver ese límite.
Errores y reintentos
401 UNAUTHENTICATED: token faltante, vencido o revocado. 403 INSUFFICIENT_SCOPE: permiso insuficiente. 404 NOT_FOUND o FEATURE_DISABLED: recurso/ruta no disponible. 400 INVALID_CURSOR: reiniciar consulta. 422 VALIDATION_ERROR: revisar filtros/formato. 503: indisponibilidad de configuración, autorización o base. Conservar requestId para diagnóstico.
Reintentar fallos temporales con espera creciente; no repetir indefinidamente 401/403. La API de máquina no necesita cookies ni una sesión humana abierta.
{
"error": {
"code": "INSUFFICIENT_SCOPE",
"message": "El token no tiene permiso invoices:read.",
"requestId": "uuid-de-la-solicitud"
}
}