Documentation API
Intégrez l'anonymisation de texte respectueuse de la vie privée d'ANOXY dans vos applications avec notre API REST simple.
Démarrage rapide
Obtenir votre clé API
Inscrivez-vous au tableau de bord et créez une clé API.
Première requête
Utilisez l'endpoint /v1/anonymize pour protéger les données sensibles.
Restaurer le texte original
Utilisez le même ID de session avec /v1/deanonymize pour récupérer le texte original.
Authentification
Toutes les requêtes API nécessitent une authentification. ANOXY supporte deux méthodes :
Clé API
Incluez votre clé API dans l'en-tête X-API-Key. Créez des clés dans votre tableau de bord.
X-API-Key: YOUR_API_KEYJeton JWT Bearer
Pour les intégrations SSO et OAuth, passez un jeton JWT dans l'en-tête Authorization. Les jetons sont émis par le fournisseur d'identité ANOXY.
Authorization: Bearer eyJhbGciOiJSUzI1NiIs.../v1/anonymizeAnonymisez le texte en détectant et remplaçant les informations personnelles (PII) par des jetons cohérents.
Corps de la requête
textstringrequisLe texte à anonymiser.
languagestringoptionnelCode langue (ex. "en", "fr"). Par défaut : "en".
session_idstringoptionnelID de session personnalisé. Si non fourni, un sera généré.
Exemple de requête
curl -X POST https://app.anoxy.ai/v1/anonymize \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "John Smith lives at 123 Main St, New York. His email is john@example.com.",
"language": "en",
"session_id": "optional-session-id"
}'Exemple de réponse
{
"session_id": "abc-123-def-456",
"anonymized_text": "<PERSON_1> lives at <LOCATION_1>. His email is <EMAIL_1>.",
"entities_found": [
{
"entity_type": "PERSON",
"start": 0,
"end": 10,
"text": "John Smith",
"anonymized_token": "<PERSON_1>"
},
{
"entity_type": "LOCATION",
"start": 20,
"end": 42,
"text": "123 Main St, New York",
"anonymized_token": "<LOCATION_1>"
},
{
"entity_type": "EMAIL_ADDRESS",
"start": 57,
"end": 76,
"text": "john@example.com",
"anonymized_token": "<EMAIL_1>"
}
],
"quota_used": 1250,
"quota_remaining": 8750,
"processing_time_ms": 45.2
}/v1/deanonymizeRestaurez le texte original en utilisant la correspondance de session. Nécessite un ID de session valide d'une anonymisation précédente.
Corps de la requête
textstringrequisLe texte anonymisé à restaurer.
session_idstringrequisL'ID de session de la requête d'anonymisation.
Exemple de requête
curl -X POST https://app.anoxy.ai/v1/deanonymize \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "<PERSON_1> lives at <LOCATION_1>. His email is <EMAIL_1>.",
"session_id": "your-session-id"
}'Exemple de réponse
{
"original_text": "John Smith lives at 123 Main St, New York. His email is john@example.com.",
"session_id": "abc-123-def-456",
"processing_time_ms": 12.4
}/v1/text/detectDétecter les entités PII dans le texte sans anonymiser. Retourne les positions, types et scores de confiance des entités tout en préservant le texte original.
Corps de la requête
textstringrequisLe texte à analyser pour les entités PII.
languagestringoptionnelCode langue (ex. "en", "fr"). Par défaut : "en".
entity_typesstring[] | stringoptionnelFiltrer des types d'entités spécifiques. Accepte un tableau JSON ou une chaîne séparée par des virgules (ex. "PERSON,EMAIL_ADDRESS").
Exemple de requête
curl -X POST https://app.anoxy.ai/v1/text/detect \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "John Smith lives at 123 Main St. Email: john@example.com",
"language": "en"
}'Exemple de réponse
{
"status": "success",
"data": {
"text": "John Smith lives at 123 Main St. Email: john@example.com",
"entities_found": [
{"entity_type": "PERSON", "start": 0, "end": 10, "text": "John Smith", "score": 0.95},
{"entity_type": "LOCATION", "start": 20, "end": 31, "text": "123 Main St", "score": 0.88},
{"entity_type": "EMAIL_ADDRESS", "start": 40, "end": 56, "text": "john@example.com", "score": 0.99}
],
"entity_summary": {"PERSON": 1, "LOCATION": 1, "EMAIL_ADDRESS": 1}
}
}/v1/documents/anonymizeTélécharger un fichier document pour anonymisation. Prend en charge PDF, DOCX, XLSX, CSV, PPTX, images (OCR) et plus de 10 autres formats. Retourne un ID de tâche pour télécharger le résultat.
Corps de la requête
Content-Type: multipart/form-data
filebinaryrequisLe fichier document à anonymiser (max 50 Mo).
modestringoptionnelMode d'anonymisation : "anonymize" (par défaut, irréversible) ou "pseudonymize" (réversible avec session).
languagestringoptionnelCode langue (ex. "en", "fr"). Par défaut : "en".
Exemple de requête
curl -X POST https://app.anoxy.ai/v1/documents/anonymize \
-H "X-API-Key: YOUR_API_KEY" \
-F "file=@contract.pdf" \
-F "mode=anonymize" \
-F "language=en"Formats pris en charge
Exemple de réponse
{
"status": "success",
"data": {
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"filename": "contract_anonymized.pdf",
"entities_count": 23,
"processing_time_ms": 1250.5,
"download_url": "/v1/history/550e8400.../download"
}
}Format de réponse
Toutes les réponses API suivent une structure d'enveloppe JSON cohérente. Les réponses de succès enveloppent les données dans un champ "data", les réponses d'erreur fournissent un objet d'erreur structuré.
Succès
{
"status": "success",
"data": { ... },
"meta": {
"version": "4.10.10",
"processing_time_ms": 45.2
}
}Erreur
{
"status": "error",
"error": {
"type": "validation_error",
"message": "Text is required."
}
}Catalogue des endpoints
Liste complète des endpoints API disponibles.
| Méthode | Endpoint | Description | Auth |
|---|---|---|---|
| POST | /v1/anonymize | Anonymize text, replacing PII with tokens | Required |
| POST | /v1/deanonymize | Restore original text using session mapping | Required |
| POST | /v1/text/detect | Detect PII entities without anonymizing | Required |
| POST | /v1/documents/anonymize | Upload and anonymize a document file | Required |
| POST | /v1/text/anonymize-batch | Anonymize up to 20 text items in one request | Required |
| GET | /v1/countries | List supported countries and entity types | None |
| GET | /v1/history | List anonymization history (paginated, sortable) | Required |
| GET | /v1/history/{job_id} | Get job detail with entity breakdown | Required |
| GET | /v1/history/{job_id}/download | Download anonymized result file | Required |
| POST | /v1/history/batch-delete | Batch delete jobs | Required |
| GET | /v1/quota | Check current quota usage and limits | Required |
| GET | /v1/api-keys | List your API keys | Required |
| POST | /v1/api-keys | Create a new API key | Required |
| DELETE | /v1/api-keys/{id} | Revoke an API key | Required |
| GET | /v1/billing/subscription | Get current subscription details | Required |
| GET | /health | Health check endpoint | None |
Codes d'erreur
400 Bad RequestParamètres de requête invalides ou JSON malformé.
401 UnauthorizedClé API manquante ou invalide.
402 Payment RequiredQuota dépassé. Mettez à niveau votre forfait ou attendez la réinitialisation.
404 Not FoundSession introuvable ou expirée (pour la désanonymisation).
429 Too Many RequestsLimite de débit dépassée. Consultez l'en-tête X-RateLimit-Reset pour savoir quand réessayer.
500 Internal Server ErrorErreur serveur. Veuillez réessayer ou contacter le support.
Limites de débit
Les limites de débit varient selon le forfait :
- Free: 10 requests/minute, 1,000 tokens/month
- Pro: 100 requests/minute, 100,000 tokens/month
- Team: 1,000 requests/minute, 1,000,000 tokens/month
- Enterprise: 1,000 requests/minute, unlimited tokens
En-têtes de limite de débit
Chaque réponse authentifiée inclut des en-têtes de limite de débit :
X-RateLimit-LimitNombre maximum de requêtes autorisées par minute pour votre forfait.
X-RateLimit-RemainingNombre de requêtes restantes dans la fenêtre actuelle.
X-RateLimit-ResetHorodatage Unix (secondes) de la réinitialisation de la fenêtre.
HTTP/1.1 200 OK
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1707523260Besoin d'aide ?
Notre équipe est là pour vous accompagner dans votre intégration.