common.skipToContent

Référence API

Intégrez l'anonymisation dans vos applications

API REST complète pour la détection et l'anonymisation programmatique des PII.


URL de base

https://anonymize.today/api

Tous les points de terminaison de l'API sont relatifs à cette URL de base. Par exemple, le point de terminaison d'analyse est https://anonymize.today/api/presidio/analyze.


Authentification

Authentifiez les requêtes API en utilisant des jetons Bearer :

Authorization: Bearer YOUR_API_TOKEN

Obtention d'un jeton API

  1. Connectez-vous à votre compte anonymize.today
  2. Allez dans Paramètres → Compte → Jetons API
  3. Cliquez sur Générer un nouveau jeton
  4. Copiez et conservez votre jeton en toute sécurité (il ne sera plus affiché)

Note de sécurité

Ne jamais exposer votre jeton API dans le code côté client ou dans des dépôts publics. Utilisez des variables d'environnement et des requêtes côté serveur.

Jeton dans les requêtes

TypeScript

const response = await fetch('https://anonymize.today/api/presidio/analyze', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.ANONYMIZE_API_TOKEN}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ text, entities }),
});

Python

import os
import requests

headers = {
    "Authorization": f"Bearer {os.environ['ANONYMIZE_API_TOKEN']}",
    "Content-Type": "application/json"
}

response = requests.post(
    "https://anonymize.today/api/presidio/analyze",
    headers=headers,
    json={"text": text, "entities": entities}
)

cURL

curl -X POST https://anonymize.today/api/presidio/analyze \
  -H "Authorization: Bearer $ANONYMIZE_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"text": "John Doe works at Acme Corp", "entities": ["PERSON", "ORGANIZATION"]}'

Limites de taux

Type de point de terminaisonLimite de tauxAutorisation de rafale : 10 requêtes
Authentication3 requests/second5 requests
Analysis & Anonymization30 requests/second50 requests
Presets & Settings10 requests/second20 requests

Lorsqu'il y a une limite de taux, l'API renvoie 429 Trop de requêtes avec un en-tête Retry-After indiquant quand vous pouvez réessayer.


Points de terminaison principaux

Analyser le texte

Détecter les entités PII dans le texte. Renvoie les positions et types d'entités détectées.

Anonymiser le texte

Anonymiser les entités PII détectées à l'aide de divers opérateurs.

Dé-anonymiser le texte

Restaurer les entités chiffrées à leurs valeurs d'origine à l'aide de la même clé de chiffrement.


Opérateurs d'anonymisation

OpérateurDescriptionRécupérableExemple
replaceRemplacer par un espace réservéNoJohn → [PERSON]
maskMasquer partiellement les caractèresNojohn@email.com → j***@email.com
redactSupprimer complètementNoJohn → (empty)
hashHachage SHA-256 à sens uniqueNoJohn → a3f2b1c4...
encryptChiffrement AES-256-GCMYesJohn → [ENC:...]

Configurations des opérateurs

// Replace operator
{ "type": "replace", "new_value": "[PERSON]" }

// Mask operator
{
  "type": "mask",
  "masking_char": "*",
  "chars_to_mask": 5,
  "from_end": false
}

// Hash operator
{ "type": "hash", "hash_type": "sha256" }

// Encrypt operator (requires encryption key in user settings)
{ "type": "encrypt" }

// Redact operator
{ "type": "redact" }

API des préréglages


Types d'entités

anonymize.today prend en charge 256 types d'entités dans 10 catégories :

Personal

PERSON, EMAIL_ADDRESS, PHONE_NUMBER

Financial

CREDIT_CARD, IBAN_CODE, SWIFT_CODE, CRYPTO

Location

LOCATION, ADDRESS, COORDINATES

Government

SSN, PASSPORT, DRIVER_LICENSE, NATIONAL_ID

Contact

URL, DOMAIN_NAME

Technical

IP_ADDRESS, MAC_ADDRESS

Temporal

DATE_TIME, AGE

Organizational

ORGANIZATION, JOB_TITLE

Medical

MEDICAL_LICENSE, HEALTH_ID

Custom

User-defined patterns

Voir la liste complète des types d'entités dans la documentation des préréglages. Presets documentation.


Langues prises en charge

L'API prend en charge 27 langues pour la reconnaissance des PII :

CodeLangueMoteur
enEnglishspaCy
deGermanspaCy
esSpanishspaCy
frFrenchspaCy
itItalianspaCy
ptPortuguesespaCy
nlDutchspaCy
plPolishspaCy
ruRussianspaCy
jaJapanesespaCy
zhChinesespaCy
koKoreanspaCy
arArabicTransformer
hiHindiTransformer
trTurkishTransformer

Langues supplémentaires : roumain, grec, croate, slovène, macédonien, suédois, danois, norvégien, finnois, ukrainien, lituanien, catalan


Gestion des erreurs

Codes d'état HTTP standard :

StatutSignificationDescription
200OKRequest succeeded
201CreatedResource created successfully
400Bad Request400 - Mauvaise requête (paramètres invalides)
401Unauthorized401 - Non autorisé (jeton invalide ou manquant)
402Payment RequiredInsufficient tokens
403ForbiddenAccess denied to resource
404Not FoundResource not found
429Too Many Requests429 - Limite de taux atteinte (trop de requêtes)
500Internal Error500 - Erreur serveur (contactez le support)

Format de réponse d'erreur

{
  "error": {
    "code": "INSUFFICIENT_TOKENS",
    "message": "You need 5 tokens but only have 2 remaining",
    "details": {
      "required": 5,
      "available": 2
    }
  }
}

Exemples complets

TypeScript/Node.js

import fetch from 'node-fetch';

const API_BASE = 'https://anonymize.today/api';
const API_TOKEN = process.env.ANONYMIZE_API_TOKEN;

async function analyzeAndAnonymize(text: string) {
  // Step 1: Analyze
  const analyzeResponse = await fetch(`${API_BASE}/presidio/analyze`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${API_TOKEN}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      text,
      entities: ['PERSON', 'EMAIL_ADDRESS', 'PHONE_NUMBER'],
      language: 'en',
    }),
  });

  const { results } = await analyzeResponse.json();

  if (results.length === 0) {
    return { text, anonymized: false };
  }

  // Step 2: Anonymize
  const anonymizeResponse = await fetch(`${API_BASE}/presidio/anonymize`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${API_TOKEN}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      text,
      analyzer_results: results,
      anonymizers: {
        DEFAULT: { type: 'replace', new_value: '[REDACTED]' },
      },
    }),
  });

  return anonymizeResponse.json();
}

// Usage
const result = await analyzeAndAnonymize('Contact John Doe at john@example.com');
console.log(result.text); // "Contact [REDACTED] at [REDACTED]"

Python

import os
import requests

API_BASE = "https://anonymize.today/api"
API_TOKEN = os.environ["ANONYMIZE_API_TOKEN"]

def analyze_and_anonymize(text: str) -> dict:
    headers = {
        "Authorization": f"Bearer {API_TOKEN}",
        "Content-Type": "application/json"
    }

    # Step 1: Analyze
    analyze_response = requests.post(
        f"{API_BASE}/presidio/analyze",
        headers=headers,
        json={
            "text": text,
            "entities": ["PERSON", "EMAIL_ADDRESS", "PHONE_NUMBER"],
            "language": "en"
        }
    )
    results = analyze_response.json()["results"]

    if not results:
        return {"text": text, "anonymized": False}

    # Step 2: Anonymize
    anonymize_response = requests.post(
        f"{API_BASE}/presidio/anonymize",
        headers=headers,
        json={
            "text": text,
            "analyzer_results": results,
            "anonymizers": {
                "DEFAULT": {"type": "replace", "new_value": "[REDACTED]"}
            }
        }
    )

    return anonymize_response.json()

# Usage
result = analyze_and_anonymize("Contact John Doe at john@example.com")
print(result["text"])  # "Contact [REDACTED] at [REDACTED]"

Related Documentation

Dernière mise à jour : Mars 2026