Descargar JSON
Obtén una URL temporal para descargar el JSON firmado de un DTE ya emitido. Úsalo en tu Saas, ERP o backend cuando necesites el archivo oficial del documento (archivo JSON del DTE) para archivo, auditoría o reenvío. Lumen valida el estado y te devuelve una URL prefirmada lista para descargar (válida 15 minutos).
Método: GET
Endpoint
Section titled “Endpoint”https://api-sandbox.lumendte.com/v1/documents/{generationCode}/jsonhttps://api.lumendte.com/v1/documents/{generationCode}/jsongenerationCode es el código de generación del DTE (ej. FF84E5DB-79C5-42CE-B415-EC510C53EFB5).
Headers
Section titled “Headers”| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
Authorization | string | Sí | Bearer <access_token> (Client Credentials) |
x-company-tax-number | string | Sí | NRC de la empresa emisora (con o sin guiones) |
La petición no requiere body ni query params.
Request mínimo
Section titled “Request mínimo”Solo necesitas el path y los headers. Ejemplo con el generationCode de un documento emitido:
GET /v1/documents/FF84E5DB-79C5-42CE-B415-EC510C53EFB5/jsonAuthorization: Bearer tu_access_tokenx-company-tax-number: 123456-7Respuesta exitosa
Section titled “Respuesta exitosa”Status: 200 OK
Usa url de inmediato: descarga el JSON o reenvíalo. La URL expira en 15 minutos. No la persistas en tu base de datos para uso posterior; vuelve a llamar este endpoint cuando necesites otra.
{ "url": "https://files.example.com/invoices/1/FF84E5DB-79C5-42CE-B415-EC510C53EFB5.json?X-Amz-Expires=900"}Ejemplo de Solicitud
Section titled “Ejemplo de Solicitud”curl -X GET https://api-sandbox.lumendte.com/v1/documents/FF84E5DB-79C5-42CE-B415-EC510C53EFB5/json \ -H "Accept: application/json" \ -H "Authorization: Bearer tu_access_token" \ -H "x-company-tax-number: 123456-7"const axios = require("axios");
const generationCode = "FF84E5DB-79C5-42CE-B415-EC510C53EFB5";
const config = { method: "get", url: `https://api-sandbox.lumendte.com/v1/documents/${generationCode}/json`, headers: { Accept: "application/json", Authorization: "Bearer tu_access_token", "x-company-tax-number": "123456-7", },};
axios(config) .then((response) => { console.log("URL del JSON:", response.data.url); }) .catch((error) => { console.error( "Error en la solicitud:", error.response ? error.response.data : error.message, ); });import requests
generation_code = 'FF84E5DB-79C5-42CE-B415-EC510C53EFB5'
response = requests.get( f'https://api-sandbox.lumendte.com/v1/documents/{generation_code}/json', headers={ 'Accept': 'application/json', 'Authorization': 'Bearer tu_access_token', 'x-company-tax-number': '123456-7', },)
if response.ok: data = response.json() print('URL del JSON:', data['url'])else: print('Error en la solicitud:', response.text)Errores frecuentes
Section titled “Errores frecuentes”422 — Estado no válido para descargar
Section titled “422 — Estado no válido para descargar”El documento existe, pero su estado no permite descarga (por ejemplo REJECTED).
{ "errorCode": "ELECTRONIC_INVOICE_INVALID_STATUS", "message": "Electronic invoice is not in a valid status to download (current status: REJECTED)", "statusCode": 422}Fix: Solo puedes descargar si el estado es TRANSMITTED, ACCEPTED o CONTINGENCY. Verifica el estado del documento antes de pedir el JSON.
422 — JSON aún no almacenado
Section titled “422 — JSON aún no almacenado”El documento es elegible, pero el archivo JSON todavía no está en almacenamiento.
{ "errorCode": "ELECTRONIC_INVOICE_FILE_NOT_STORED", "message": "Electronic invoice JSON has not been stored yet", "statusCode": 422}Fix: Reintenta en unos segundos. Si acabas de emitir, espera a que Lumen termine de guardar el JSON y vuelve a llamar el endpoint.