PromptShieldpromptShieldpromptShield
Guardalo in azioneFunzionalitàCome funzionaWorkflow IATranquillitàGestione delle licenzeMonitoraggio della conformità
PrezziScaricare
Sviluppatori
PanoramicaDocumentazione APIChiavi API
FAQ
AccediInizia gratis
Developers
Riferimento API

Documentazione API

Riferimento completo dell'API REST per il motore self-hosted di promptShield. Tutti gli endpoint sono disponibili all'URL del tuo deployment.

URL di base

http://localhost:8000

Sostituiscilo con l'host e la porta del tuo deployment.

Documentazione API interattiva

Quando il server è in esecuzione, visita /docs per un'interfaccia Swagger interattiva generata automaticamente, dove puoi testare direttamente ogni endpoint.

PROMPTSHIELD_DEBUG_API_DOCS=1 promptshield serve

In API-key mode, /docs, /openapi.json, and /redoc require Authorization: Bearer <api-key>.

Autenticazione

Quando PROMPTSHIELD_API_KEY è impostata (tramite promptshield serve --api-key o la variabile d'ambiente di Docker), ogni richiesta deve fornirla come Authorization: Bearer <api-key>; le chiavi mancanti o errate ricevono 401, e una chiave con accesso limitato solo ad alcune operazioni riceve 403 sulle altre. L'endpoint /health è sempre esente. Se non è impostata alcuna chiave API, il server funziona senza autenticazione e accetta tutte le richieste — adatto solo su una rete locale attendibile.

Avvio rapido

Avvia l'API locale in meno di 5 minuti.

1

Installa il pacchetto

bash
pip install promptshield-app
2

Installa un modello linguistico

bash
export PROMPTSHIELD_ASSETS_DIR="$HOME/.local/share/promptshield/assets"
promptshield models install spacy-en-md
3

Imposta la tua chiave API

bash
export PROMPTSHIELD_API_KEY="ps_live_your_key_here"

La tua chiave API è disponibile nella dashboard delle chiavi API.

4

Avvia il server

bash
promptshield serve --port 8000
5

Elabora il tuo primo documento

bash
AUTH="Authorization: Bearer ps_live_your_key_here"

curl -X POST http://localhost:8000/api/documents/upload \
  -H "$AUTH" \
  -F "file=@contract.pdf"
# → {"doc_id": "abc123", "filename": "contract.pdf", "page_count": 5, "status": "REVIEWING"}

curl -X POST http://localhost:8000/api/documents/abc123/detect \
  -H "$AUTH" \
  -H "Content-Type: application/json" \
  -d '{"confidence_threshold": 0.7}'
# → {"doc_id": "abc123", "total_regions": 42, "regions": [...]}

curl -X POST http://localhost:8000/api/documents/abc123/anonymize \
  -H "$AUTH"
# → {"doc_id": "abc123", "tokens_created": 42, "regions_removed": 0, "output_path": "..."}

curl -o contract-safe.pdf \
  -H "$AUTH" \
  http://localhost:8000/api/documents/abc123/download/pdf

Oppure avvialo con Docker (nessuna installazione)

bash
docker run -e PROMPTSHIELD_API_KEY="ps_live_your_key_here" \
  -p 8000:8000 -v promptshield-data:/data \
  promptshield/promptshield-api:latest

Guida passo passo

Una guida completa per configurare l'API locale e integrarla nel tuo flusso di lavoro.

1. Prerequisiti

Prima di iniziare, assicurati di avere installato quanto segue:

Python 3.11 o più recente
pip (incluso con Python)
Una chiave API promptShield (piano Basic o Pro)

Facoltativo, per il supporto completo dei formati:

Tesseract OCR, per i PDF scansionati o basati su immagini
LibreOffice, per la conversione di .docx, .xlsx, .pptx

2. Installa l'SDK

Installa il pacchetto Python di promptShield. L'installazione di base gestisce i file PDF. Aggiungi l'extra office per Word/Excel/PowerPoint.

Installazione di base (solo PDF)
bash
pip install promptshield-app
Con il supporto dei formati Office
bash
pip install "promptshield-app[office]"

Installa i modelli linguistici (pacchetti di entità) tramite la CLI:

bash
# Set the install directory (add to your shell profile)
export PROMPTSHIELD_ASSETS_DIR="$HOME/.local/share/promptshield/assets"
# Windows: $env:PROMPTSHIELD_ASSETS_DIR = "$env:APPDATA\promptshield\assets"

# English pack — required (medium is recommended)
promptshield models install spacy-en-md

# For maximum accuracy (larger download)
promptshield models install spacy-en-lg

Installa pacchetti linguistici aggiuntivi nello stesso modo:

bash
promptshield models install spacy-fr-md   # French
promptshield models install spacy-de-md   # German
promptshield models install spacy-es-md   # Spanish
promptshield models install spacy-it-md   # Italian
promptshield models install spacy-nl-md   # Dutch
promptshield models install spacy-pt-md   # Portuguese

3. Autenticazione

L'API locale usa la tua chiave API promptShield per la convalida della licenza. Impostala come variabile d'ambiente o passala all'avvio del server.

macOS / Linux
bash
export PROMPTSHIELD_API_KEY="ps_live_your_key_here"
Windows (PowerShell)
bash
$env:PROMPTSHIELD_API_KEY = "ps_live_your_key_here"

La chiave API viene convalidata online all'avvio e poi memorizzata in cache in locale per un massimo di 35 giorni, così il server può funzionare completamente offline dopo il primo avvio.

4. Avvia il server API

Avvia il server locale con un solo comando:

bash
promptshield serve
# Starting promptShield API server on 127.0.0.1:8000
# Health endpoint: http://127.0.0.1:8000/health
# Docs: enable with PROMPTSHIELD_DEBUG_API_DOCS=1 in non-API-key mode

Opzioni disponibili:

--hostIndirizzo di binding (predefinito: 127.0.0.1)
--portPorta di binding (predefinita: 8000)
--api-keyChiave API (alternativa alla variabile d'ambiente)

Una volta avviato, l'API è disponibile all'URL visualizzato. La documentazione Swagger interattiva si trova su /docs.

5. Deployment con Docker (alternativa)

Per i deployment in produzione, Docker offre un'esperienza senza installazione con tutte le dipendenze incluse.

Container singolo
bash
docker run -d --name promptshield \
  -e PROMPTSHIELD_API_KEY="ps_live_your_key_here" \
  -p 8000:8000 \
  -v promptshield-data:/data \
  promptshield/promptshield-api:latest
Con Docker Compose
bash
# docker-compose.yml
services:
  promptshield:
    image: promptshield/promptshield-api:latest
    ports:
      - "8000:8000"
    volumes:
      - promptshield-data:/data
    environment:
      - PROMPTSHIELD_API_KEY=${PROMPTSHIELD_API_KEY}
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
      interval: 30s

volumes:
  promptshield-data:

Crea un file .env con la tua chiave API:

.env
bash
PROMPTSHIELD_API_KEY=ps_live_your_key_here

L'immagine Docker include:

Tesseract OCR con 7 pacchetti linguistici (EN, FR, DE, ES, IT, NL, PT)
LibreOffice per la conversione dei formati Office
Modelli NLP di spaCy preinstallati
Utente non root, controlli di stato, volume di dati persistente

6. Flusso di lavoro dell'API

Il flusso di lavoro standard di elaborazione dei documenti ha 5 passaggi:

1Carica. Invia il tuo documento al server
2Rileva. Esegui la pipeline di rilevamento dei dati sensibili (pattern + entità + LLM facoltativo)
3Rivedi. Ispeziona le aree rilevate, modificale o confermale
4Anonimizza. Sostituisci i dati sensibili con codici
5Scarica. Recupera il documento anonimizzato

Esempio completo del flusso di lavoro (cURL)

cURL
bash
# 1. Upload
AUTH="Authorization: Bearer ps_live_your_key_here"

DOC_ID=$(curl -s -X POST http://localhost:8000/api/documents/upload \
  -H "$AUTH" \
  -F "file=@contract.pdf" | python -c "import sys,json; print(json.load(sys.stdin)['doc_id'])")

echo "Document ID: $DOC_ID"

# 2. Detect PII (with optional inline overrides)
curl -X POST http://localhost:8000/api/documents/$DOC_ID/detect \
  -H "$AUTH" \
  -H "Content-Type: application/json" \
  -d '{"confidence_threshold": 0.7, "regex_enabled": true, "ner_enabled": true}'
# → {"doc_id": "...", "total_regions": 42, "regions": [...]}

# 3. Review detected regions
curl -H "$AUTH" http://localhost:8000/api/documents/$DOC_ID/regions | python -m json.tool
# → [{"id": "...", "pii_type": "PERSON", "text": "John Smith", "confidence": 0.98,
#     "action": "TOKENIZE", ...}, ...]

# 3b. Bulk-update region actions before anonymizing (region_ids from step 3)
curl -X PUT http://localhost:8000/api/documents/$DOC_ID/regions/batch-action \
  -H "$AUTH" \
  -H "Content-Type: application/json" \
  -d '{"region_ids": ["<id1>", "<id2>"], "action": "REMOVE"}'

# 4. Anonymize
curl -X POST http://localhost:8000/api/documents/$DOC_ID/anonymize \
  -H "$AUTH"
# → {"doc_id": "...", "tokens_created": 42, "regions_removed": 0}

# 5. Download the anonymized document
curl -o contract-safe.pdf \
  -H "$AUTH" \
  http://localhost:8000/api/documents/$DOC_ID/download/pdf

echo "Done! Anonymized file saved to contract-safe.pdf"

7. Comandi della CLI

Elabora i documenti direttamente dalla riga di comando senza avviare un server:

Rileva i dati sensibili e salva un report JSON
bash
promptshield detect invoice.pdf
# Detected 23 PII entities across 5 pages

promptshield detect invoice.pdf -o report.json
# Report saved to report.json

# Tune the pipeline per run — every desktop-app setting is also a CLI flag.
promptshield detect contract.pdf \
  --language en --countries US \
  --ner-backend Davlan/bert-base-multilingual-cased-ner-hrl \
  --no-llm --fuzziness 0.5 \
  --ner-types PERSON,ORG \
  -e SA-2026-0847 -e "84-329-1057" \
  --export-review -o contract.psreview

# Or load all of the above from demo/setup.json by locale:
promptshield detect contract.pdf --preset en --export-review -o contract.psreview
Anonimizza un documento in un solo passaggio
bash
promptshield anonymize contract.pdf -o contract-safe.pdf
# Anonymized: 42 tokens created, saved to contract-safe.pdf

# Permanently redact PII (black boxes, irreversible)
promptshield anonymize contract.pdf --redact -o contract-redacted.pdf
Ripristina i codici in un documento anonimizzato in precedenza
bash
promptshield detokenize contract-safe.pdf -o contract-restored.pdf
# Restored 42 tokens, saved to contract-restored.pdf

Tutti i comandi della CLI convalidano la tua chiave API ed elaborano i documenti in locale. Nessun dato lascia il tuo dispositivo.

Componenti aggiuntivi dei modelli

Usa il comando integrato models per sfogliare, installare e rimuovere i pacchetti linguistici di entità. Imposta PROMPTSHIELD_ASSETS_DIR così che sia la CLI sia il server in esecuzione li trovino.

Imposta la directory di installazione una volta sola (aggiungila al profilo della tua shell):
bash
export PROMPTSHIELD_ASSETS_DIR="$HOME/.local/share/promptshield/assets"
# Windows: $env:PROMPTSHIELD_ASSETS_DIR = "$env:APPDATA\promptshield\assets"
Sfoglia i pacchetti disponibili con il loro stato di installazione
bash
promptshield models list
# Language packs (NER)
#   [ ]  spacy-en-sm   English (small)    (12 MB)
#   [installed]  spacy-en-md   English (medium)   (33 MB)
#   [ ]  spacy-fr-md   French (medium)    (16 MB)  ...
Scarica e installa un pacchetto (nessun server richiesto)
bash
promptshield models install spacy-fr-md
# Installing spacy-fr-md (French (medium))...
#   Downloading... 16.0/16.0 MB (100%)
#   Verifying integrity...
#   Extracting...
#   Installed to ~/.local/share/promptshield/assets/spacy/fr_core_news_md
Elenca i pacchetti installati in PROMPTSHIELD_ASSETS_DIR
bash
promptshield models installed
# Installed models:
#   spacy-en-md   English (medium)
#   spacy-fr-md   French (medium)
Rimuovi un pacchetto
bash
promptshield models remove spacy-fr-md

I pacchetti installati vengono rilevati automaticamente da detect, anonymize e dal server API in esecuzione. Il comando install comunica direttamente con il server delle licenze — non è necessario alcun sidecar in esecuzione.

8. Espressioni personalizzate

I pattern e le entità integrati coprono la maggior parte dei dati sensibili, ma ogni organizzazione ha i propri identificatori — numeri di contratto, codici di progetto interni, codici fiscali, indicatori di riservatezza. Aggiungili come espressioni e vengono trattati come dati sensibili a tutti gli effetti, segnalati come tipo CUSTOM con riquadro di delimitazione completo + propagazione tra le pagine. Disponibile sulla CLI (-e / --expression), sull'API HTTP self-hosted (blacklist_terms) e tramite i preset di demo/setup.json.

CLI — flag ripetibile -e / --expression
bash
# Literal text — case-insensitive substring match
promptshield detect contract.pdf -e SA-2026-0847 -e "84-329-1057"

# Repeatable — pass as many -e flags as you need
promptshield detect contract.pdf \
  -e ACME-CONFIDENTIAL \
  -e "Internal Use Only" \
  -e CUST-12345

# Regex — prefix with "re:" for full regex semantics
promptshield detect contract.pdf \
  -e "re:CASE-\d{4}-[A-Z]{3}" \
  -e "re:Project [A-Z][a-z]+"
API HTTP — corpo di POST /api/documents/{id}/detect
bash
# Same feature on the self-hosted HTTP API.
curl -X POST http://localhost:8000/api/documents/$DOC_ID/detect \
  -H "$AUTH" \
  -H "Content-Type: application/json" \
  -d '{
    "expressions": ["SA-2026-0847", "84-329-1057"],
    "expressions_action": "tokenize",
    "expressions_fuzziness": 1.0
  }'
# expressions_action:   "none" | "tokenize" | "remove"
# expressions_fuzziness: 1.0 = exact match, 0.5 = fuzzy edit-distance match
#
# Back-compat: the legacy keys "blacklist_terms" / "blacklist_action" /
# "blacklist_fuzziness" still work and map to the same fields via
# Pydantic alias — existing integrations don't need changes.
File di preset — applicato a ogni chiamata --preset <locale>
bash
# demo/setup.json
{
  "en": {
    "language": "en",
    "countries": ["US"],
    "ner_backend": "Davlan/bert-base-multilingual-cased-ner-hrl",
    "expressions": ["SA-2026-0847", "84-329-1057"],
    "fuzziness": 0.5
  }
}

# Then any time:
promptshield detect contract.pdf --preset en --export-review -o contract.psreview

Sulla denominazione: expressions è ora il nome canonico su tutte e tre le superfici — CLI (-e / --expression), API HTTP (expressions / expressions_action / expressions_fuzziness) ed etichetta dell'interfaccia desktop. Le vecchie chiavi blacklist_terms / blacklist_action / blacklist_fuzziness sull'API HTTP funzionano ancora tramite un alias Pydantic per la retrocompatibilità, così le integrazioni esistenti continuano a funzionare.

Flusso di revisione: API → Desktop

Il rilevamento automatico su larga scala è solo metà della storia. Il rilevamento automatico non raggiunge mai una precisione del 100% — ci sono sempre falsi positivi da scartare ed entità mancate da aggiungere. promptShield chiude il cerchio con un bundle .psreview portatile: rileva in modo programmatico, importa nell'app desktop per un controllo qualità umano e visivo, poi anonimizza.

📂
Rilevamento in blocco
API o CLI
📦
Bundle .psreview
documento + annotazioni
🖥️
Revisione su desktop
scarta i falsi positivi · aggiungi i dati sensibili mancati
✅
PDF anonimizzati

Passaggio 1a — Rileva ed esporta (CLI, in un colpo solo)

bash
# Detect + bundle in one command
promptshield detect contract.pdf --export-review -o contract.psreview
# Ingesting contract.pdf...
#   Detecting PII on page 1/3...
#   Detecting PII on page 2/3...
#   Detecting PII on page 3/3...
# Detected 14 PII region(s) across 3 page(s) in 1240ms.
# Review bundle saved to contract.psreview (14 region(s))

Passaggio 1b — Rileva ed esporta (API HTTP)

bash
# 1. Upload document
curl -X POST http://localhost:8000/api/documents/upload \
  -H "Authorization: Bearer $PROMPTSHIELD_API_KEY" \
  -F "file=@contract.pdf"
# → {"doc_id": "abc123ef", "page_count": 3, ...}

# 2. Run detection
curl -X POST http://localhost:8000/api/documents/abc123ef/detect \
  -H "Authorization: Bearer $PROMPTSHIELD_API_KEY"

# 3. Download the review bundle
curl http://localhost:8000/api/documents/abc123ef/export-review \
  -H "Authorization: Bearer $PROMPTSHIELD_API_KEY" \
  -o contract.psreview

.psreview API

GET
/api/documents/{id}/export-review

Esporta il bundle di revisione

Scarica il documento e tutte le sue annotazioni delle aree come un bundle ZIP .psreview portatile.

POST
/api/documents/import-review

Importa il bundle di revisione

Carica un bundle .psreview. Estrae il documento (esegue l'OCR), inietta le annotazioni delle aree salvate e apre il documento in stato REVIEWING — pronto per il controllo qualità visivo senza rieseguire il rilevamento.

Passaggio 2 — Importa nell'app desktop

Apri l'app desktop di promptShield. Nella schermata di caricamento, clicca su Importa per la revisione e seleziona il file .psreview. Il documento si apre subito in modalità revisione — tutte le aree rilevate sono già precompilate, senza bisogno di alcun passaggio di rilevamento.

Passaggio 3 — Rivedi, modifica e anonimizza

Usa la barra laterale delle aree per scartare i falsi positivi (imposta l'azione su Annulla), disegna nuove aree per ciò che il modello ha mancato, poi clicca su Esporta. L'app desktop esegue l'anonimizzazione e salva il PDF oscurato nella tua cartella Download.

8. SDK Python (importazione diretta)

Per le integrazioni avanzate, importa i moduli principali direttamente nel tuo codice Python. Questo ti dà il pieno controllo su ogni fase di elaborazione.

Esempio Python completo
bash
from promptshield import PromptShield

ps = PromptShield()

def process(input_path: str, output_path: str):
    # Step 1 — Detect PII (runs the full local pipeline)
    result = ps.detect(input_path)
    print(f"Loaded: {result.file} ({result.pages} pages)")
    print(f"Total PII entities: {result.total_regions}")
    for page in result.regions:
        for entity in page["entities"]:
            print(f"  Page {page['page']}: [{entity['type']}] {entity['text']}")

    # Step 2 — Anonymize (reversible tokens by default; pass redact=True
    # for permanent removal). Output is always a PDF.
    out = ps.anonymize(input_path, output_path)
    print(f"Anonymized: {out.tokens_created} tokens, saved to {out.output_file}")

    # Step 3 — Restore the originals later from the local token vault
    restored = ps.detokenize(output_path, "contract-restored.pdf")
    print(f"Restored {restored.tokens_replaced} tokens")

process("contract.pdf", "contract-safe.pdf")

# Async variants are available too: ps.adetect / ps.aanonymize / ps.adetokenize

Esempio di elaborazione in blocco

Elabora più file in una directory:

batch_process.py
bash
from pathlib import Path
from promptshield import PromptShield

ps = PromptShield()

def batch_process(input_dir: str, output_dir: str):
    input_path = Path(input_dir)
    output_path = Path(output_dir)
    output_path.mkdir(parents=True, exist_ok=True)

    files = list(input_path.glob("*.pdf"))
    print(f"Processing {len(files)} files...")

    for i, file in enumerate(files, 1):
        print(f"[{i}/{len(files)}] {file.name}")
        out_file = output_path / f"anon_{file.stem}.pdf"
        result = ps.anonymize(str(file), str(out_file))
        print(f"  → {result.tokens_created} tokens, saved to {out_file.name}")

    print("Batch complete!")

batch_process("./documents", "./anonymized")

9. Sicurezza e privacy dei dati

promptShield è progettato per ambienti a fiducia zero:

Tutta l'elaborazione avviene in locale: nessun contenuto dei documenti viene mai inviato a server esterni
Il registro dei codici resta sul tuo dispositivo — lo stesso perimetro di fiducia dei tuoi documenti sorgente, mai caricato
L'autenticazione tramite chiave API impedisce gli accessi non autorizzati in modalità self-hosted
Docker gira come utente non root con privilegi minimi
La chiave API viene convalidata online una volta, poi memorizzata in cache in locale per l'uso offline (TTL di 35 giorni)

10. Risoluzione dei problemi

Problemi comuni e soluzioni:

Errore 'No spaCy model found' o 'no NER model loaded'

Imposta PROMPTSHIELD_ASSETS_DIR e installa un pacchetto: promptshield models install spacy-en-md. In alternativa, per un'installazione a livello di sistema: python -m spacy download en_core_web_sm

L'OCR non funziona sui PDF scansionati

Installa Tesseract OCR e assicurati che sia nel tuo PATH. Su Windows, il programma di installazione lo aggiunge automaticamente.

I file Office non si convertono

Installa LibreOffice. DOCX dispone di un fallback in puro Python, ma XLSX/PPTX richiedono LibreOffice.

'Invalid API key' all'avvio

Verifica che la tua chiave inizi con ps_live_ e che il tuo abbonamento sia attivo. Le chiavi possono essere gestite su /developers/api-keys.

Documenti

POST
/api/documents/upload

Carica un documento

Carica un documento per l'elaborazione. Supporta file PDF, DOCX, XLSX, PPTX e immagini.

GET
/api/documents

Elenca i documenti

Recupera tutti i documenti caricati con il loro stato di rilevamento e anonimizzazione.

GET
/api/documents/{id}

Ottieni un documento

Ottieni informazioni dettagliate su un documento specifico, compresi il numero di pagine e lo stato di rilevamento.

DELETE
/api/documents/{id}

Elimina un documento

Rimuovi un documento e tutti i dati associati dal server.

Rilevamento

POST
/api/documents/{id}/detect

Rileva i dati sensibili

Esegui la pipeline di rilevamento dei dati sensibili su un documento. Accetta un corpo JSON facoltativo per sovrascrivere le impostazioni di rilevamento (confidence_threshold, regex_enabled, ner_enabled, regex_types, ecc.) solo per questa esecuzione.

POST
/api/documents/{id}/redetect

Riesegui il rilevamento

Riesegui il rilevamento con il pieno controllo dei parametri. Accetta confidence_threshold, regex_types, ner_types, blacklist_terms e altro ancora.

GET
/api/documents/{id}/detection-progress

Avanzamento del rilevamento

Ottieni l'avanzamento di un processo di rilevamento in corso (percentuale, pagina corrente e stato).

GET
/api/documents/{id}/regions

Ottieni le aree

Recupera tutte le aree di dati sensibili rilevate per un documento, con tipo, testo, punteggio di affidabilità e riquadro di delimitazione.

PUT
/api/documents/{id}/regions/batch-action

Aggiornamento in blocco delle aree

Imposta l'azione (TOKENIZE, REMOVE o CANCEL) per più aree contemporaneamente, filtrate per tipo di entità.

Anonimizzazione ed esportazione

PUT
/api/documents/{id}/regions/sync

Sincronizza le aree

Sostituisci interamente l'elenco delle aree di un documento. Da usare dopo aver modificato le aree lato client per inviare le modifiche prima dell'anonimizzazione.

POST
/api/documents/{id}/anonymize

Anonimizza un documento

Anonimizza un documento sostituendo i dati sensibili rilevati con codici. Restituisce il documento elaborato.

GET
/api/documents/{id}/download/{type}

Scarica il documento anonimizzato

Scarica l'output anonimizzato. {type} vale 'pdf' o 'text'. L'output viene sempre reso come PDF (gli input non PDF vengono convertiti), quindi 'pdf' è il formato principale.

POST
/api/documents/batch-anonymize

Anonimizzazione in blocco

Anonimizza più documenti in un'unica richiesta. Fino a 50 documenti elaborati contemporaneamente.

Decodifica

POST
/api/detokenize

Decodifica del testo

Sostituisci i codici in una stringa di testo con i loro valori originali presi dal registro.

POST
/api/detokenize/file

Decodifica di un file

Carica un documento codificato e ricevi una versione con tutti i codici ripristinati ai valori originali.

Registro dei codici

GET
/api/vault/status

Stato del registro

Ottieni le statistiche del registro: totale dei codici, totale dei documenti, dimensione del registro.

GET
/api/vault/tokens

Elenca i codici

Recupera tutte le corrispondenze codice-originale conservate nel registro.

POST
/api/vault/export

Esporta il registro

Esporta l'intero registro come file JSON per il backup o la migrazione.

POST
/api/vault/import

Importa il registro

Importa un registro JSON esportato in precedenza per ripristinare le corrispondenze tra codici.

Stato

GET
/health

Controllo dello stato

Restituisce lo stato di salute del server. Da usare per il monitoraggio e per le sonde di stato del load balancer.

Impostazioni

GET
/api/settings

Ottieni le impostazioni

Recupera la configurazione attuale di rilevamento ed elaborazione (soglie, pipeline attivate, lingua, ecc.).

PATCH
/api/settings

Aggiorna le impostazioni

Aggiorna parzialmente le impostazioni globali di rilevamento. Le modifiche si applicano a tutte le esecuzioni di rilevamento successive.

GET
/api/settings/patterns

Elenca i pattern personalizzati

Ottieni tutti i pattern regex definiti dall'utente usati per il rilevamento personalizzato dei dati sensibili.

POST
/api/settings/patterns

Crea un pattern personalizzato

Aggiungi un nuovo pattern regex per il rilevamento dei dati sensibili. I pattern vengono valutati insieme alle regole integrate.

Esempio

cURL — Upload, Detect, Anonymize
bash
# 1. Upload a document
curl -X POST http://localhost:8000/api/documents/upload \
  -F "file=@contract.pdf"
# → {"doc_id": "abc123", "filename": "contract.pdf", "page_count": 5, "status": "REVIEWING"}

# 2. Run PII detection
curl -X POST http://localhost:8000/api/documents/abc123/detect
# → {"doc_id": "abc123", "total_regions": 42, "regions": [...]}

# 3. Get detected regions
curl http://localhost:8000/api/documents/abc123/regions
# → [{"id": "...", "pii_type": "PERSON", "text": "John Smith", "confidence": 0.98,
#     "page_number": 1, "bbox": {...}, "source": "NER", "action": "TOKENIZE"}, ...]

# 4. Anonymize the document
curl -X POST http://localhost:8000/api/documents/abc123/anonymize
# → {"doc_id": "abc123", "tokens_created": 42, "regions_removed": 0}

# 5. Download anonymized PDF
curl -o contract-safe.pdf \
  http://localhost:8000/api/documents/abc123/download/pdf

SDK Python

La classe PromptShield esegue l'intera pipeline in locale — rileva, anonimizza e decodifica in tre chiamate. Tutta l'elaborazione avviene sul tuo dispositivo; nessun dato lo lascia.

Python SDK
bash
from promptshield import PromptShield

ps = PromptShield()

# Rileva i dati sensibili
result = ps.detect("contract.pdf")
print(f"{result.total_regions} entities across {result.pages} pages")
for page in result.regions:
    for entity in page["entities"]:
        print(f"  [{entity['type']}] {entity['text']}")

# Anonimizza (tokenizzazione reversibile)
out = ps.anonymize("contract.pdf", "contract-safe.pdf")
print(f"Done: {out.tokens_created} tokens created")

# Ripristina i valori originali
restored = ps.detokenize("contract-safe.pdf", "contract-restored.pdf")
print(f"Restored {restored.tokens_replaced} tokens")

Gestione degli errori

Tutte le risposte di errore seguono un formato JSON standard con un campo detail che descrive l'errore.

400

Richiesta non valida. Parametri non validi o file corrotto / non supportato.

401

Non autorizzato. Chiave API mancante o non valida (Authorization: Bearer) in modalità chiave API.

403

Vietato. La chiave API non dispone dell'ambito richiesto (detect / anonymize / detokenize).

404

Non trovato. L'ID del documento non esiste.

422

Non elaborabile. Manca un campo obbligatorio oppure il file è protetto da password.

500

Errore del server. Controlla i log del server per i dettagli.

503

Un modello di rilevamento richiesto non è installato. Installalo con promptshield models install.

Error Response Format
bash
{
  "detail": "Document not found: abc123"
}

Limiti di frequenza

L'API self-hosted non ha limiti di frequenza per impostazione predefinita. Se necessario, puoi configurare la limitazione della frequenza tramite variabili d'ambiente.

promptShieldpromptShieldpromptShield

Anonimizzazione dei documenti basata sull'IA. Rileva e oscura i dati sensibili offline, con piena privacy.

Prodotto

  • Funzionalità
  • Prezzi
  • Scaricare
  • Sviluppatori
  • Come funziona
  • Workflow IA
  • Tranquillità
  • vs Microsoft Presidio
  • Alternative
  • Blog
  • Team

Account

  • Accedi
  • Registrati
  • Dashboard

Note legali

  • Informativa sulla privacy
  • Termini di servizio
  • Sicurezza
  • Trattamento dei dati (DPA)
  • Politica di rimborso
  • Contatti
  • Tassi di cambio
Canada flagProudly Canadian
promptShield Inc. · 222, Wayman, Gaspé (QC) G4X 1T1, Canada · IP geolocation by DB-IP
© 2026 promptShield inc. Tutti i diritti riservati.