Docs
ES
Crear cuenta

Inicio rápido con la API

Genera la misma factura que en la guía de la app desde tu terminal. Empieza con la plantilla publicada Invoice quickstart de Crea tu plantilla dinámica reutilizable y copia su ID. Tu espacio de trabajo necesita créditos de generación.

1. Crea una clave de API

En tu espacio de trabajo, abre Miembros y claves y crea una clave con documents:create y documents:read. Comprueba que su acceso a recursos incluya tu plantilla. Consulta Autenticación para ver los pasos y las capturas de pantalla.

Define estas variables en tu terminal y reemplaza los valores de ejemplo con tu clave y el ID de tu plantilla publicada:

export SHIPPDF_API_TOKEN='YOUR_API_TOKEN'
export SHIPPDF_TEMPLATE_ID='YOUR_PUBLISHED_TEMPLATE_ID'

Trata la clave como una contraseña. No la guardes en el control de versiones ni en código que se ejecute en el navegador.

2. Genera un documento

Envía el ID de plantilla y los nuevos datos de factura a POST /v1/documents:

curl https://api.shippdf.com/v1/documents \
  -H "Authorization: Bearer $SHIPPDF_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: quickstart-invoice-INV-1043" \
  -d "{
    \"template_id\": \"$SHIPPDF_TEMPLATE_ID\",
    \"expiry_minutes\": 60,
    \"data\": {
      \"invoice\": {
        \"number\": \"INV-1043\",
        \"customer_name\": \"Northstar\"
      }
    }
  }"

Una solicitud correcta usa un crédito y devuelve un documento antes de que el PDF esté listo. Este ejemplo abreviado muestra los campos que usarás después:

{ "id": "doc_example", "status": "queued", "pdf_url": null }

Copia el id real de tu respuesta. Repetir la misma solicitud con el mismo Idempotency-Key devuelve el documento original sin cobrar de nuevo. Usa una clave nueva cuando quieras otro documento, incluso si cambias los datos.

Esta solicitud establece expiry_minutes en 60, así que cada enlace de descarga del PDF dura una hora. Elige un entero entre 15 y 10080 minutos (7 días), u omite el campo para usar el valor predeterminado del espacio de trabajo, inicialmente 15 minutos. La duración elegida se guarda con el documento; cambiar el valor predeterminado solo afecta a documentos futuros.

3. Espera a que termine

Define el ID de documento que recibiste y consulta su estado:

export SHIPPDF_DOCUMENT_ID='YOUR_RETURNED_DOCUMENT_ID'

curl "https://api.shippdf.com/v1/documents/$SHIPPDF_DOCUMENT_ID" \
  -H "Authorization: Bearer $SHIPPDF_API_TOKEN"

Si status es queued o processing, espera un momento antes de consultar de nuevo. Detente cuando sea completed o failed. Si falla, revisa failure.code y failure.message antes de iniciar otra generación.

Al terminar, la respuesta incluye un pdf_url firmado y su duración guardada:

{
  "id": "doc_example",
  "status": "completed",
  "expiry_minutes": 60,
  "pdf_url": "https://.../document.pdf"
}

4. Descarga tu PDF

Abre el pdf_url real de tu respuesta o descárgalo desde la terminal:

curl --fail --location 'YOUR_RETURNED_PDF_URL' --output invoice-INV-1043.pdf

Comprueba que muestre Invoice INV-1043 y Customer: Northstar. Si el enlace vence, consulta el mismo documento para obtener una URL nueva; no necesitas generar otro documento ni gastar otro crédito. El enlace nuevo usa la misma duración guardada.

También puedes revisar esta generación en la app, en Solicitudes.

Vista de Solicitudes con una generación por API completa, su ID, URL del PDF y botón Download PDF.
Las generaciones por API también aparecen en Solicitudes. Esta captura en inglés usa Start here; tu solicitud usará Invoice quickstart.

Lista documentos recientes

Usa GET /v1/documents con documents:read para encontrar generaciones recientes:

curl 'https://api.shippdf.com/v1/documents?limit=15' \
  -H "Authorization: Bearer $SHIPPDF_API_TOKEN"

La respuesta contiene un array data y next_cursor. Lista los documentos más recientes primero, incluidos resultados queued, processing, completed y failed, dentro del espacio de trabajo y el acceso a recursos de tu clave. Cada elemento incluye created_at; los documentos completados incluyen un pdf_url nuevo con su expiry_minutes guardado. Consulta un documento individual para recuperar sus datos de entrada en data.

El tamaño predeterminado de página es 15; limit acepta entre 1 y 100. Si next_cursor no es null, pásalo como parámetro cursor, codificado para URL, para obtener la página siguiente. Detente cuando next_cursor sea null.

Próximos pasos

Para integraciones automáticas, usa webhook_url para recibir avisos al terminar en lugar de consultar el estado. Consulta la referencia de la API para ver los esquemas completos, el comportamiento de los webhooks y los errores.

También puedes generar con la misma plantilla desde la app o con un asistente de IA.