Documentación de la API
Integre la anonimización de texto respetuosa con la privacidad de ANOXY en sus aplicaciones con nuestra sencilla API REST.
Inicio rápido
Obtenga su clave API
Regístrese en el panel y cree una clave API.
Realice su primera solicitud
Use el endpoint /v1/anonymize para comenzar a proteger datos sensibles.
Restaure el texto original
Use el mismo ID de sesión con /v1/deanonymize para recuperar el texto original.
Autenticación
Todas las solicitudes API requieren autenticación. ANOXY admite dos métodos de autenticación:
Clave API
Incluya su clave API en el encabezado X-API-Key. Cree claves en su panel.
X-API-Key: YOUR_API_KEYToken JWT Bearer
Para integraciones SSO y OAuth, pase un token JWT en el encabezado Authorization. Los tokens son emitidos por el proveedor de identidad de ANOXY.
Authorization: Bearer eyJhbGciOiJSUzI1NiIs.../v1/anonymizeAnonimice texto detectando y reemplazando información personal (PII) con tokens consistentes.
Cuerpo de la solicitud
textstringobligatorioEl texto a anonimizar.
languagestringopcionalCódigo de idioma (ej. "en", "pl"). Por defecto: "en".
session_idstringopcionalID de sesión personalizado. Si no se proporciona, se generará uno.
Solicitud de ejemplo
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"
}'Respuesta de ejemplo
{
"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/deanonymizeRestaure el texto original usando el mapeo de sesión. Requiere un ID de sesión válido de una anonimización previa.
Cuerpo de la solicitud
textstringobligatorioEl texto anonimizado a restaurar.
session_idstringobligatorioEl ID de sesión de la solicitud de anonimización.
Solicitud de ejemplo
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"
}'Respuesta de ejemplo
{
"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/detectDetectar entidades PII en el texto sin anonimizar. Devuelve ubicaciones, tipos y puntuaciones de confianza de las entidades preservando el texto original.
Cuerpo de la solicitud
textstringobligatorioEl texto a escanear en busca de entidades PII.
languagestringopcionalCódigo de idioma (ej. "en", "pl"). Por defecto: "en".
entity_typesstring[] | stringopcionalFiltrar tipos de entidades específicos. Acepta un array JSON o una cadena separada por comas (ej. "PERSON,EMAIL_ADDRESS").
Solicitud de ejemplo
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"
}'Respuesta de ejemplo
{
"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/anonymizeSubir un archivo de documento para anonimización. Soporta PDF, DOCX, XLSX, CSV, PPTX, imágenes (OCR) y más de 10 formatos adicionales. Devuelve un ID de trabajo para descargar el resultado.
Cuerpo de la solicitud
Content-Type: multipart/form-data
filebinaryobligatorioEl archivo de documento a anonimizar (máx. 50 MB).
modestringopcionalModo de anonimización: "anonymize" (predeterminado, irreversible) o "pseudonymize" (reversible con sesión).
languagestringopcionalCódigo de idioma (ej. "en", "pl"). Por defecto: "en".
Solicitud de ejemplo
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"Formatos soportados
Respuesta de ejemplo
{
"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"
}
}Formato de respuesta
Todas las respuestas de la API siguen una estructura de sobre JSON consistente. Las respuestas exitosas envuelven los datos en un campo "data", las respuestas de error proporcionan un objeto de error estructurado.
Éxito
{
"status": "success",
"data": { ... },
"meta": {
"version": "4.10.10",
"processing_time_ms": 45.2
}
}Error
{
"status": "error",
"error": {
"type": "validation_error",
"message": "Text is required."
}
}Catálogo de endpoints
Lista completa de endpoints API disponibles.
| Método | Endpoint | Descripción | 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 |
Códigos de error
400 Bad RequestParámetros de solicitud inválidos o JSON mal formado.
401 UnauthorizedClave API faltante o inválida.
402 Payment RequiredCuota excedida. Actualice su plan o espere el reinicio de cuota.
404 Not FoundSesión no encontrada o expirada (para desanonimización).
429 Too Many RequestsLímite de velocidad excedido. Consulte el encabezado X-RateLimit-Reset para saber cuándo reintentar.
500 Internal Server ErrorError del servidor. Inténtelo de nuevo o contacte soporte.
Límites de velocidad
Los límites de velocidad varían según el plan:
- 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
Encabezados de límite de velocidad
Cada respuesta autenticada incluye encabezados de límite de velocidad:
X-RateLimit-LimitNúmero máximo de solicitudes permitidas por minuto para su plan.
X-RateLimit-RemainingNúmero de solicitudes restantes en la ventana actual.
X-RateLimit-ResetMarca de tiempo Unix (segundos) cuando se reinicia la ventana de límite.
HTTP/1.1 200 OK
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1707523260