REST API · asincrona · metered
L'API di generazione PDF per chi va in produzione.
Costruita come un prodotto di infrastruttura, non come un wrapper sopra una libreria PDF. Async-first, parallela di default, webhook firmati HMAC, fatturazione metered Stripe. Da sandbox a produzione in un pomeriggio.
// Invia valori per un template esistente
POST /api/v1/compilations/
Authorization: Bearer pdf_live_•••
Content-Type: application/json
{
"template": "3f0e4b2a-21c2-4d34-9c8d-9b0a5d6b3f11",
"values": {
"full_name": "Jordan Rivera",
"effective_date": "2026-06-01",
"agrees_to_terms": true
}
} // Risposta — 201 Created, rendering in coda
HTTP/1.1 201 Created
{
"id": "c2a1...e9",
"status": "pending",
"download_url": null
} - Async-native
Invii, ricevi un ID, vai avanti.
Compilazioni singole e batch finiscono su worker Celery dedicati. L'API risponde immediatamente con un ID risorsa stabile; lo stato finale arriva via webhook o tramite una `GET` che decidi tu. Niente attese HTTP da 30 secondi, niente timeout nel gateway.
- Batch paralleli
5 000 righe non devono essere più lente di 50.
I batch fanno fan-out su un pool di worker paralleli. Esponiamo `succeeded`, `failed`, `expected_total` sull'oggetto batch così disegni progressi reali, non spinner.
- Stripe metered billing
Prezzo per PDF. Live nel tuo Stripe.
Ogni PDF renderizzato oltre la quota inclusa viene riportato a Stripe come evento di usage metered. Niente sistema proprietario a crediti, niente riconciliazione di fine mese.
- Più cresci, meno paghi
L'overage per PDF cala a ogni tier.
Starter €0,03 / Pro €0,02 / Business €0,01 per PDF oltre quota. Curva trasparente scritta in listino.
Renderizza un singolo PDF
curl -X POST 'https://api.datapdfengine.com/api/v1/compilations/' \
-H 'Authorization: Bearer pdf_live_...' \
-H 'Content-Type: application/json' \
-d '{
"template": "3f0e4b2a-21c2-4d34-9c8d-9b0a5d6b3f11",
"name": "NDA — Acme S.r.l.",
"values": {
"nome_completo": "Giulia Rossi",
"data_efficacia": "2026-06-01",
"accetta_condizioni": true,
"compenso_annuo": 12000
}
}' Invia un batch da 5 000 righe
curl -X POST 'https://api.datapdfengine.com/api/v1/batches/json/' \
-H 'Authorization: Bearer pdf_live_...' \
-H 'Content-Type: application/json' \
-d '{
"template": "3f0e4b2a-21c2-4d34-9c8d-9b0a5d6b3f11",
"rows": [
{ "nome_completo": "Giulia Rossi", "data_assunzione": "2025-09-01" },
{ "nome_completo": "Marco Bianchi", "data_assunzione": "2025-10-14" }
],
"completion_webhook_endpoint": "e9d8...c1"
}' Verifica la firma HMAC-SHA256
import crypto from "node:crypto";
export function verify(req, secret) {
const header = req.headers["x-datapdfengine-signature"];
const [scheme, sig] = header?.split("=") ?? [];
if (scheme !== "sha256" || !sig) return false;
const expected = crypto
.createHmac("sha256", secret)
.update(req.rawBody)
.digest("hex");
const a = Buffer.from(sig, "hex");
const b = Buffer.from(expected, "hex");
return a.length === b.length && crypto.timingSafeEqual(a, b);
} Vuoi ogni endpoint, payload e codice di errore?
La reference API completa vive su una pagina dedicata. Tienila aperta accanto all'editor.