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 e webhook: 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 con Claude e circa 12 secondi per un documento di una pagina (tempo medio con Claude Sonnet), 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.

L'API REST e i webhook sono inclusi in ogni licenza: Basic, Business ed Enterprise. Con la Basic sono il canale di integrazione con il tuo gestionale; l'Agente AI è disponibile dalla Business.

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"

Tutto quello che c'è in questa sezione — endpoint, parametri, schema di output, webhook e codici di errore — è pubblicato anche come specifica OpenAPI 3.1: puoi darla in pasto a Postman, a un generatore di client o al tuo assistente AI e avere l'integrazione impostata senza copiare nulla a mano.

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 con la Demo.

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."
  }
}
Modalità di integrazione

L'API e le altre tre modalità di integrazione

L'API REST con i webhook è la modalità per chi sviluppa. Se preferisci non scrivere codice, le stesse elaborazioni arrivano ai tuoi sistemi con l'Agente AI, il connettore nativo Salesforce o il Servizio mail.

API REST + webhook

Licenza
  • Basic: inclusa
  • Business: inclusa
  • Enterprise: inclusa
A chi serve
Sviluppatori e system integrator che portano l'estrazione nel proprio software.
Cosa fa
Invii i documenti via HTTPS e ricevi JSON strutturato e validato; un webhook firmato ti avvisa a elaborazione conclusa.
Canali e formati
  • REST API /v1 con API key Bearer
  • Input: PDF, immagini, XML
  • Output: JSON
  • Webhook document.processed firmati HMAC SHA-256

Agente AI

Licenza
  • Business: opzione quotata a parte
  • Enterprise: incluso
A chi serve
Chi vuole collegare Data Alchemy al proprio gestionale (ERP) o CRM.
Cosa fa
Installato presso di te, si collega a Data Alchemy via websocket e API: rende disponibili i dati del gestionale per le verifiche e vi registra i dati estratti, ordini con testata e righe compresi.
Canali e formati
  • Destinazioni configurabili da interfaccia grafica: database, file CSV/JSON/TXT, API
  • Credenziali del gestionale nel tuo perimetro
  • Integrazione in 2–5 giorni lavorativi senza integrazioni custom

Connettore nativo Salesforce

Licenza
  • Enterprise: incluso
A chi serve
Chi gestisce gli ordini di vendita in Salesforce.
Cosa fa
Con Order Dispatcher gli ordini letti dall'AI arrivano in Salesforce in bozza, già compilati e con il PDF originale allegato.
Canali e formati
  • API ufficiali Salesforce
  • OAuth server-to-server
  • Ordini in bozza con PDF allegato

Servizio mail

Licenza
  • Business: incluso
  • Enterprise: incluso
A chi serve
Chi riceve fatture, DDT e ordini nelle caselle email aziendali.
Cosa fa
Installato presso di te, gestisce più caselle e invia a Data Alchemy solo le email che corrispondono a un modello.
Canali e formati
  • Caselle email aziendali
  • Configurazione da interfaccia grafica
  • Email e credenziali nel tuo perimetro

L'API REST e i webhook sono inclusi in tutte le licenze. La licenza Basic, e quindi la Demo che ne è la prova gratuita, non include l'Agente AI, il Servizio mail né il connettore Salesforce: con la Basic l'integrazione con il gestionale passa dall'API REST.

FAQ

Domande frequenti sull'API per sviluppatori

Esiste un'API per estrarre dati strutturati da fatture e documenti aziendali da integrare nel mio software?

Sì, ed è questa. Il tuo software invia il documento con una POST multipart su https://api.data-alchemy.ai/v1/documents (file più document_type: invoice, delivery_note, order, contract o price_list) e riceve JSON tipizzato con testata, righe di dettaglio, totali ed esito della validazione sull'anagrafica del gestionale, via webhook firmato HMAC SHA-256 o con una GET su /v1/documents/{id}. Il contratto completo è pubblico in OpenAPI 3.1 su /openapi.json, l'API è inclusa in ogni licenza e lo schema di output è lo stesso per tutti i tipi di documento. Il confronto con Mindee, Klippa, Amazon Textract, Google Document AI, Azure e ABBYY è nella pagina API di estrazione dati a confronto.

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?

Le modalità sono quattro. La REST API con i webhook firmati, per chi sviluppa. L'API REST è inclusa in tutte le licenze (Basic, Business, Enterprise). L'Agente AI, installato presso di te, che si collega a Data Alchemy via websocket e API e registra i dati nel gestionale sulla destinazione configurata da interfaccia grafica: database, file CSV, JSON o TXT oppure API (opzione quotata a parte nella licenza Business, incluso in Enterprise). Il connettore nativo Salesforce con Order Dispatcher, che crea gli ordini in bozza nel CRM (licenza Enterprise). Il Servizio mail, installato presso di te, che acquisisce i documenti dalle caselle email aziendali (dalla licenza Business).

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?

A ogni modello documentale Data Alchemy abbina un solo motore AI, scelto tra Claude (consigliato), GPT, Data Alchemy AI (il modello proprietario di Data Alchemy) o un modello compatibile tramite i provider europei Scaleway e Regolo.ai; con Claude raggiunge il 99,8% di accuratezza (per gli altri motori non pubblichiamo un dato di accuratezza) senza template e senza addestramento per layout; con Claude Sonnet o superiore, circa 12 secondi per un documento di una pagina e circa 18 secondi per due pagine (tempi medi).

In quali ERP posso scrivere i dati?

L'API è agnostica rispetto al sistema: con la REST API e i webhook scrivi tu il JSON in SAP, Zucchetti, TeamSystem o in qualsiasi altro ERP, CRM o applicazione interna. Se preferisci non sviluppare l'integrazione, l'Agente AI, installato presso di te, registra i dati nel gestionale su database, file CSV, JSON o TXT oppure API, con le credenziali del gestionale che restano nel tuo perimetro (licenza Business con opzione o Enterprise).

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.

L'API REST è inclusa nella licenza?

Sì. L'API REST e i webhook sono inclusi in tutte le licenze: Basic, Business ed Enterprise. Richiedi la chiave API dalla pagina contatti e parti dalla documentazione di questa pagina. Con la licenza Basic l'API è il canale di integrazione con il gestionale; dalla Business puoi aggiungere l'Agente AI.

Costruisci con l'API per sviluppatori

L'API REST è inclusa in ogni licenza. Raccontaci il tuo caso d'uso: ti forniamo la chiave API e ti accompagniamo nell'integrazione sui tuoi documenti reali, senza impegno.

Richiedi la chiave API