Data Alchemy — Software IDP con AI
Per sviluppatori

API IDP per Sviluppatori: Estrazione Dati da Fatture, DDT e Ordini in JSON via REST e Webhook

Data Alchemy espone il suo motore di Intelligent Document Processing (IDP) tramite REST API, webhook e connettori SQL: una soluzione IDP con integrazione nativa a ERP e CRM, pensata per chi deve automatizzare il data entry documentale invece di ricostruirlo a mano. Con questa API di estrazione dati invii fatture, DDT, ordini o contratti e ricevi JSON strutturato e validato — 99,8% di accuratezza in circa 3 secondi a documento, pronto da scrivere nel tuo gestionale ERP come SAP, Zucchetti o TeamSystem. Questa pagina è la documentazione API per sviluppatori e system integrator: endpoint REST, webhook, schema dei dati e API Zucchetti.

Cos'è

Un'API IDP che trasforma i documenti in dati strutturati

L'API per sviluppatori è il lato programmatico della piattaforma di Intelligent Document Processing di Data Alchemy. Invece di usare l'app web, i tuoi sistemi inviano i documenti via HTTP e ricevono dati validati e strutturati in risposta: così puoi incorporare l'estrazione di fatture, DDT e ordini direttamente nel tuo software, automatizzare il ciclo passivo o alimentare qualsiasi ERP o CRM senza reinserimento manuale.

Autenticazione

Base URL e autenticazione

Tutte le richieste usano HTTPS verso https://api.data-alchemy.ai/v1 e si autenticano con una API key Bearer trasmessa nell'header Authorization. Le chiavi si generano dalla console e vanno conservate lato server, mai esposte nel browser. Ogni risposta è in formato JSON UTF-8.

Richiesta — invio documento (cURL)
curl -X POST https://api.data-alchemy.ai/v1/documents \
  -H "Authorization: Bearer $DATA_ALCHEMY_API_KEY" \
  -H "Content-Type: multipart/form-data" \
  -F "file=@fattura.pdf" \
  -F "document_type=invoice"
Quickstart

Quickstart: dalla prima chiamata al JSON in 5 minuti

  1. Genera la API key. Dalla console Data Alchemy crea una chiave per l'ambiente di test o di produzione. La chiave va conservata lato server (variabile d'ambiente o secret manager), mai nel codice client o nel browser.
  2. Invia il primo documento. Una POST multipart su /v1/documents con il PDF e il document_type avvia l'estrazione e restituisce subito un id e lo stato processing.
  3. Registra un webhook. Con una POST su /v1/webhooks indichi l'URL che riceverà l'evento document.processed: eviti il polling e ricevi i dati nell'istante in cui l'elaborazione termina.
  4. Verifica la firma HMAC. Ricalcola l'HMAC SHA-256 sul body grezzo e confrontalo con l'header X-Data-Alchemy-Signature prima di leggere il payload.
  5. Mappa il JSON sul tuo ERP. Lo schema di output è identico per tutti i tipi di documento: scrivi il mapping una sola volta e riusalo per fatture, DDT, ordini, contratti e listini.

Una singola integrazione copre l'intero ciclo passivo: ricezione documento, classificazione automatica, estrazione, validazione sull'anagrafica del gestionale e scrittura in SAP, Zucchetti o TeamSystem.

Riferimento API

Riferimento REST API: invia un documento e leggi i dati

Il flusso tipico è asincrono: invii un documento con una POST, ricevi un id e lo stato di elaborazione, poi recuperi il risultato con una GET — oppure, meglio, lasci che sia il webhook a notificarti al termine. Tutti gli endpoint sono versionati sotto /v1.

POST/v1/documentsInvia un documento (PDF, XML, immagine) e avvia l'estrazione. Restituisce un id e lo stato.
GET/v1/documents/{id}Recupera lo stato e i dati estratti e validati di un documento già inviato.
GET/v1/documentsElenca i documenti elaborati con filtri per stato, tipo e intervallo di date.
POST/v1/webhooksRegistra un endpoint che riceverà gli eventi document.processed in tempo reale.
Risposta 202 — documento in elaborazione
{
  "id": "doc_8a7f2c91",
  "status": "processing",
  "document_type": "invoice",
  "created_at": "2026-06-04T09:12:33Z",
  "webhook_url": "https://yourapp.example.com/hooks/data-alchemy"
}
Recupero del risultato (cURL)
curl https://api.data-alchemy.ai/v1/documents/doc_8a7f2c91 \
  -H "Authorization: Bearer $DATA_ALCHEMY_API_KEY"
Webhook

Webhook: cos'è e come funziona

Un webhook è una richiesta HTTP che un servizio invia automaticamente a un URL indicato da te, non appena si verifica un evento. È il contrario di una normale chiamata API: non sei tu a chiedere «il documento è pronto?», è il servizio che ti avvisa da solo quando lo è. Per questo un webhook viene spesso descritto come una «API al contrario» o una callback HTTP: l'applicazione che riceve l'evento espone un endpoint pubblico e resta in ascolto, mentre è il servizio a fare da client.

In Data Alchemy funziona così: registri un URL e riceverai una POST al tuo endpoint appena un documento è stato elaborato, senza dover fare polling. Il payload contiene l'evento, l'id del documento, il livello di confidenza e i dati estratti secondo lo schema di output. Ogni richiesta è firmata con HMAC SHA-256 nell'header X-Data-Alchemy-Signature per verificarne l'autenticità.

Payload webhook — document.processed
POST /hooks/data-alchemy  (X-Data-Alchemy-Signature: sha256=...)

{
  "event": "document.processed",
  "id": "doc_8a7f2c91",
  "status": "completed",
  "confidence": 0.998,
  "data": { /* schema di output — vedi sotto / see below */ }
}

Webhook o polling: qual è la differenza?

Con il polling è il tuo sistema a interrogare ripetutamente l'API («è pronto adesso?»), sprecando chiamate finché l'elaborazione non termina e introducendo un ritardo pari all'intervallo di attesa. Con un webhook la notifica parte nell'istante in cui il documento è pronto: nessuna chiamata a vuoto, nessun ritardo artificiale e un carico molto minore su entrambi i lati. Il polling resta comunque utile come rete di sicurezza — ad esempio per recuperare un documento se il tuo endpoint è stato irraggiungibile a lungo.

Come verificare la firma di un webhook

Poiché il tuo endpoint è pubblico, chiunque potrebbe inviargli una POST. Per questo ogni webhook di Data Alchemy viaggia con l'header X-Data-Alchemy-Signature, che contiene l'HMAC SHA-256 del corpo grezzo della richiesta calcolato con il tuo secret. Ricalcola la firma sul body ricevuto e confrontala con quella dell'header usando un confronto a tempo costante: se non coincidono, scarta la richiesta. Verifica sempre la firma prima di leggere il payload.

Verifica della firma — Node.js
import crypto from "node:crypto";

// Il body va letto grezzo: un JSON già parsato e riserializzato
// produrrebbe una firma diversa. / Read the raw body: a parsed and
// re-serialised JSON would produce a different signature.
function isFromDataAlchemy(rawBody, header, secret) {
  const expected = crypto
    .createHmac("sha256", secret)
    .update(rawBody)
    .digest("hex");

  const received = header.replace("sha256=", "");

  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(received)
  );
}
Schema dati

Schema dei dati di output (JSON)

Ogni documento restituisce JSON tipizzato e validato: testata (fornitore, numero, date), righe di dettaglio, totali, IVA e l'esito della validazione sull'anagrafica del gestionale. La struttura è coerente tra i tipi di documento, così il mapping verso il tuo ERP si scrive una sola volta.

Schema di output — fattura
{
  "document_type": "invoice",
  "header": {
    "supplier": {
      "name": "Rossi Forniture S.r.l.",
      "vat_number": "IT01234567890"
    },
    "invoice_number": "2026/00417",
    "issue_date": "2026-05-28",
    "currency": "EUR"
  },
  "line_items": [
    {
      "sku": "ART-0042",
      "description": "Cartone 30x20x15",
      "quantity": 12,
      "unit_price": 8.50,
      "total": 102.00,
      "vat_rate": 22
    }
  ],
  "totals": { "net": 102.00, "vat": 22.44, "gross": 124.44 },
  "validation": { "status": "validated", "erp_match": true }
}
document_type
Tipo di documento classificato dall'AI: invoice, delivery_note, order, contract, price_list.
header
Dati di testata: anagrafica fornitore/cliente, partita IVA, numero documento, date e valuta.
line_items
Array delle righe: codice articolo (SKU), descrizione, quantità, prezzo unitario, totale e aliquota IVA.
totals
Totali calcolati e ricontrollati: imponibile (net), imposta (vat) e totale documento (gross).
validation
Esito della validazione in tempo reale sull'anagrafica dell'ERP, con flag erp_match ed eventuali anomalie.
OCR ed estrazione dati

API OCR ed estrazione dati: cosa cambia rispetto a un OCR classico

Se stai cercando un'API OCR per leggere fatture e documenti, questa API fa quel lavoro e si ferma un passo più avanti. Un OCR restituisce il testo che ha riconosciuto sull'immagine: una stringa, che poi qualcuno deve interpretare per capire quale numero è l'imponibile e quale la partita IVA. Qui la chiamata è la stessa — una POST multipart con il tuo PDF — ma la risposta è già JSON tipizzato, con testata, righe, totali ed esito della validazione sull'anagrafica del gestionale.

In pratica: dove con un OCR scriveresti tu il parser e lo manterresti a ogni fornitore nuovo, qui il parsing è il servizio. Il documento passa per il riconoscimento del testo, la classificazione del tipo, l'estrazione dei campi con un LLM dedicato e la validazione — e quello che torna al tuo codice è la struttura descritta nello schema di output qui sopra, identica tra tipi di documento diversi.

Nessun template per fornitore

Un OCR a regole va riconfigurato quando cambia l'impaginazione di una fattura. L'estrazione qui è basata su LLM: legge layout mai visti senza che tu aggiunga righe di configurazione.

PDF nativi e scansioni

Accetta PDF testuali, PDF scansionati, immagini e XML FatturaPA sullo stesso endpoint: il riconoscimento ottico entra in gioco solo quando serve davvero.

Campi, non stringhe

La risposta espone header, line_items, totals e validation — non un blob di testo da cui estrarre i valori con espressioni regolari.

Validato prima di tornare

Il flag erp_match dice se fornitore e articoli esistono nell'anagrafica del gestionale. È il controllo che un OCR, per definizione, non può fare.

Se stai ancora decidendo quale delle due tecnologie ti serve, il confronto software OCR fatture vs IDP AI entra nel dettaglio. Se preferisci vederlo su un tuo documento, prova gratis l'estrazione OCR.

Errori e limiti

Rate limit, retry e gestione degli errori

Le risposte usano codici HTTP standard: 202 per un documento accettato e in elaborazione, 200 al recupero del risultato, 401 per API key mancante o non valida, 422 per un documento non leggibile e 429 al superamento del rate limit. Ogni errore restituisce un JSON con error.code e error.message.

In caso di 429 o di errori 5xx è consigliato un retry con backoff esponenziale, così da non aggravare un servizio già sotto carico. I webhook non consegnati vengono ritentati automaticamente con backoff crescente, così nessun evento document.processed va perso anche se il tuo endpoint resta irraggiungibile per qualche minuto.

202Documento accettato e in elaborazione.
200Risultato pronto: dati estratti e validati.
401API key mancante, scaduta o non valida.
422Documento non leggibile o formato non supportato.
429Rate limit superato: riprova con backoff esponenziale.
Risposta di errore — 429 rate limit
HTTP/1.1 429 Too Many Requests
Retry-After: 30

{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Too many requests. Retry after 30s."
  }
}
Metodi di integrazione

Quattro modi per integrare l'estrazione documenti

REST API

Invia un documento e recupera i dati estratti e validati come JSON strutturato, pronto da mappare sul tuo ERP.

Webhook

Pipeline asincrone event-driven: Data Alchemy notifica il tuo endpoint a fine elaborazione, senza polling.

Connettori SQL

Preferisci l'integrazione a livello database? Scrivi i dati estratti direttamente nel tuo sistema via SQL.

Acquisizione da email

Collega una casella Google Workspace o Microsoft 365 e lascia che l'AI acquisisca i documenti — integrazione a zero codice.

FAQ

Domande frequenti sull'API per sviluppatori

Che cos'è l'API per sviluppatori di Data Alchemy?

È l'interfaccia programmatica del motore di Intelligent Document Processing (IDP) di Data Alchemy. Invece di usare l'app web, i tuoi sistemi inviano documenti — fatture, DDT, ordini, contratti, listini — e ricevono in risposta dati strutturati e validati, pronti da scrivere nel tuo ERP o CRM.

Quali metodi di integrazione sono disponibili?

Data Alchemy espone una REST API e webhook per i flussi event-driven, oltre a connettori SQL diretti per chi preferisce l'integrazione a livello database. I documenti possono anche essere acquisiti automaticamente da una casella Google Workspace o Microsoft 365, senza scrivere codice.

In che formato tornano i dati estratti?

I campi estratti vengono restituiti come JSON strutturato — dati di testata, righe di dettaglio, totali, imposte e riferimenti documento — già validati sull'anagrafica del tuo gestionale, così possono essere mappati direttamente sul sistema di riferimento.

Come funziona l'autenticazione e la sicurezza dei webhook?

Le richieste si autenticano con una API key Bearer nell'header Authorization, su HTTPS. I webhook in uscita sono firmati con HMAC SHA-256 nell'header X-Data-Alchemy-Signature, così puoi verificare che ogni notifica provenga davvero da Data Alchemy prima di processarla.

Quanto è accurata e veloce l'estrazione?

Data Alchemy assegna un LLM dedicato a ogni modello di documento (oggi Claude AI), raggiungendo il 99,8% di accuratezza in circa 3 secondi a documento, senza template e senza addestramento per layout.

In quali ERP posso scrivere i dati?

L'API è agnostica rispetto al sistema: esistono integrazioni native per SAP, Zucchetti e TeamSystem, mentre REST API, webhook e connettori SQL permettono di inviare i dati strutturati a qualsiasi altro ERP, CRM o applicazione interna.

Cos'è un webhook?

Un webhook è una richiesta HTTP che un servizio invia automaticamente a un URL indicato da te, non appena si verifica un evento — una sorta di «API al contrario». Invece di interrogare ripetutamente l'API per sapere se un documento è pronto (polling), registri un endpoint e Data Alchemy ti invia una POST con i dati estratti nell'istante in cui l'elaborazione termina. Ogni webhook è firmato con HMAC SHA-256 nell'header X-Data-Alchemy-Signature, così puoi verificare che provenga davvero da Data Alchemy prima di processarlo.

Costruisci con l'API per sviluppatori

Raccontaci il tuo caso d'uso: attiviamo l'accesso API e ti accompagniamo nell'integrazione sui tuoi documenti reali, senza impegno.

Richiedi l'accesso API
API Estrazione Dati da Fatture e DDT: REST e Webhook