DocumentemplateEmpieza gratis

Documentación

API de Documentemplate

Genera cientos de documentos desde otro programa: envías una hoja de cálculo, la API pone el lote en cola y descargas un ZIP con los PDF.

Cómo funciona

Generar cientos de documentos lleva su tiempo, así que la API no te deja esperando con la conexión abierta: envías la hoja, el lote entra en cola y tu programa pregunta hasta que termina.

  1. Enviar la hoja

    Un POST con el id de la plantilla y un Excel o CSV. Responde enseguida con 202 y el id del lote.

  2. Esperar

    Un GET del lote con wait=25: la petición aguanta hasta 25 segundos y contesta en cuanto cambia. Repítela hasta que el estado sea done o failed.

  3. Descargar

    Con el estado done, descarga el ZIP: un PDF por fila y un informe con lo que pasó en cada una.

El endpoint

Una sola versión, v1, con un único recurso: el lote. Usa las mismas plantillas, el mismo emparejamiento de columnas y las mismas cuotas que la pantalla Lotes. Todas las peticiones llevan la cabecera Authorization: Bearer con tu token.

POST https://documentemplate.com/api/v1/batch

CampoQué hace
templateIdobligatorioEl id de la plantilla, que tiene que estar publicada. Lo ves en la dirección al abrirla (/templates/ID).
fileobligatorioLa hoja de cálculo: .xlsx o .csv de hasta 10 MB. La primera fila son los títulos de columna y cada fila siguiente es un documento.
mappingQué columna rellena cada dato, en JSON: {"cliente": "Nombre"}. Vale el título de la columna o su posición (desde 0). Sin él se empareja por los títulos, como propone la aplicación.
nameColumnColumna que da nombre a cada fichero (su título o su posición). Sin ella, la que parece un nombre o, si no hay, el número de fila.
outputFILES (un PDF por documento, por defecto) o MERGED (un único PDF con todos).
formatPDF, que por ahora es el único formato de descarga.

Seguimiento y resultado

GET /v1/batch/:idEl estado del lote: en cola, generándose, terminado o fallido, con su progreso y lo ocurrido en cada fila.
GET /v1/batch/:id?wait=25Lo mismo, pero esperando hasta ese número de segundos (máximo 25) a que el lote termine. Es la forma recomendada de esperar.
GET /v1/batch/:id/resultEl ZIP con los documentos y el informe-del-lote.csv. Se conserva 7 días desde que termina.

Ejemplos

Enviar la hoja

curl
curl -X POST https://documentemplate.com/api/v1/batch \
  -H "Authorization: Bearer <YOUR_TOKEN>" \
  -F templateId=TEMPLATE_ID \
  -F file=@customers.xlsx

Esperar

curl
curl "https://documentemplate.com/api/v1/batch/BATCH_ID?wait=25" \
  -H "Authorization: Bearer <YOUR_TOKEN>"

Descargar

curl
curl -o documents.zip https://documentemplate.com/api/v1/batch/BATCH_ID/result \
  -H "Authorization: Bearer <YOUR_TOKEN>"

Todo junto

JavaScript (Node 20+)
const API = 'https://documentemplate.com/api';
const headers = { Authorization: 'Bearer <YOUR_TOKEN>' };

// 1. Send the sheet: the batch is queued and the answer comes right away (202).
const form = new FormData();
form.append('templateId', 'TEMPLATE_ID');
form.append('file', new Blob([await readFile('customers.xlsx')]), 'customers.xlsx');
let batch = await (await fetch(`${API}/v1/batch`, { method: 'POST', headers, body: form })).json();

// 2. Wait: each request holds for up to 25 s and answers as soon as the state changes.
while (batch.state === 'queued' || batch.state === 'running') {
  batch = await (await fetch(`${API}/v1/batch/${batch.id}?wait=25`, { headers })).json();
}
if (batch.state === 'failed') throw new Error(batch.error);

// 3. Download the ZIP with the documents.
const zip = await fetch(`${API}/v1/batch/${batch.id}/result`, { headers });
await writeFile('documents.zip', Buffer.from(await zip.arrayBuffer()));

Cuotas, errores y versiones

Las cuotas de tu plan se comprueban antes de empezar: si el lote no cabe, recibes un error y no se crea nada ni se gasta nada de tu cuota.

CódigoQué hace
202Lote aceptado y en cola. La respuesta lleva su id y la dirección donde preguntar.
400Petición mal formada: falta la plantilla o la hoja, una columna no existe, la plantilla no está publicada o la hoja no se puede leer.
401Falta el token, es incorrecto o se ha regenerado o revocado.
403Tu plan no permite lotes o el lote no cabe en tu cuota: demasiadas filas, demasiados documentos guardados o PDF del mes. El mensaje dice cuál.
404El lote no existe o es de otra cuenta.
429Demasiadas peticiones. Espera un momento y vuelve a intentarlo.

La versión va en la dirección (v1). Dentro de una versión no se quitan ni se renombran campos: un cambio incompatible saldría como v2 y la v1 seguiría funcionando durante un tiempo.

Empieza en un minuto

Crea tu cuenta y genera tu token en la sección API. La generación en lote es del plan Pro.

Crear cuenta gratisPrecios