Data Alchemy — Software IDP con AI
Per sviluppatori

API IDP per Sviluppatori: Estrazione Dati da Documenti via REST, Webhook e JSON

Data Alchemy espone il suo motore di Intelligent Document Processing (IDP) tramite REST API, webhook e connettori SQL. 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 integrazione Zucchetti via API.

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"
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.
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 IDP Estrazione Dati: REST, Webhook e JSON | Data Alchemy