APICAF
API de Autorización de Folios para documentos tributarios chilenos
Sistema integral para la emisión, anulación y reobtención de Códigos de Autorización de Folios (CAF) del Servicio de Impuestos Internos de Chile.
Estado del Servicio
En línea
Tiempo de Respuesta
< 500ms
Seguridad
Tokens activos
Planes de Uso
Plan Público
Gratis
- 10 consultas diarias
- Token:
token_publico - Tiempo de vida: 1 minuto
- Soporte básico
Plan Premium
$1.000 CLP/año
- 50 consultas diarias
- Token personalizado
- Sin límite de tiempo
- Soporte prioritario
Documentación de la API
URL Base
https://apicaf.cl
Endpoint Principal: Autorización de Folios (CAF)
POST /api/caf
Endpoint principal para emisión, anulación y reobtención de folios CAF.
Parámetros principales:
- token (string): Token de autorización
- rut (string): RUT de la empresa
- etapa (string): Etapa del proceso
- entorno (string): "certificacion" o "produccion"
- firma_electronica (object): Datos de la firma digital
Tutorial Paso a Paso
Con firma electrónica (P12/PFX):
{
"entorno": "certificacion",
"token": "token_publico",
"firma_electronica": {
"string_firma": "MIIb...", // Archivo P12 en base64
"string_password": "clave_firma",
"subject_serial_number": "16291998-9"
},
"rut": "76883241-2",
"etapa": "conectar"
}
Con certificado ya procesado:
{
"entorno": "certificacion",
"token": "token_publico",
"firma_electronica": {
"priv_key": "-----BEGIN PRIVATE KEY-----...",
"cert": "-----BEGIN CERTIFICATE-----...",
"subject_serial_number": "16291998-9",
"init_signature": false
},
"rut": "76883241-2",
"etapa": "conectar"
}
{
"id_peticion": 1,
"token": "token_publico",
"etapa": "listar"
}
Respuesta: Lista de códigos de documento disponibles (33, 34, 39, 41, etc.)
{
"id_peticion": 1,
"token": "token_publico",
"cod_docto": 33,
"etapa": "disponibles"
}
Respuesta: Cantidad máxima de folios disponibles para el documento
{
"id_peticion": 1,
"token": "token_publico",
"cant_doctos": 1,
"etapa": "confirmar"
}
Respuesta: Confirmación de la cantidad solicitada
{
"id_peticion": 1,
"token": "token_publico",
"etapa": "obtener"
}
Respuesta: Información de los folios asignados
{
"id_peticion": 1,
"token": "token_publico",
"etapa": "archivo"
}
Respuesta: Archivo CAF en formato XML para usar en la facturación
Reobtención de un CAF emitido
Permite volver a descargar el XML de un CAF ya autorizado (por ejemplo, si se perdió el archivo original). Es el mismo esquema de etapas de la emisión, con prefijo reob_.
Mismo payload que conectar (token, rut, entorno y firma_electronica), cambiando la etapa:
{
"entorno": "certificacion",
"token": "token_publico",
"firma_electronica": { ... },
"rut": "76883241-2",
"etapa": "reob_conectar"
}
Respuesta: id_peticion y etapa reob_listar
{
"id_peticion": 1,
"token": "token_publico",
"etapa": "reob_listar"
}
Respuesta: documentos con los tipos que tienen folios reobtenibles
{
"id_peticion": 1,
"token": "token_publico",
"cod_docto": 33,
"pagina": 1,
"etapa": "reob_disponibles"
}
Respuesta: folios — lista de rangos ya emitidos, cada uno con form_name, folio_inicial, folio_final, cantidad, dia, mes, ano — más pagina_actual y tiene_siguiente para paginar (pagina es opcional, por defecto 1).
Se confirma el rango a reobtener usando el form_name obtenido en el paso anterior:
{
"id_peticion": 1,
"token": "token_publico",
"form_name": "form1",
"etapa": "reob_confirmar"
}
{
"id_peticion": 1,
"token": "token_publico",
"etapa": "reob_obtener"
}
Respuesta: folio_ini y folio_fin del rango reobtenido
{
"id_peticion": 1,
"token": "token_publico",
"etapa": "reob_archivo"
}
Respuesta: archivo_caf con el XML del CAF en base64. Esta etapa finaliza y libera la petición.
Anulación de Folios
Permite anular folios autorizados que no serán utilizados (uno de los pasos que el SII exige para regularizar el timbraje cuando hay folios acumulados sin uso). Etapas con prefijo an_.
Mismo payload que conectar, con "etapa": "an_conectar".
Respuesta: id_peticion y etapa an_listar
{
"id_peticion": 1,
"token": "token_publico",
"etapa": "an_listar"
}
Respuesta: documentos con los tipos disponibles para anulación
{
"id_peticion": 1,
"token": "token_publico",
"cod_docto": 33,
"etapa": "an_disponibles"
}
Respuesta: folios — rangos con folios anulables, cada uno con form_name, folio_inicial, folio_final, cantidad, dia, mes, ano
{
"id_peticion": 1,
"token": "token_publico",
"form_name": "form1",
"etapa": "an_confirmar"
}
Respuesta: folio_ini y folio_fin, el rango vigente dentro del cual se puede anular
Ejecuta la anulación del sub-rango indicado. folio_ini_a / folio_fin_a deben estar dentro del rango confirmado en el paso 4; motivo es texto libre.
{
"id_peticion": 1,
"token": "token_publico",
"folio_ini_a": 150,
"folio_fin_a": 200,
"motivo": "Folios sin uso",
"etapa": "an_motivo"
}
Errores posibles: Folio Fuera de Rango, No se puede anular o ya está anulado. Verifique bien el rango antes de enviar esta etapa.
{
"id_peticion": 1,
"token": "token_publico",
"etapa": "an_finalizar"
}
Respuesta: respuesta_sii con la última respuesta del SII en base64. Esta etapa finaliza y libera la petición (opcional: si no se invoca, la petición expira sola).
Liberar Ban
POST /api/delist
El sistema aplica bans temporales de 24 horas por tipo de documento cuando el SII rechaza consultas en forma reiterada (certificado no reconocido, timbraje restringido por situaciones pendientes). El ban no afecta la reobtención ni la anulación. Este endpoint elimina los bans asociados a la IP que llama.
Parámetros JSON:
- token (string): Token de autorización (obligatorio)
- rut (string, opcional): liberar solo los bans de ese RUT
- entorno (string, opcional): "certificacion" o "produccion"
- cod_docto (int, opcional): liberar solo el ban de ese tipo de documento
Ejemplo:
{
"token": "tu_token",
"rut": "76883241-2",
"entorno": "produccion",
"cod_docto": 33
}
Respuesta: {"message": "Usuario liberado (1 ban(s) eliminados)"} o {"message": "Usuario No tiene ban activo"}
Información Importante
- Todos los requests deben incluir un token válido
- Las respuestas exitosas incluyen
consultas_restantescon el cupo restante del token (-1 = ilimitado) - Los RUTs deben estar en formato sin puntos y con dígito verificador
- El sistema implementa rate limiting y ban temporal de 24 horas por tipo de documento (liberable vía
/api/delist); el ban no afecta reobtención ni anulación - Los archivos CAF se generan en formato XML estándar SII
- Soporte para entornos de Certificación y Producción
- Las peticiones tienen un tiempo de vida de 1 minuto
Proyecto de Donación
Este servicio se mantiene gracias a donaciones simbólicas para fomentar el uso de software libre como Odoo y Flectra.
Impulsado por GlobalResponse y OdooCoop
Soporte Técnico
¿Necesitas ayuda con la integración? Contáctanos para soporte técnico especializado.
Contactar Soporte