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étodo | Ruta | Qué 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_terms | El texto y la versión vigente del mandato |
GET | /error_codes | El 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_01K2R8B4V6WQ2XParámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
job_id | path | sí | string |
Respuestas
| Código | Significado | Cuerpo |
|---|---|---|
200 | El job. | Job |
400 | Có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 |
401 | Llave ausente, mal formada o revocada. | ErrorResponse |
403 | Llave válida pero sin permiso: scope, lista blanca de empresas o modo. | ErrorResponse |
404 | No existe ese objeto bajo esta llave. | ErrorResponse |
429 | Demasiadas solicitudes. | ErrorResponse |
default | Un 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_termsParámetros
| Parámetro | En | Requerido | Tipo | Notas |
|---|---|---|---|---|
version | query | — | string | Una versión de available_versions. Si se omite, el texto vigente. |
Respuestas
| Código | Significado | Cuerpo |
|---|---|---|
200 | El texto del mandato. | object |
400 | Entrada mal formada o incompleta. | ErrorResponse |
default | Un 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_codesRespuestas
| Código | Significado | Cuerpo |
|---|---|---|
200 | Todos los códigos de error de Facturia, su contraparte del SII y si conviene reintentar. | lista de ErrorCode |
default | Un 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 |