Facturiadocs
Referencia API

Meta

Datos de referencia sin autenticación.

Base: https://api.facturia.cl/v1. Todos los endpoints de este capítulo se autentican con Authorization: Bearer salvo que se diga lo contrario, y el sobre de error es el de Errores.

MétodoRutaQué hace
GET/jobs/{job_id}Devuelve un job asíncrono (solicitud de folios, envío, cesión, sincronización de RCV, importación)
GET/mandato_termsEl texto y la versión vigente del mandato
GET/error_codesEl diccionario de errores legible por máquina (sin autenticación)

GET /jobs/{job_id}

Devuelve un job asíncrono (solicitud de folios, envío, cesión, sincronización de RCV, importación)

Un solo endpoint para toda operación asíncrona que arranca la API. Lee type primero: decide la forma de result y qué scope puede leer el job (el scope que INICIA ese tipo de job, más el scope de lectura del sujeto sobre el que actúa — una llave con documents:read puede mirar un envío, y se le niega una declaración tributaria).

Facturia-Poll-After dice cuándo volver a preguntar, en segundos, y está AUSENTE una vez que status es succeeded o failed: ya no queda nada que observar. No consultes más rápido de lo que dice — nada de esta superficie puede terminar dentro del intervalo de 10 segundos con que la cola toma un job.

mode viene en el objeto, y un job creado en el otro modo no existe para esta credencial: la respuesta es 404, no 403 (§4.2).

curl -sS https://api.facturia.cl/v1/jobs/job_01K2R8B4V6WQ2X

Parámetros

ParámetroEnRequeridoTipoNotas
job_idpathsístring

Respuestas

CódigoSignificadoCuerpo
200El job.Job
400Código empresa_header_forbidden — esta operación es de nivel cuenta (un job pertenece a la cuenta de la llave, no a una empresa); un header Facturia-Empresa en ella se rechaza.ErrorResponse
401Llave ausente, mal formada o revocada.ErrorResponse
403Llave válida pero sin permiso: scope, lista blanca de empresas o modo.ErrorResponse
404No existe ese objeto bajo esta llave.ErrorResponse
429Demasiadas solicitudes.ErrorResponse
defaultUn error no enumerado aparte para esta operación, en el mismo sobre §5.5 que cualquier otro rechazo. Ramifica por error.code, nunca solo por el estado HTTP ni por error.message — un código que esta operación aún no se ha visto lanzar sigue siendo más seguro para decidir que un texto pensado para una persona.ErrorResponse

GET /mandato_terms

El texto y la versión vigente del mandato

El texto que el §7.3 te dice que presentes antes de postear una aceptación. Sin autenticación, por la misma razón que GET /error_codes: el cuerpo es una constante sin datos de ningún cliente.

LEE status PRIMERO. draft significa que el texto no ha terminado la revisión legal y todavía no obliga — no se lo presentes a un representante legal como los términos que está firmando. Se deriva del propio banner de revisión del documento, así que pasa a active el día en que la revisión termina y no el día en que alguien se acuerda de cambiar una constante.

Este endpoint entrega solo las palabras. Registrar una aceptación es POST /empresas/\{empresa_id\}/mandato.

annexes[] trae los documentos que el propio encabezado del contrato llama «parte integrante» —precios, datos personales, matriz de automatización— con su Markdown, porque una página que le pide a alguien que acepte un contrato tiene que poder mostrárselo entero (ticket #519). content_hash sigue cubriendo solo text: esos son los bytes que registra una aceptación.

?version= pide una versión específica. Omítelo para el texto vigente — a quien se le olvide el parámetro nunca se le puede entregar un borrador. Úsalo para leer el borrador de lo que viene antes de que obligue a nadie, y para pedir la versión exacta que registró una aceptación antigua (el terms_url del recibo del mandato hace justamente eso). Un valor desconocido es 400 invalid_field.

curl -sS https://api.facturia.cl/v1/mandato_terms

Parámetros

ParámetroEnRequeridoTipoNotas
versionquery—stringUna versión de available_versions. Si se omite, el texto vigente.

Respuestas

CódigoSignificadoCuerpo
200El texto del mandato.object
400Entrada mal formada o incompleta.ErrorResponse
defaultUn error no enumerado aparte para esta operación, en el mismo sobre §5.5 que cualquier otro rechazo. Ramifica por error.code, nunca solo por el estado HTTP ni por error.message — un código que esta operación aún no se ha visto lanzar sigue siendo más seguro para decidir que un texto pensado para una persona.ErrorResponse

GET /error_codes

El diccionario de errores legible por máquina (sin autenticación)

Todos los códigos que esta API puede poner en un error.code, más los códigos de rechazo del SII que aparecen dentro de rejection_reasons[] de un documento. Se distinguen por type: una fila rejection no es una respuesta y lleva http_status: null.

retriable responde sobre la solicitud IDÉNTICA: rate_limit_exceeded es reintentable porque esperar lo arregla, totals_mismatch no. Construye tu política de reintentos sobre ese campo, no sobre el código HTTP.

Sin credencial y sin límite de tasa: el cuerpo es una constante y no lleva datos de ningún cliente.

curl -sS https://api.facturia.cl/v1/error_codes

Respuestas

CódigoSignificadoCuerpo
200Todos los códigos de error de Facturia, su contraparte del SII y si conviene reintentar.lista de ErrorCode
defaultUn error no enumerado aparte para esta operación, en el mismo sobre §5.5 que cualquier otro rechazo. Ramifica por error.code, nunca solo por el estado HTTP ni por error.message — un código que esta operación aún no se ha visto lanzar sigue siendo más seguro para decidir que un texto pensado para una persona.ErrorResponse

En esta página