🔥 API REST · OpenAPI 3.0 · multilingue FR/EN/DE/ES/IT

Anonymisez vos documents en une requête HTTP

API REST simple, traitée en UE (sans IA tierce), conforme RGPD. Détectez et masquez automatiquement les données personnelles dans n'importe quel document — PDF, Word, scan, ou texte brut.

📖 Documentation interactive (Swagger) 🔑 Obtenir une clé API

Pourquoi SafeDoc API ?

Conçue pour les apps qui touchent à des documents sensibles avant traitement par un LLM.

Traité en UE · sans IA tierce

Détection, OCR et LLM tournent sur nos serveurs en Europe. Aucun envoi vers OpenAI, Google ou Anthropic.

Multi-format

PDF (natif ou scanné via OCR), Word (.docx, .doc), texte brut, Markdown. Taille max 20 Mo.

Réversible

Recevez un mapping JSON. Restaurez les vrais noms dans la réponse de l'IA en un POST.

Multilingue

Détection auto FR/EN/DE/ES/IT. Patterns spécifiques : NSS, SSN, Steuer-ID, DNI, Codice Fiscale…

Rapide

~15s pour un PDF de 33 pages scannées. Endpoint synchrone ou async selon la taille.

RGPD by design

Aucune persistance des données originales. Logs minimaux. Audit log dispo en Enterprise.

Quick start en 3 minutes

Connectez-vous, copiez votre clé, lancez votre première requête.

1. Obtenez votre clé API

Créez un compte gratuit sur safe-doc.ai, puis allez dans l'onglet 🔑 API pour générer votre clé personnelle (`sd_xxxxx`).

2. Anonymisez votre premier texte

Exemple d'appel à l'endpoint POST /api_v2/anonymize-text :

curl -X POST https://safe-doc.ai/api_v2/anonymize-text \
  -H "Authorization: Bearer sd_VOTRE_CLE" \
  -F "text=Jean Dupont habite 12 rue de la Paix, 75002 Paris. Email: jean@example.fr" \
  -F "level=N1"
import requests

response = requests.post(
    "https://safe-doc.ai/api_v2/anonymize-text",
    headers={"Authorization": "Bearer sd_VOTRE_CLE"},
    data={
        "text": "Jean Dupont habite 12 rue de la Paix, 75002 Paris.",
        "level": "N1",
    },
)
data = response.json()
print(data["anonymized_text"])
# → "[PERSONNE_1] habite [ADRESSE_1]."
const formData = new FormData();
formData.append('text', 'Jean Dupont habite 12 rue de la Paix, 75002 Paris.');
formData.append('level', 'N1');

const res = await fetch('https://safe-doc.ai/api_v2/anonymize-text', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer sd_VOTRE_CLE' },
  body: formData,
});
const data = await res.json();
console.log(data.anonymized_text);
// → "[PERSONNE_1] habite [ADRESSE_1]."
{
  "session_id": "a3f8c1d2e9b40516...",
  "anonymized_text": "[PERSONNE_1] habite [ADRESSE_1].",
  "mapping": {
    "Jean Dupont": "[PERSONNE_1]",
    "12 rue de la Paix, 75002 Paris": "[ADRESSE_1]"
  },
  "reverse_mapping": {
    "[PERSONNE_1]": "Jean Dupont",
    "[ADRESSE_1]": "12 rue de la Paix, 75002 Paris"
  },
  "stats": {
    "total_entities": 2,
    "by_label": { "PERSONNE": 1, "ADRESSE": 1 }
  },
  "detected_lang": "fr"
}

3. Restaurez les vraies valeurs après l'IA

Une fois ChatGPT, Claude ou Mistral a répondu, faites un GET /api_v2/session/{session_id}/mapping pour récupérer le mapping et remplacer les tokens.

Endpoints principaux

La doc complète est dans Swagger ou ReDoc.

POST /api_v2/anonymize-text
Anonymise un texte brut. Idéal pour intégrer dans une UI ou un workflow LLM.
POST /api_v2/upload
Upload d'un fichier (PDF, DOCX, TXT) — OCR auto pour les scans. Async pour gros docs.
GET /api_v2/session/{id}/mapping
Récupère le mapping JSON pour restaurer les vraies valeurs après traitement IA.
POST /api_v2/re-anonymize
Ré-anonymise avec des exclusions ou un niveau différent. Garde le même mapping si possible.
GET /api_v2/session/{id}/report
Rapport d'audit RGPD de la session (entités, score de fuite, profil de risque).
GET /api_v2/session/{id}/pdf
Télécharge le PDF anonymisé final, prêt à partager.

Intégrations prêtes à l'emploi

Au-delà de l'API : SafeDoc se branche directement dans vos outils.

🤖

Claude & agents IA — serveur MCP

Serveur MCP officiel, zéro dépendance (Python 3.8+). Claude Desktop / Claude Code anonymisent vos textes avant de raisonner dessus, et la ré-identification se fait localement (l'outil restore_text ne fait aucun appel réseau).

⬇ Télécharger safedoc_mcp.py

claude mcp add safedoc \ -e SAFEDOC_API_KEY=sd_votre_cle \ -- python3 safedoc_mcp.py

🧩

Extension Chrome (bêta)

Sélectionnez un texte sur n'importe quelle page → clic droit → « Anonymiser avec SafeDoc » → résultat copié, prêt à coller dans ChatGPT, Claude ou Gemini. Popup inclus pour le collage manuel.

⬇ Télécharger l'extension
chrome://extensions → mode développeur → « Charger l'extension non empaquetée ». Publication Web Store en cours.

Sécurité & conformité

Tout ce qu'il faut savoir avant d'intégrer dans un produit B2B sérieux.

🇪🇺

Hébergement Europe

Serveurs Hetzner (Allemagne / Finlande). Aucune donnée transitant en dehors de l'UE.

🛡️

Aucune persistance

Documents originaux supprimés dès traitement. Logs minimaux (timestamp + comptage).

📜

Audit log (Enterprise)

Trace immutable de qui a anonymisé quoi, quand, depuis quelle IP. Disponible sur demande.

🔑

API key rotative

Révoquez et régénérez votre clé à tout moment depuis votre profil.

Prêt à intégrer SafeDoc dans votre app ?

Plan gratuit 5 docs/mois, sans carte. Upgrade quand vous êtes prêt.