API Template PDF

Converti qualsiasi file XML FatturaPA in un PDF di cortesia professionale. Scegli tra oltre 10 template, personalizza colori e logo, ricevi il PDF via webhook.

Template Disponibili

Scegli il design perfetto per la tua attività. Tutti i template sono ottimizzati per la stampa A4.

FATTURA
N. 2026/001

Classico

Design pulito e tradizionale. Ideale per studi professionali e consulenti.

template: "classico"
FATTURA
N. 2026/001

Elegante

Linee raffinate con accenti dorati. Per aziende che vogliono distinguersi.

template: "elegante"
FATTURA
N. 2026/001

Moderno

Design contemporaneo con colori vivaci. Perfetto per startup e tech.

template: "moderno"
FATTURA
N. 2026/001

Minimal

Essenziale e leggibile. Massima chiarezza con il minimo ingombro visivo.

template: "minimal"
FATTURA
N. 2026/001

Corporate

Professionale e strutturato. Ideale per medie e grandi aziende.

template: "corporate"
FATTURA
N. 2026/001

Creativo

Design audace con layout non convenzionale. Per agenzie e freelancer creativi.

template: "creativo"
FATTURA
N. 2026/001

Artigiano

Caldo e accogliente con texture naturali. Per artigiani e commercianti.

template: "artigiano"
FATTURA
N. 2026/001

Medico

Conforme alle normative sanitarie. Per studi medici, odontoiatrici e veterinari.

template: "medico"
FATTURA
N. 2026/001

Legale

Formale e autorevole. Per studi legali e notarili.

template: "legale"
FATTURA
N. 2026/001

Tech

Dark mode con accenti neon. Per aziende IT, SaaS e sviluppatori.

template: "tech"

Panoramica

L'API Template PDF accetta un file XML FatturaPA e lo converte in un PDF di cortesia con il template e le personalizzazioni scelti. Il rendering può essere sincrono (risposta immediata con PDF) o asincrono (notifica via webhook al completamento).

Base URLhttps://api.fattureai.it/v1
Sandbox URLhttps://sandbox.api.fattureai.it/v1
FormatoJSON (request), JSON o PDF binario (response)

Autenticazione

Stessa autenticazione dell'API di generazione. Includi la tua API key nell'header:

X-API-Key: fa_live_xxxxxxxxxxxxxxxx

POST /v1/pdf

Converte un file XML FatturaPA in PDF con il template specificato.

Request body

CampoTipoObbligatorioDescrizione
xmlstringSiXML FatturaPA codificato in Base64.
templatestringNoNome del template. Default: classico.
formatostringNoA4 o letter. Default: A4.
personalizzazioneobjectNoPersonalizzazioni del template.
personalizzazione.logostringNoLogo in Base64 (PNG/JPG, max 500KB).
personalizzazione.colore_primariostringNoColore primario esadecimale (es. #2563eb).
personalizzazione.colore_secondariostringNoColore secondario esadecimale.
personalizzazione.fontstringNoFont: inter, roboto, lora, montserrat. Default: inter.
personalizzazione.footer_testostringNoTesto personalizzato nel footer del PDF.
webhook_urlstringNoURL per la notifica asincrona. Se fornito, il rendering avviene in background.
rispostastringNojson (default) o binary. Con binary il PDF viene restituito direttamente.

Esempio richiesta (sincrona)

POST /v1/pdf HTTP/1.1
Host: api.fattureai.it
X-API-Key: fa_live_xxxxxxxxxxxxxxxx
Content-Type: application/json

{
  "xml": "PD94bWwgdmVyc2lvbj0i...base64...encoded==",
  "template": "elegante",
  "formato": "A4",
  "personalizzazione": {
    "colore_primario": "#1e40af",
    "font": "montserrat",
    "footer_testo": "Grazie per la fiducia! Pagamento entro 30 giorni."
  }
}

Esempio risposta (200 OK, modalità JSON)

{
  "success": true,
  "pdf": {
    "id": "pdf_xyz789abc123",
    "url": "https://api.fattureai.it/v1/pdf/download/pdf_xyz789abc123",
    "expires_at": "2026-03-16T12:00:00Z",
    "dimensione_bytes": 145280,
    "template": "elegante",
    "pagine": 1
  },
  "file": "JVBERi0xLjQK...base64...pdf==",
  "crediti_residui": 85
}

Rendering Asincrono con Webhook

Per volumi elevati o PDF complessi, puoi usare il rendering asincrono. Fornisci un webhook_url nella richiesta e ricevi una notifica HTTP POST quando il PDF è pronto.

Richiesta asincrona

{
  "xml": "PD94bWwg...base64...",
  "template": "corporate",
  "webhook_url": "https://tuoserver.com/webhook/pdf-pronto"
}

Risposta immediata (202 Accepted)

{
  "success": true,
  "status": "processing",
  "job_id": "job_abc123def456",
  "estimated_seconds": 5
}

Notifica webhook (POST al tuo server)

{
  "event": "pdf.completed",
  "job_id": "job_abc123def456",
  "pdf": {
    "id": "pdf_xyz789abc123",
    "url": "https://api.fattureai.it/v1/pdf/download/pdf_xyz789abc123",
    "expires_at": "2026-03-16T12:00:00Z",
    "dimensione_bytes": 145280
  },
  "timestamp": "2026-03-09T10:30:05Z"
}

Il webhook include un header X-Webhook-Signature con firma HMAC-SHA256 per verificare l'autenticità della notifica. La chiave segreta per la verifica è disponibile nella dashboard.

GET /v1/pdf/status/{job_id}

In alternativa al webhook, puoi controllare lo stato del rendering con polling.

GET /v1/pdf/status/job_abc123def456 HTTP/1.1
Host: api.fattureai.it
X-API-Key: fa_live_xxxxxxxxxxxxxxxx
{
  "job_id": "job_abc123def456",
  "status": "completed",
  "pdf": {
    "id": "pdf_xyz789abc123",
    "url": "https://api.fattureai.it/v1/pdf/download/pdf_xyz789abc123"
  }
}

Valori possibili per status: queued, processing, completed, failed.

GET /v1/templates

Recupera l'elenco dei template disponibili con anteprime.

GET /v1/templates HTTP/1.1
Host: api.fattureai.it
X-API-Key: fa_live_xxxxxxxxxxxxxxxx
{
  "templates": [
    {
      "id": "classico",
      "nome": "Classico",
      "descrizione": "Design pulito e tradizionale.",
      "anteprima_url": "https://api.fattureai.it/templates/classico/preview.png",
      "personalizzabile": true,
      "disponibile_free": true
    },
    {
      "id": "elegante",
      "nome": "Elegante",
      "descrizione": "Linee raffinate con accenti dorati.",
      "anteprima_url": "https://api.fattureai.it/templates/elegante/preview.png",
      "personalizzabile": true,
      "disponibile_free": false
    }
  ]
}

Codici di Errore

HTTPCodiceDescrizione
400INVALID_XMLL'XML fornito non è un FatturaPA valido.
400INVALID_TEMPLATEIl template specificato non esiste.
400INVALID_LOGOIl logo è troppo grande o in formato non supportato.
400INVALID_COLORIl colore esadecimale non è valido.
400INVALID_WEBHOOK_URLL'URL del webhook non è raggiungibile o non è HTTPS.
401UNAUTHORIZEDAPI key mancante o non valida.
402TEMPLATE_NOT_IN_PLANIl template non è disponibile nel tuo piano. Fai upgrade.
429RATE_LIMITLimite di richieste superato.
429CREDITI_ESAURITICrediti esauriti.
500RENDER_ERRORErrore durante il rendering del PDF.

Rate Limits

PianoRichieste / minutoMax dimensione XML
Free10500 KB
Starter602 MB
Pro1205 MB
EnterprisePersonalizzatoPersonalizzato

Esempi di Codice

cURL — Conversione sincrona con download diretto

curl -X POST https://api.fattureai.it/v1/pdf \
  -H "X-API-Key: fa_live_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "xml": "'$(base64 -w0 fattura.xml)'",
    "template": "moderno",
    "risposta": "binary"
  }' \
  --output fattura.pdf

Python — Conversione con personalizzazione

import os
import base64
import requests

api_key = os.environ["FATTURAAI_API_KEY"]

with open("fattura.xml", "rb") as f:
    xml_b64 = base64.b64encode(f.read()).decode()

response = requests.post(
    "https://api.fattureai.it/v1/pdf",
    headers={"X-API-Key": api_key},
    json={
        "xml": xml_b64,
        "template": "elegante",
        "personalizzazione": {
            "colore_primario": "#1e40af",
            "font": "montserrat",
            "footer_testo": "Pagamento entro 30 giorni.",
        },
    },
)

data = response.json()
if data["success"]:
    pdf = base64.b64decode(data["file"])
    with open("fattura.pdf", "wb") as f:
        f.write(pdf)

Node.js — Rendering asincrono con webhook

import { readFile } from "fs/promises";

const apiKey = process.env.FATTURAAI_API_KEY;
const xml = await readFile("fattura.xml");

const response = await fetch("https://api.fattureai.it/v1/pdf", {
  method: "POST",
  headers: {
    "X-API-Key": apiKey,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    xml: xml.toString("base64"),
    template: "corporate",
    webhook_url: "https://tuoserver.com/webhook/pdf",
  }),
});

const data = await response.json();
console.log(`Job avviato: ${data.job_id}`);
// Il PDF sara' consegnato via webhook quando pronto

Pronto a Generare PDF Professionali?

10 conversioni gratuite al mese. Inizia subito senza carta di credito.