AI Legale italiana,
via API.
Integra analisi predittiva dei casi, ricerca giurisprudenziale verificata e revisione contratti nel tuo software. Operativo in 5 minuti.
Nuovo all'API? Ogni nuovo account include 100 chiamate gratuite su tutti gli endpoint per testare l'integrazione. Nessuna carta di credito richiesta durante la prova.
La tua prima chiamata API
Imposta la chiave API ed esegui una richiesta di analisi predittiva:
# Imposta la tua chiave API
export LEX_KEY="lex_live_LA_TUA_CHIAVE"
curl -s -X POST "https://lexaistudio.com/functions/apiGateway" \
-H "X-API-Key: $LEX_KEY" \
-H "X-Endpoint: analisi-predittiva" \
-H "Content-Type: application/json" \
-d '{
"tipo_causa": "inadempimento contrattuale",
"testo_libero": "Il fornitore non ha consegnato la merce nei termini. Danno stimato €25.000.",
"giurisdizione": "Milano"
}' | python3 -m json.tool
import requests
API_KEY = "lex_live_LA_TUA_CHIAVE"
BASE_URL = "https://lexaistudio.com/functions/apiGateway"
risposta = requests.post(
BASE_URL,
headers={
"X-API-Key": API_KEY,
"X-Endpoint": "analisi-predittiva",
},
json={
"tipo_causa": "inadempimento contrattuale",
"testo_libero": "Il fornitore non ha consegnato la merce nei termini.",
"giurisdizione": "Milano",
}
)
dati = risposta.json()
print(f"Probabilità di successo: {dati['probabilita_successo']}%")
print(f"Strategia: {dati['report']['strategia_consigliata']}")
const API_KEY = "lex_live_LA_TUA_CHIAVE";
const BASE_URL = "https://lexaistudio.com/functions/apiGateway";
const risposta = await fetch(BASE_URL, {
method: "POST",
headers: {
"X-API-Key": API_KEY,
"X-Endpoint": "analisi-predittiva",
"Content-Type": "application/json",
},
body: JSON.stringify({
tipo_causa: "inadempimento contrattuale",
testo_libero: "Il fornitore non ha consegnato la merce nei termini.",
giurisdizione: "Milano",
}),
});
const { probabilita_successo, report } = await risposta.json();
console.log(`Successo: ${probabilita_successo}%`);
Chiavi API
Tutte le richieste richiedono una chiave API nell'header HTTP X-API-Key. Le chiavi usano il formato lex_live_<32 caratteri casuali>.
L'endpoint da chiamare si specifica tramite l'header X-Endpoint (es. X-Endpoint: analisi-predittiva). È supportata anche la sintassi a query param: ?endpoint=analisi-predittiva.
Mantieni la chiave segreta. Non esporre le chiavi API nel codice client-side, repository pubblici o nei log. Ogni chiave è collegata a una quota mensile — un utilizzo non autorizzato scala il tuo limite.
Header richiesti
| Header | Obbligatorio | Descrizione |
|---|---|---|
| X-API-Key | obbligatorio | La tua chiave API. Formato: lex_live_... |
| X-Endpoint | obbligatorio | Nome dell'endpoint (es. analisi-predittiva) |
| Content-Type | obbligatorio | Deve essere application/json per le richieste POST |
Struttura delle richieste
Tutte le chiamate API puntano a un unico URL di base. L'endpoint viene specificato via header.
URL base: https://lexaistudio.com/functions/apiGateway
# Esempio: POST con header X-Endpoint
POST https://lexaistudio.com/functions/apiGateway
X-Endpoint: analisi-predittiva
# Oppure con query param
POST https://lexaistudio.com/functions/apiGateway?endpoint=analisi-predittiva
Analisi predittiva
Restituisce una valutazione probabilistica dell'esito di un caso legale, la strategia raccomandata, le normative applicabili e la giurisprudenza rilevante con citazioni verificate.
Corpo della richiesta
| Parametro | Descrizione |
|---|---|
| tipo_causaobbligatorio | Tipologia del caso legale. Esempi: "accertamento IVA", "inadempimento contrattuale", "abuso edilizio", "ricorso TAR" |
| testo_liberoopzionale | Descrizione in testo libero dei fatti del caso. Maggiore è il dettaglio, più alta è la precisione della risposta. |
| giurisdizioneopzionale | Città del foro competente. Es. "Milano", "Roma", "Napoli" |
| giudiceopzionale | Nome del giudice assegnato. Se fornito, il sistema cerca precedenti verificati di quel magistrato nella Quinta Sezione Cassazione. |
| keywordsopzionale | Array di parole chiave per guidare il retrieval giurisprudenziale. Es. ["IVA", "operazioni inesistenti"] |
Risposta
{
"tipo_causa": "accertamento IVA",
"testo_libero": "L'Agenzia delle Entrate ha notificato un avviso di accertamento IVA per €45.000 relativo all'anno 2022, contestando operazioni ritenute inesistenti. Il contribuente dispone di documentazione a supporto delle operazioni.",
"giurisdizione": "Milano",
"keywords": ["IVA", "operazioni inesistenti", "accertamento"]
}
{
"probabilita_successo": 68,
"report": {
"livello_affidabilita": "Media",
"livello_retrieval": "L1_cassazione_ufficiale",
"strategia_consigliata": "1. Raccogliere e produrre documentazione completa...",
"punti_di_forza": ["Documentazione esistente a supporto", "..."],
"punti_di_debolezza": ["Onere probatorio elevato"],
"norme_applicabili": ["D.P.R. 633/1972 art. 19", "..."],
"sentenze_rilevanti": [
{
"titolo": "Cass. civ., Quinta Sezione, 15/03/2026, n. 7234/2026",
"massima": "IVA — operazioni soggettivamente inesistenti...",
"fonte": "https://www.cortedicassazione.it/it/civile_dettaglio.page?contentId=...",
"verificata": true
}
],
"analisi_giurisprudenziale": {
"orientamento_prevalente": "Favorevole al contribuente in caso di prova documentale...",
"giudici_con_precedenti": []
}
}
}
Fonti giurisprudenziali: Il sistema recupera sentenze verificate dal sito ufficiale della Corte di Cassazione (Quinta Sezione per il tributario, sezione civile per il resto) e dalla banca dati OpenGA per TAR e Consiglio di Stato. Le sentenze con "verificata": true includono sempre un link diretto alla fonte ufficiale.
Strategia legale
Restituisce una strategia di difesa dettagliata, timeline procedurale e valutazione del rischio per un contenzioso.
Corpo della richiesta
| Parametro | Descrizione |
|---|---|
| testoobbligatorio | Descrizione del caso o domanda legale da analizzare. |
| historyopzionale | Storico della conversazione per analisi multi-turno. Ogni elemento: {"role": "user"|"assistant", "content": "..."} |
| is_followupopzionale | Booleano. Impostare true quando si continua una conversazione precedente. |
{
"testo": "Il nostro cliente ha ricevuto un diniego di concessione edilizia dal Comune di Firenze. Quali strategie percorrere con ricorso TAR?"
}
{
"risposta": "Per un ricorso TAR avverso diniego concessione edilizia, la strategia ottimale prevede...",
"azioni_immediate": [
"Verifica termini decadenza (60 gg dalla notifica del provvedimento)",
"Acquisizione elaborati tecnici difformi rispetto al diniego"
],
"rischi": ["Decadenza termine impugnativa", "Carenza di interesse"],
"timeline_stimata": "18-24 mesi"
}
Ricerca sentenze
Recupera giurisprudenza verificata da fonti ufficiali italiane: Corte di Cassazione (Quinta Sezione per il tributario), TAR e Consiglio di Stato.
Corpo della richiesta
| Parametro | Descrizione |
|---|---|
| tipo_causaobbligatorio | Tipologia del contenzioso. Usato per selezionare la fonte corretta (termini tributari → Quinta Sezione Cassazione; materie amministrative → TAR/Consiglio di Stato). |
| queryopzionale | Testo di ricerca in linguaggio naturale per filtraggio aggiuntivo. |
| keywordsopzionale | Array di parole chiave specifiche per il punteggio di rilevanza. |
Fonti disponibili
| Fonte | Materia | Tipo |
|---|---|---|
| cortedicassazione.it — Quinta Sezione | Diritto tributario (IVA, IRPEF, IRES, accertamento, riscossione) | Verificata |
| cortedicassazione.it — Sezione civile | Diritto civile, contratti, responsabilità | Verificata |
| OpenGA (TAR/CdS) | Diritto amministrativo, urbanistica, appalti | Verificata |
Revisione contratti
Analizza il testo di un contratto per problemi di compliance, incongruenze interne, clausole mancanti e rischi legali secondo il diritto italiano.
Corpo della richiesta
| Parametro | Descrizione |
|---|---|
| testo_contrattoobbligatorio | Testo completo del contratto da analizzare. Minimo 300 caratteri. |
| tipo_contrattoopzionale | Tipo di contratto per contestualizzare l'analisi. Es. "fornitura", "appalto", "licenza software", "locazione" |
| tipo_analisiopzionale | Profondità dell'analisi. "rapida" (scansione veloce) o "completa" (revisione integrale). Default: "completa" |
Campi della risposta
| Campo | Descrizione |
|---|---|
| score_rischio | Punteggio di rischio complessivo da 0 a 100. Sopra 70 = rischio elevato. |
| clausole_critiche | Array di clausole problematiche con livello di gravità e correzione suggerita. |
| incongruenze | Incongruenze interne (terminologiche, numeriche, logiche, lacune). |
| clausole_mancanti | Clausole standard assenti nel contratto analizzato. |
| analisi_parziale | true se il documento supera il limite di analisi (mostrato con avviso). |
Verifica AML
Valuta il rischio antiriciclaggio di clienti, incarichi e operazioni secondo il D.Lgs. 231/2007. Il motore esegue una verifica multi-livello: applicabilità AML dell'incarico, controlli locali sui dati, validazione del codice fiscale, screening su liste sanzioni e valutazione AI documentata.
Corpo della richiesta
| Parametro | Descrizione |
|---|---|
| tipo_clienteobbligatorio | Tipo di soggetto da verificare. Valori consigliati: "persona_fisica" o "persona_giuridica". |
| nome, cognomeobbligatorio PF | Nome e cognome della persona fisica. Utilizzati per controlli su liste sanzioni, PEP e verifica del codice fiscale. |
| ragione_socialeobbligatorio PG | Denominazione della persona giuridica. Richiesta quando tipo_cliente è "persona_giuridica". |
| codice_fiscaleopzionale | Codice fiscale del soggetto. Se presente, viene validato algoritmicamente e confrontato con nome, cognome e data di nascita. |
| data_nascitaopzionale | Data in formato YYYY-MM-DD. Migliora l'accuratezza degli screening e della verifica del codice fiscale. |
| pepobbligatorio | Dichiarazione PEP del cliente: true o false. La mancata dichiarazione blocca la verifica. |
| pep_familiare, pep_ruoloopzionale | Indica se il soggetto è familiare o stretto collaboratore di PEP e specifica il ruolo, se noto. |
| attivita_difensivaopzionale | Se true e non sono presenti trigger AML, l'incarico può essere classificato come out_of_scope. |
| gestione_denaro, operazione_immobiliare, operazione_societaria, trust_strutture, strumenti_finanziariopzionale | Flag booleani che determinano l'applicabilità AML dell'incarico. Se almeno uno è true, la pratica viene considerata normalmente in_scope. |
| tipo_operazioneopzionale | Descrizione sintetica dell'operazione. Se assente, viene derivata dai flag AML presenti nella richiesta. |
| importo, valutaopzionale | Valore economico dell'operazione. Importi elevati aumentano il punteggio di rischio. |
| origine_fondicondizionale | Obbligatorio quando l'importo supera 10.000. Descrive la provenienza dei fondi dichiarata dal cliente. |
| paese_provenienza_fondi, nazionalita, scopo_dichiaratoopzionale | Informazioni usate per stimare rischio geografico, coerenza economica e finalità dell'operazione. |
| esecutore_diverso, titolare_effettivo_diversoopzionale | Se valorizzati a true, richiedono i relativi dati identificativi: esecutore_nome, esecutore_cf, titolare_nome, titolare_cf. |
Risposta
{
"tipo_cliente": "persona_fisica",
"nome": "Mario",
"cognome": "Rossi",
"codice_fiscale": "RSSMRA80C12H501U",
"data_nascita": "1980-03-12",
"nazionalita": "Italia",
"pep": false,
"pep_familiare": false,
"attivita_difensiva": false,
"gestione_denaro": true,
"operazione_societaria": true,
"tipo_operazione": "costituzione società con conferimento",
"importo": 75000,
"valuta": "EUR",
"origine_fondi": "Redditi professionali documentati",
"paese_provenienza_fondi": "Italia",
"scopo_dichiarato": "Operazione societaria per avvio nuova attività"
}
{
"aml_scope": "in_scope",
"aml_scope_auto_motivo": "L'incarico comprende attività che rientrano nell'ambito AML.",
"required_fields_complete": true,
"local_validation_status": "passed",
"rischio_score_totale": 35,
"rischio_proposto": "MEDIO",
"indicator_hits": ["Importo significativo", "Operazione societaria"],
"official_checks_status": "executed",
"official_check_sources_used": ["OPENSANCTIONS_100_LISTE", "CODICE_FISCALE_ALGORITMO"],
"codice_fiscale": {
"valido": true,
"coerente": true
},
"dilisense_called": true,
"dilisense_result": {
"total_hits": 0,
"has_sanctions": false,
"has_pep": false,
"has_criminal": false
},
"analisi_ai": {
"livello_rischio": "MEDIO",
"tipo_verifica_consigliata": "ordinaria",
"segnalazione_uif": false,
"red_flags": [],
"adempimenti": ["Conservare documentazione identificativa", "Documentare origine fondi"]
},
"verifica_rafforzata_suggerita": false,
"manual_review_required": false,
"sos_attention_flag": false
}
Fonti e controlli: La verifica AML usa OpenSanctions come layer principale per liste internazionali; se non configurato, esegue fallback su liste sanzioni UE e OFAC SDN. Il modulo può attivare Dilisense per screening PEP, sanzioni e profili criminali nei casi a rischio, oltre alla verifica algoritmica del codice fiscale.
Regole di escalation: La presenza in liste sanzioni, un codice fiscale non valido, un profilo PEP o hit Dilisense rilevanti portano a rischio alto, revisione manuale obbligatoria e possibile attenzione SOS/UIF secondo la valutazione restituita.
Utilizzo account
curl -s "https://lexaistudio.com/functions/apiGateway?endpoint=usage" \
-H "X-API-Key: $LEX_KEY"
{
"piano": "growth",
"calls_used_month": 847,
"calls_max_month": 5000,
"calls_remaining": 4153,
"mese": "2026-06"
}
Codici di errore
Tutti gli errori restituiscono un oggetto JSON con error (messaggio leggibile) e code (stringa per il codice).
| HTTP | code | Quando si verifica |
|---|---|---|
| 401 | missing_api_key | Header X-API-Key assente, o chiave più corta di 16 caratteri. |
| 401 | invalid_api_key | Prefisso chiave trovato ma l'hash SHA-256 non corrisponde — chiave errata o rigenerata. |
| 403 | api_key_disabled | La chiave è stata disabilitata manualmente da un amministratore. |
| 403 | api_key_expired | La chiave ha superato la data di scadenza data_scadenza. |
| 403 | upgrade_required | L'account LexAI sottostante ha raggiunto il limite del piano. Contatta il supporto. |
| 404 | not_found | Il nome endpoint in X-Endpoint non corrisponde ad alcuna route. Controlla l'ortografia. |
| 405 | method_not_allowed | Usato GET su un endpoint solo-POST (eccetto ?endpoint=usage). |
| 429 | quota_exceeded | Quota mensile di chiamate esaurita. Si azzera il 1° del mese successivo. |
| 500 | internal_error | Errore server imprevisto. Riprovare con backoff esponenziale. |
| 502 | internal_invoke_error | La funzione AI ha restituito un errore. Il campo detail contiene il messaggio specifico. |
| 503 | missing_service_key | Configurazione gateway non corretta — contattare [email protected]. |
Formato della risposta di errore
{
"error": "Quota mensile esaurita",
"code": "quota_exceeded",
"calls_used": 1000,
"calls_max": 1000
}
Strategia di retry
Riprovare su 500 e 502 con backoff esponenziale (1s, 2s, 4s). Non riprovare su 401, 403, 404 o 429 — richiedono un'azione da parte tua.
Limiti e SLA
Le quote si azzerano il 1° di ogni mese solare (UTC). Il campo calls_remaining nell'endpoint di utilizzo riflette sempre il saldo aggiornato. Non esistono limiti per secondo oltre al cap di 60 req/min in burst.
Timeout: Imposta il timeout del tuo client HTTP ad almeno 60 secondi. L'analisi predittiva e la revisione contratti comportano elaborazione AI multi-step e possono richiedere da 15 a 40 secondi per casi complessi.
Piani API
Tutti i piani includono accesso a tutti e cinque gli endpoint, recupero giurisprudenziale verificato e supporto via email. I piani Enterprise includono garanzie SLA e onboarding dedicato.
- Tutti e 5 gli endpoint
- Giurisprudenza verificata
- Supporto email (48h)
- Dashboard utilizzo
- Tutti e 5 gli endpoint
- Giurisprudenza verificata
- Supporto email prioritario (24h)
- Dashboard + export log CSV
- Webhook su soglia quota
- Tutti e 5 gli endpoint
- SLA dedicato (99,9%)
- Supporto dedicato (4h)
- Limiti di frequenza personalizzati
- Opzione on-premise
- Branding whitelabel
Prova gratuita: Ogni nuovo account API include 100 chiamate su tutti gli endpoint, valide 30 giorni. Nessuna carta di credito richiesta. Scrivi a [email protected] per iniziare.