API de Ordis

Ordis publica los datos contables y tributarios de tu empresa en JSON, de solo lectura. Documentos tributarios, F29, F22, indicadores del mes, flujo de caja, liquidaciones, nómina, boletas de honorarios, movimientos bancarios y deudas: lo mismo que ves en tu portal, en un formato que puede leer una planilla, un tablero o un agente de IA.

Todos los endpoints son GET. Ninguna llave puede crear, modificar ni borrar un dato, y nada de lo que hagas acá declara ni presenta algo ante el SII.

Para quién es

Para clientes de Ordis con plan Estratégico o Avanzado y el acceso a la API habilitado. La llave la creas tú desde tu portal, en Configuración y luego API Keys. Si no ves esa sección, escríbenos a hola@ordis.cl y la activamos.

Si solo quieres mirar tus números, no necesitas una llave: el portal ya los muestra. La API es para cuando quieres tenerlos en otra parte.

Crear tu llave en el portal

Autenticación

Cada solicitud viaja con la llave en el header Authorization, con el esquema Bearer. La llave es el prefijo fijo ordis_sk_ seguido de 43 caracteres, 52 en total.

Se muestra una sola vez, al crearla: Ordis guarda solo su hash y no puede recuperarla después, ni siquiera para darte soporte. Guárdala en una variable de entorno, nunca en el código ni en un archivo que subas a un repositorio. Si se filtró, revócala desde el portal y crea otra.

export ORDIS_API_KEY="ordis_sk_..."

curl -s https://ordis.cl/api/v1/me \
  -H "Authorization: Bearer $ORDIS_API_KEY"

Empieza siempre por /api/v1/me: confirma contra qué empresa quedó apuntando la llave y devuelve el catálogo de endpoints disponibles. La empresa sale de la llave, así que ningún endpoint acepta un identificador de empresa por parámetro.

Endpoints

Los parámetros de cada uno, los campos de la respuesta y los errores posibles están en la especificación. Esta tabla se genera desde ahí, así que no puede quedar desactualizada.

MétodoRutaQué devuelve
GET/api/v1/meIdentidad de la llave y catálogo de endpoints.
GET/api/v1/facturasDocumentos tributarios emitidos y recibidos.
GET/api/v1/facturas/{id}/pdfReferencia segura al PDF de un documento.
GET/api/v1/facturas/{id}/archivoDescarga un artefacto directo aceptado.
GET/api/v1/f29Formulario 29 mensual: IVA, PPM, retenciones y total a pagar.
GET/api/v1/f22Formulario 22 anual: resultado a pagar o devolución por año tributario.
GET/api/v1/kpisVentas, gastos, impuestos del F29 y resultado del período.
GET/api/v1/flujo-cajaFlujo de caja del año, mes a mes.
GET/api/v1/movimientos-bancoMovimientos de las cartolas bancarias cargadas.
GET/api/v1/deudasCréditos, leasing, tarjetas y cuentas por cobrar.
GET/api/v1/liquidacionesLiquidaciones de sueldo aprobadas.
GET/api/v1/trabajadoresNómina completa con estado por trabajador.
GET/api/v1/boletas-honorariosBoletas de honorarios recibidas, con retención y estado.

Endpoints públicos

Estos dos no piden llave y no contienen datos de ningún cliente.

MétodoRutaQué devuelve
GET/api/healthEstado del servicio.
GET/api/indicadoresUF, UTM y dólar observado del día.

Límites y errores

LímiteValorNota
Solicitudes por llave60 / minVentana de 60 segundos. Aproximado: el contador vive en memoria de cada instancia del servidor.
Solicitudes por dirección IP240 / minFreno anti abuso, previo a validar la llave. Una oficina entera puede compartir la IP de salida.
Filas por página200En documentos, movimientos bancarios y boletas de honorarios. Estos tres aceptan page, y meta.has_more dice si falta traer más.
Filas sin paginación500 y 200Nómina hasta 500 filas y deudas hasta 200. Estos dos no aceptan page: si meta.has_more llega en true, la respuesta viene truncada y no hay página siguiente que pedir. Acota el conjunto con los filtros del endpoint, por ejemplo estado.
Llaves activas por empresa5Revoca las que ya no uses antes de crear una nueva.

Al pasarte del límite recibes un 429 con el header Retry-After, en segundos. Espera lo que indique y reintenta.

Para no llegar a ese punto, cada respuesta autenticada trae tres headers estándar que describen tu cuota por llave: RateLimit-Limit (el techo, 60), RateLimit-Remaining (cuántas te quedan, contando esta ya consumida) y RateLimit-Reset (segundos hasta que se libera cupo). Míralos para auto-regularte y bajar el ritmo antes de agotar la cuota.

Todos los errores son JSON con la misma forma. El campo error es un mensaje para una persona y puede cambiar, así que no lo uses como condición en tu código. El campo codigo es estable: úsalo tú.

{
  "error": "Acceso no habilitado",
  "codigo": "acceso_no_habilitado"
}
  • 401 la llave falta, está mal escrita o fue revocada. Crea una nueva desde el portal.
  • 403 el acceso a la API no está habilitado para la empresa. Escríbenos.
  • 400 un parámetro está mal formado. El mensaje nombra cuál.

Versionado y estabilidad

La API se versiona en la ruta: /api/v1. Un cambio incompatible se publica como una versión nueva bajo su propio prefijo, nunca mutando la forma de una versión vigente. Puedes construir sobre v1 sin que un campo cambie de tipo o desaparezca de un día para otro.

Si alguna vez se deprecara una versión, lo anunciaremos con al menos seis meses de anticipación mediante los headers Deprecation y Sunset (RFC 8594) en sus respuestas y en esta documentación. Hoy v1 es la versión vigente y no emite ninguno de los dos.

Recursos para agentes

Si vas a conectar un agente de IA, estos tres archivos son lo que conviene darle a leer primero.

  • /openapi.json especificación OpenAPI 3.1 completa: parámetros, campos de respuesta y errores de cada endpoint.
  • /llms.txt resumen breve de qué es Ordis, en texto plano.
  • /llms-full.txt la versión extendida del anterior.

Al conectar tus datos a una herramienta externa, esa herramienta y lo que haga con ellos quedan de tu lado. Ordis publica el endpoint y nada más: no corre tu integración ni ve el otro extremo del cable.