Guía del producto y de la API

Generar un documento

Qué hace este endpoint

Una llamada convierte una plantilla y tus datos en un archivo terminado. El documento se genera mientras esperas y la respuesta incluye una dirección de descarga; no hay que consultar el estado. Para documentos largos o trabajo por lotes, el endpoint en cola hace lo mismo en segundo plano.

Envía el código de plantilla y tus datos y recibe el documento. La URL de descarga de la respuesta es relativa a la dirección base y se solicita con la misma clave API.

Solicitud
curl -X POST https://api.pdfgine.com/api/v1/render \
  -H "X-PDFgine-Key: $PDFGINE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "templateCode": "invoice",
        "format": "pdf",
        "locale": "es",
        "purpose": "production",
        "data": {
          "document": { "title": "INV-2026-001" }
        }
      }'

El campo format admite "pdf" o "docx". Los valores numéricos siguen funcionando para los clientes existentes: 1 es PDF y 2 es DOCX. Las respuestas devuelven el formato como número.

El propósito production consume cuota. Mientras pruebas una plantilla, envía editor-test: esa salida no consume cuota y usa la revisión del borrador sin publicar.

El ciclo completo

Esta es la respuesta a la llamada anterior y la llamada para obtener el archivo. El estado es 202: la solicitud se ha aceptado y el documento está listo.

Respuesta
HTTP/1.1 202 Accepted
X-PDFgine-Pages: 1
X-PDFgine-Quota-Remaining: 4999

{
  "documentId": "doc_a96063f5dcd5400286ce9b3be9b0595b",
  "format": "pdf",
  "templateCode": "invoice",
  "templateVersion": 1,
  "templateVersionSource": "published",
  "downloadUrl": "/api/v1/documents/doc_a96063f5dcd5400286ce9b3be9b0595b/download/pdf",
  "pageCount": 1,
  "quotaRemaining": 4999,
  "meteringBasis": "pdf-equivalent"
}
cURL
curl https://api.pdfgine.com/api/v1/documents/doc_a96063f5dcd5400286ce9b3be9b0595b/download/pdf \
  -H "X-PDFgine-Key: $PDFGINE_KEY" \
  -o invoice.pdf

Los errores más habituales

  • La renderización responde 202, no 200. Un cliente que considere un fallo cualquier código distinto de 200 notificará un éxito como error.
  • purpose decide dos cosas a la vez: production usa la versión publicada y consume cuota; editor-test usa el borrador sin publicar y no consume nada. Probar con production es la forma más cara de experimentar con una plantilla.
  • 422 no es un fallo del servidor. El cuerpo lista en errors todos los campos que esperaba la plantilla; la solución está en los datos enviados, no en reintentar.
  • 402 significa que se ha agotado la cuota mensual de páginas. La cabecera X-PDFgine-Quota-Remaining te avisa antes de llegar a ese punto.
  • downloadUrl es relativa a la dirección de la API. Guardarla como URL absoluta fallará cuando cambie la dirección; guarda documentId y construye la dirección.
Respuesta →