Desarrolladores
La API pública v1 permite leer la contabilidad de una organización, dar de alta facturas recibidas y movimientos bancarios en su cola de revisión, y crear o modificar facturas emitidas en borrador, terceros y conceptos (la pieza que usan tiendas, pasarelas y automatizadores). Nada de lo que entra por la API se contabiliza ni se emite sin verificación humana o sin una regla determinista activada por la propia organización.
Autenticación
Claves por organización con permisos (lectura, alta de facturas recibidas, alta de movimientos, propuesta de asientos, nóminas en borrador, facturas emitidas en borrador, terceros y conceptos, webhooks) creadas en Mi organización → API y webhooks. Se envían en Authorization: Bearer ak_…. Límite: 600 peticiones por minuto por clave (cabeceras X-RateLimit-*, respuesta 429 con Retry-After).
curl -H "Authorization: Bearer ak_XXXXXXXX_..." \
"https://agentiacontable.com/api/v1/asientos?desde=2026-01-01&limit=50"Recursos
GET /api/v1/organizacion,/ejercicios,/plan-cuentas,GET/POST /tercerosyGET/PATCH /terceros/{id}(upsert por NIF),GET/POST /conceptos(upsert por código)GET /api/v1/asientos(filtros por ejercicio, fechas y estado; cursor compuesto) y/asientos/{id}con sus apuntesGET/POST /api/v1/facturas-recibidas,GET/POST /api/v1/facturas-emitidasyGET/PATCH /facturas-emitidas/{id}(borradores con serie por código, cliente por NIF y líneas por concepto; la aplicación emite),GET /api/v1/vencimientosGET/POST /api/v1/movimientos-bancarios,GET /api/v1/libros/sumas-saldos,GET /api/v1/agenda(agenda unificada; el feed ICS de solo lectura se crea en Agenda con su propio enlace)POST /api/v1/facturas-emitidas/{id}/enlace-pago(enlace de pago con Stripe de una factura emitida con pendiente; la dirección se devuelve una sola vez),GET /api/v1/cobrosy/cobros/{id}(cobros por pasarela con comisión, estado y asiento),GET /api/v1/pasarela(estado de la conexión con Stripe)GET /api/v1/tesoreria/posicion(saldo real por cuenta y consolidado de caja, la liquidez con el disponible de las pólizas de crédito, el saldo contable y la diferencia),/tesoreria/prevision(13 semanas desde hoy, como la pantalla, con la estimación de impuestos por plazo; la respuesta dice si la lleva) y/tesoreria/alertas(las alertas de tesorería de los últimos 30 días y sus umbrales)
Importes como texto con dos decimales; paginación por cursor (?after= con el valor de siguiente); errores con código estable. Especificación completa: OpenAPI 3.1.
Webhooks
Suscripción por organización a eventos de dominio, desde la pantalla o por la API (GET/POST /api/v1/webhooks, GET/PATCH/DELETE /webhooks/{id}, POST /webhooks/{id}/prueba, GET /webhooks/{id}/entregas); el catálogo de 29 eventos —asientos, facturas registradas, emitidas y anuladas, modelos presentados, terceros, presupuestos, registros Verifactu, vencimientos cobrados, pagados, devueltos e incobrables, remesas, nóminas, periodos, documentos, captura, cobros por pasarela (recibidos, fallidos, devueltos, programados y pendientes de autenticación) y sus liquidaciones al banco, el saldo real de las cuentas bancarias cuando cambia y las alertas de tesorería cuando nacen, más la entrega de prueba— está en GET /api/v1/webhooks/eventos. Cada entrega es un POST JSON con cabeceras X-Agentia-Event, X-Agentia-Delivery, X-Agentia-Timestamp y X-Agentia-Signature (HMAC-SHA256 del texto timestamp.cuerpo con el secreto del webhook). Reintentos a 1 min, 5 min, 30 min, 2 h y 24 h; diez fallos consecutivos desactivan el webhook.
import { createHmac, timingSafeEqual } from "node:crypto";
const esperada = "sha256=" + createHmac("sha256", SECRETO).update(`${req.headers["x-agentia-timestamp"]}.${cuerpoCrudo}`).digest("hex");
const ok = timingSafeEqual(Buffer.from(esperada), Buffer.from(req.headers["x-agentia-signature"]));Automatización sin código (n8n, Make y Zapier)
Sobre esta API y estos webhooks existen un nodo y un disparador de n8n, una app de Make y una app de Zapier, construidos desde un catálogo único: los 29 eventos como disparadores (la suscripción se da de alta y de baja sola al activar o desactivar el flujo; n8n y Zapier verifican la firma de cada entrega), consultas de lectura y acciones que crean terceros y conceptos, dejan facturas emitidas en borrador y envían facturas recibidas y movimientos bancarios a la cola de revisión. Nada se contabiliza ni se emite desde una automatización. Las tres apps están pendientes de publicación en sus plataformas.
Asistentes de IA (MCP)
La misma clave autentica un servidor MCP (Model Context Protocol) remoto con transporte Streamable HTTP en POST /api/mcp: herramientas de lectura (organización, plan, asientos, mayor, sumas y saldos, facturas, terceros, vencimientos, movimientos, cola de captura, cobros, posición, previsión y alertas de tesorería) y herramientas de propuesta que solo dejan trabajo en la cola de revisión (factura recibida, movimientos bancarios, asiento en borrador con justificación obligatoria; permisos facturas:escritura, movimientos:escritura y asientos:propuesta). Sin estado ni flujos SSE; los clientes que solo hablan stdio usan el puente scripts/mcp/puente.mjs. Instrucciones por cliente en Mi organización → Asistentes de IA (MCP).