Generar un PDF

POST /v1/pdf/generate es el endpoint principal. Envía el ID de tu plantilla y los datos, y recibe una URL prefirmada para descargar el PDF generado.

Solicitud

POST https://apis.mkpdfs.com/v1/pdf/generate

Encabezados

EncabezadoValor
x-api-keytlfy_... — obligatorio. Consulta Autenticación.
Content-Typeapplication/json

Cuerpo

CampoTipoObligatorioDescripción
templateIdstringEl UUID de la plantilla que se va a renderizar.
dataobject | arrayVariables que se fusionan con la plantilla Handlebars. Pasa un array para generar un PDF de varias páginas — cada elemento se convierte en una página. Máximo 50 elementos por solicitud.
asyncbooleanNoEnvía para procesamiento en segundo plano en lugar de esperar la respuesta — la API responde de inmediato. Por defecto false. Combínalo con sendEmail (direcciones de destino) para recibir el PDF terminado por correo.
sendEmailstring[]NoUna o más direcciones de correo que recibirán el PDF terminado.

Ejemplo con curl

curl -X POST https://apis.mkpdfs.com/v1/pdf/generate \
  -H "x-api-key: tlfy_tu_clave_aqui" \
  -H "Content-Type: application/json" \
  -d '{
    "templateId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "data": {
      "nombreCliente": "Acme Corp",
      "numeroFactura": "FAC-0042",
      "total": "1.200,00"
    }
  }'

Ejemplo de múltiples páginas

Pasa un array en data para producir una página por elemento:

curl -X POST https://apis.mkpdfs.com/v1/pdf/generate \
  -H "x-api-key: tlfy_tu_clave_aqui" \
  -H "Content-Type: application/json" \
  -d '{
    "templateId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "data": [
      {"nombre": "Alicia", "puntuacion": 98},
      {"nombre": "Roberto", "puntuacion": 87}
    ]
  }'

Respuesta exitosa — 200 OK

{
  "success": true,
  "pdfUrl": "https://mkpdfs-prod-bucket.s3.amazonaws.com/users/.../pdfs/....pdf?...",
  "expiresIn": "5 days",
  "size": 84213,
  "pagesGenerated": 1
}
CampoTipoDescripción
successbooleanSiempre true en una respuesta 200.
pdfUrlstringURL prefirmada de S3. Abre o descarga en un plazo de 5 días.
expiresInstringVida útil legible de la URL: "5 days".
sizenumberTamaño del PDF en bytes.
pagesGeneratednumberNúmero de páginas renderizadas.

Respuesta asíncrona — 200 OK

Cuando async: true:

{
  "success": true,
  "message": "PDF generation started. You will receive an email when ready.",
  "async": true,
  "pagesGenerated": 2
}

Créditos

Se descuenta un crédito por página generada. Si data es un objeto, pagesGenerated es 1 y se descuenta 1 crédito. Si data es un array de N elementos, se descuentan N créditos. Los créditos se descuentan tras una respuesta 200 exitosa; una solicitud fallida no consume créditos.

Si tu cuenta no tiene créditos suficientes, la API devuelve 402 INSUFFICIENT_CREDITS. Consulta Errores o visita el panel para comprar créditos.

Límites

LímiteValor
Páginas por solicitud50
Tiempo de espera de la solicitud29 segundos (síncrono)
Usa async: true para documentos grandes que puedan superar el tiempo de espera.

Códigos de error

Consulta la página de Errores para la lista completa. Casos comunes:

EstadoSignificado
401x-api-key ausente o inválida.
402Créditos insuficientes — compra más en mkpdfs.com/billing.
404templateId no encontrado o no pertenece a tu cuenta.
400Validación del cuerpo fallida (p. ej. array data supera 50 elementos).