API de Enrolamiento
CAF

Descargar un CAF desde el SII.

POST
/v1/caf/{rut}/descargar/{tipoDocumento}/{cantidad}

Pide un CAF nuevo al SII, en el ambiente que diga ambiente (si se omite, producción). No es idempotente: cada llamada timbra folios nuevos. Ante un error dudoso, consultar el último folio (caf_v1_consulta) o reobtener (caf_v1_reobtener) antes de volver a pedir. El certificado se valida siempre contra el SII de producción, aunque el CAF se pida con ambiente=0: un certificado habilitado solo en el ambiente de certificación del SII queda rechazado, y el error habla del certificado y no del ambiente.

Autorización

basic
headerAuthorizationBasic <token>

Parámetros de ruta

rut*string

RUT de la empresa.

tipoDocumento*integer

Tipo del documento DTE.

Formatoint32
cantidad*integer

Cantidad de folios a descargar.

Formatoint32

Parámetros de query

ultimoFolio?integer

Último folio generado por el SII. (El sistema devolverá un CAF que comience mínimo en {ultimoFolio}+1)

Formatoint32
Por defecto0
ambiente?integer

Ambiente del SII: 0 = Homologación (certificación), 1 = Producción. Si se omite, opera en producción: páselo siempre explícito. Un valor que no se reconoce no da error: la operación corre en producción. Un número distinto de 0 y 1 tampoco da error y también corre en producción.

Formatoint32
Por defecto1
Valor en01
descargarCafAntiguos?boolean

Si se desea descargar CAF con más de 3 meses de antigüedad. Por omisión solo se devuelven CAF recientes.

Por defectofalse

Cuerpo del request

Datos del certificado.

application/json
  1. body

Datos del certificado digital.

Contrasenna*string

Contraseña del PFX, en claro o cifrada con la clave de cifrado del perfil del cliente. Dato sensible: no se registra en logs del integrador.

Data*string

PFX del certificado, en base64. Dato sensible: no se registra en logs del integrador.

Formatobyte

Cuerpo de la respuesta

Los bytes del CAF. Si ya hay una solicitud de folios en curso para este RUT y tipo de documento, responde 429 (CAF_REQUEST_IN_PROGRESS) con el header Retry-After: reintentar pasados esos segundos.

response?stringapplication/json
Formatobyte
curl --request POST \  --url 'https://api.enrolamiento.cl/v1/caf/1-9/descargar/1/1?ambiente=0' \  --header 'Accept: application/json' \  --header 'Authorization: Basic <base64 de usuario:apikey>' \  --header 'Content-Type: application/json' \  --data '{  "Contrasenna": "********",  "Data": "MIIC"}'
"RWplbXBsbzogbm8gZXMgdW4gQ0FGIHJlYWwu"

Reintentos e idempotencia

Idempotente: no. Cada llamada tiene efecto propio.

Un código que no figura en esta tabla se resuelve con la regla de respaldo.