Facturiadocs
Referencia API

Cuenta y llaves

La cuenta autenticada, la llave en uso y el minteo de llaves con una llave root.

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/accountDevuelve la cuenta y la llave en uso
GET/api_keysLista las llaves de API (solo metadatos; los secretos nunca se devuelven)
POST/api_keysMintea una llave de API (solo con llave root)
DELETE/api_keys/{key_id}Revoca una llave de API de inmediato (solo con llave root)
POST/api_keys/{key_id}/rollEmite un secreto de reemplazo para una llave (solo con llave root)

GET /account

Devuelve la cuenta y la llave en uso

La cuenta autenticada y la credencial en uso — email, plan, empresas_ready/total, y los scopes, el modo y la lista de empresas de la llave que llama.

curl -sS https://api.facturia.cl/v1/account \
  -H "Authorization: Bearer $FACTURIA_KEY"

Respuestas

CódigoSignificadoCuerpo
200La cuenta.Account
400Código empresa_header_forbidden — esta operación es de nivel cuenta; un header Facturia-Empresa en ella se rechaza en vez de ignorarse en silencio.ErrorResponse
401Llave ausente, mal formada o revocada.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 /api_keys

Lista las llaves de API (solo metadatos; los secretos nunca se devuelven)

Una llave root ve todas las llaves de la cuenta. Una llave común se ve solo a sí misma.

curl -sS https://api.facturia.cl/v1/api_keys \
  -H "Authorization: Bearer $FACTURIA_KEY"

Parámetros

ParámetroEnRequeridoTipoNotas
limitquery—integer
cursorquery—stringCursor opaco tomado del next_cursor de una respuesta anterior.

Respuestas

CódigoSignificadoCuerpo
200Una lista de llaves de API.lista de ApiKey
401Llave ausente, mal formada o revocada.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

POST /api_keys

Mintea una llave de API (solo con llave root)

Requiere una llave root (sk_live_root_… / sk_test_root_…) con el scope keys:write. Las barreras se aplican en el servidor: las empresas de la llave nueva deben ser un subconjunto de la lista de la llave que la mintea y sus scopes un subconjunto de los suyos (si no, 403 privilege_escalation); el modo se hereda; y una llave root no puede mintear otra llave root. El secret se devuelve una sola vez.

curl -sS -X POST https://api.facturia.cl/v1/api_keys \
  -H "Authorization: Bearer $FACTURIA_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"name":"cliente — Comercial Andina","scopes":["documents:read","documents:write"]}'

Parámetros

ParámetroEnRequeridoTipoNotas
Idempotency-Keyheader—stringLlave que genera el cliente, única por operación lógica, retenida 24 h y con alcance (cuenta, empresa, endpoint). Un replay devuelve la respuesta original con Facturia-Idempotent-Replay: true. Misma llave y cuerpo distinto → 409.

Cuerpo

CampoTipoRequeridoNotas
namestringsí
modelive · test—
scopesdocuments:read · documents:write · received:read · received:write · empresas:read · empresas:write · folios:write · tax:read · tax:write · webhooks:read · webhooks:write · usage:read · keys:write · mandato:write · mandato:attest · onboarding:write · onboarding:attest[]sí
empresasRut[]—Un subconjunto de la lista blanca de la llave que la mintea. Un solo RUT la convierte en token de empresa.
Respuestas
CódigoSignificadoCuerpo
201La llave minteada, con su secreto.ApiKeyWithSecret
400Entrada mal formada o incompleta.ErrorResponse
401Llave ausente, mal formada o revocada.ErrorResponse
403Llave válida pero sin permiso: scope, lista blanca de empresas o modo.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

DELETE /api_keys/{key_id}

Revoca una llave de API de inmediato (solo con llave root)

Revoca una llave de inmediato y sin vuelta atrás. Requiere una llave root o una sesión de cuenta (403 root_key_required) — una llave normal no puede revocar llaves, ni siquiera a sí misma.

curl -sS -X DELETE https://api.facturia.cl/v1/api_keys/key_01K2QWB7T4N9 \
  -H "Authorization: Bearer $FACTURIA_KEY"

Parámetros

ParámetroEnRequeridoTipoNotas
key_idpathsístring

Respuestas

CódigoSignificadoCuerpo
204Revocada. La revocación es inmediata e irrecuperable.—
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

POST /api_keys/{key_id}/roll

Emite un secreto de reemplazo para una llave (solo con llave root)

El secreto anterior sigue funcionando 24 horas, así que puedes desplegar sin ventana de caída.

La rotación es un compare-and-swap sobre el hash actual de la llave, así que dos rotaciones de la misma llave nunca pueden aterrizar las dos: gana exactamente una y la perdedora responde 409 api_key_roll_conflict, cuyo secreto es el que está vivo. Rota una vez por llave.

curl -sS -X POST https://api.facturia.cl/v1/api_keys/key_01K2QWB7T4N9/roll \
  -H "Authorization: Bearer $FACTURIA_KEY"

Parámetros

ParámetroEnRequeridoTipoNotas
key_idpathsístring

Respuestas

CódigoSignificadoCuerpo
200La llave con su secreto nuevo.ApiKeyWithSecret
401Llave ausente, mal formada o revocada.ErrorResponse
403Llave válida pero sin permiso: scope, lista blanca de empresas o modo.ErrorResponse
409Conflicto de estado: reutilización de idempotencia, external_id duplicado o artefacto no listo.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

En esta página