API LUMINOUS — Referencia v1
Formato: JSON (UTF-8) · Solo HTTPS, server-to-server. La base URL depende del ambiente de tu key:
| Key | Ambiente | Base URL |
|---|---|---|
lum_test_… | Sandbox (certificación del SII) | https://pruebas.luminous.cl |
lum_live_… | Producción (validez tributaria real) | https://luminous.cl |
Si usas una key en la base URL equivocada, la API responde 400 indicándote la correcta.
Autenticación
Todas las solicitudes llevan tu API key en el header:
Authorization: Bearer lum_test_XXXXXXXX (sandbox → ambiente de certificación del SII) Authorization: Bearer lum_live_XXXXXXXX (producción)
- La key se muestra una sola vez al crearla — guárdala en un gestor de secretos. Nunca la incluyas en código cliente (apps móviles, JS de navegador).
- Cada key tiene scopes (
dte:emitir,dte:leer,pdf:leer), límite de solicitudes por minuto y cuota mensual de emisión según tu plan. - Verifica tus credenciales con
GET /api/public/v1/ping.
Endpoints
| Endpoint | Scope | Descripción |
|---|---|---|
GET/api/public/v1/ping | — | Verifica la key: app, ambiente, scopes, plan |
GET/api/public/v1/uso | — | Consumo del plan del mes y folios CAF restantes |
POST/api/public/v1/dte/emitir | dte:emitir | Crea, firma y envía un DTE al SII |
GET/api/public/v1/dte/{tipo}/{folio} | dte:leer | Estado, track ID y montos del documento |
GET/api/public/v1/dte/{tipo}/{folio}/pdf?copia= | pdf:leer | PDF (original | cedible | ambas) |
GET/api/public/v1/dte/{tipo}/{folio}/xml | dte:leer | XML firmado (ISO-8859-1) |
Consultar tu consumo
GET /api/public/v1/uso te dice, en cualquier momento, cuánto llevas consumido de tu plan este mes y cuántos folios CAF de cada tipo de documento te quedan disponibles. Es de solo lectura: no cobra, no factura, no descuenta nada — solo informa.
Request
GET /api/public/v1/uso X-API-Key: lum_test_XXXX
También acepta Authorization: Bearer lum_test_XXXX, igual que el resto de los endpoints.
Respuesta
{
"exito": true,
"datos": {
"periodo": "2026-07",
"plan": {
"tiene_api": true,
"periodo": "2026-07",
"ambiente": "CERT",
"plan_codigo": "starter",
"plan_nombre": "Starter",
"plan_vigente": true,
"documentos_consumidos": 42,
"documentos_incluidos": 100,
"restante_plan": 58,
"excedente": 0,
"precio_base": 15000,
"precio_excedente": 90,
"tope_duro": null,
"cargo_excedente": 0
},
"folios_caf": [
{"tipo_dte": 33, "nombre": "Factura", "restantes": 120},
{"tipo_dte": 39, "nombre": "Boleta", "restantes": 8}
]
}
}
Para emitir necesitas tu certificado digital y tus folios CAF cargados en el sistema. Si folios_caf no trae el tipo de documento que quieres emitir (o su restantes es 0), la emisión fallará con 422 aunque tu plan tenga cupo.
Emitir un DTE
Header obligatorio: Idempotency-Key (8–120 caracteres, único por emisión — por ejemplo el ID de tu pedido). Si reintentas con la misma key de idempotencia, recibes la misma respuesta y no se emite un segundo documento.
Tipos soportados
| tipo_dte | Documento | Notas |
|---|---|---|
| 33 | Factura electrónica | Afecta (IVA 19%). Receptor con dirección/comuna. |
| 34 | Factura exenta | Ítems exentos automáticamente. |
| 39 / 41 | Boleta electrónica (afecta / exenta) | Precio de la boleta afecta es BRUTO (IVA incluido). |
| 46 | Factura de compra | Retención total de IVA (cambio de sujeto) automática. |
| 52 | Guía de despacho | Enviar ind_traslado (1=venta, 5=traslado interno…) y opcional tipo_despacho. |
| 56 / 61 | Nota de débito / crédito | Requieren referencias al documento que modifican. |
Request
POST /api/public/v1/dte/emitir
Authorization: Bearer lum_test_XXXX
Idempotency-Key: pedido-8841-factura
Content-Type: application/json
{
"tipo_dte": 33,
"receptor": {
"rut": "77043599-4",
"razon_social": "Techmell SpA",
"giro": "Venta de bicicletas",
"direccion": "Rio Claro 8300",
"comuna": "Pudahuel",
"ciudad": "Santiago"
},
"items": [
{"nombre": "Bicicleta MTB 29", "cantidad": 1, "precio_unitario": 350000},
{"nombre": "Casco", "cantidad": 2, "precio_unitario": 25000, "descuento_pct": 10}
],
"forma_pago": 1,
"enviar": true
}
Campos opcionales: fecha_emision (AAAA-MM-DD), referencias (lista de {tipo_doc_ref, folio_ref, fecha_ref, cod_ref, razon_ref}; cod_ref 1=anula, 2=corrige texto, 3=modifica monto), enviar (default true; con false el documento queda firmado sin enviar).
Respuesta
{
"exito": true,
"datos": {
"documento_id": 812,
"tipo_dte": 33,
"folio": 128,
"ambiente": "CERT",
"totales": {"monto_neto": 395000, "monto_iva": 75050, "monto_total": 470050},
"enviado": true,
"track_id": "0252583311"
},
"mensaje": "Documento emitido."
}
Códigos de error
| HTTP | Significado |
|---|---|
| 400 | Solicitud inválida (falta Idempotency-Key, tipo no soportado, ítems mal formados) |
| 401 | API key ausente, inválida o revocada |
| 402 | Cuota mensual de documentos agotada — sube de plan |
| 403 | La key no tiene el scope requerido |
| 404 | Documento no encontrado (de tu empresa y ambiente) |
| 422 | El documento no pudo crearse (validación tributaria: folios agotados, receptor incompleto…) — el mensaje indica la causa |
| 429 | Rate limit por minuto excedido, o demasiados intentos de autenticación fallidos |
| 5xx | Error interno — reintenta con la MISMA Idempotency-Key (no duplica el documento) |
Buenas prácticas
- Idempotencia siempre: usa el ID de tu operación (pedido, venta) como
Idempotency-Keyy reintenta con backoff ante 5xx/timeouts. - Integra primero en sandbox (
lum_test_): opera contra el ambiente de certificación real del SII, con folios y certificado de prueba. - Consulta el estado después de emitir: el SII procesa asincrónicamente (estados: EMITIDO_LOCAL → RECIBIDO_SII → ACEPTADO_SII / RECHAZADO_SII).
- No expongas la key en clientes: llama a la API desde tu backend.
Pasar a producción
Para emitir con validez tributaria tu empresa necesita: certificado digital vigente, folios CAF cargados, configuración SII (resolución) y la certificación ante el SII — nuestro equipo la hace contigo usando el módulo de certificación asistida de LUMINOUS. Al completarla, te entregamos tu key lum_live_. Solicita tu acceso aquí.