مرجع API
دمج إخفاء الهوية في تطبيقاتك
واجهة برمجة تطبيقات REST كاملة لاكتشاف وإخفاء الهوية لـ PII برمجيًا.
عنوان URL الأساسي
https://anonymize.today/apiجميع نقاط نهاية API نسبية إلى عنوان URL الأساسي هذا. على سبيل المثال، نقطة نهاية التحليل هي https://anonymize.today/api/presidio/analyze.
المصادقة
قم بمصادقة طلبات API باستخدام رموز Bearer:
Authorization: Bearer YOUR_API_TOKENالحصول على رمز API
- قم بتسجيل الدخول إلى حسابك في anonymize.today
- اذهب إلى الإعدادات → الحساب → رموز API
- انقر على إنشاء رمز جديد
- انسخ واحفظ رمزك بأمان (لن يتم عرضه مرة أخرى)
ملاحظة أمنية
لا تعرض رمز API الخاص بك في كود جانب العميل أو المستودعات العامة. استخدم متغيرات البيئة وطلبات جانب الخادم.
الرمز في الطلبات
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"]}'حدود المعدل
| نوع نقطة النهاية | حد المعدل | سماح الانفجار: 10 طلبات |
|---|---|---|
| Authentication | 3 requests/second | 5 requests |
| Analysis & Anonymization | 30 requests/second | 50 requests |
| Presets & Settings | 10 requests/second | 20 requests |
عند الحد من المعدل، تعيد API 429 طلبات كثيرة جدًا مع رأس Retry-After يشير إلى متى يمكنك إعادة المحاولة.
نقاط النهاية الأساسية
تحليل النص
اكتشاف كيان PII في النص. يعيد المواقع وأنواع الكيانات المكتشفة.
إخفاء النص
إخفاء الكيانات PII المكتشفة باستخدام مشغلين مختلفين.
إعادة الكشف عن النص
استعادة الكيانات المشفرة إلى قيمها الأصلية باستخدام نفس مفتاح التشفير.
مشغلات الإخفاء
| المشغل | الوصف | قابل للعكس | مثال |
|---|---|---|---|
| replace | استبدال بمكان فارغ | No | John → [PERSON] |
| mask | تعتيم جزئي على الأحرف | No | john@email.com → j***@email.com |
| redact | إزالة تمامًا | No | John → (empty) |
| hash | هاش SHA-256 أحادي الاتجاه | No | John → a3f2b1c4... |
| encrypt | تشفير AES-256-GCM | Yes | John → [ENC:...] |
تكوينات المشغل
// 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" }واجهة برمجة التطبيقات للإعدادات المسبقة
أنواع الكيانات
يدعم anonymize.today 256 نوعًا من الكيانات عبر 10 فئات:
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
اطلع على القائمة الكاملة لأنواع الكيانات في وثائق الإعدادات المسبقة. Presets documentation.
اللغات المدعومة
تدعم API 27 لغة للاعتراف بـ PII:
| الكود | اللغة | المحرك |
|---|---|---|
| en | English | spaCy |
| de | German | spaCy |
| es | Spanish | spaCy |
| fr | French | spaCy |
| it | Italian | spaCy |
| pt | Portuguese | spaCy |
| nl | Dutch | spaCy |
| pl | Polish | spaCy |
| ru | Russian | spaCy |
| ja | Japanese | spaCy |
| zh | Chinese | spaCy |
| ko | Korean | spaCy |
| ar | Arabic | Transformer |
| hi | Hindi | Transformer |
| tr | Turkish | Transformer |
لغات إضافية: الرومانية، اليونانية، الكرواتية، السلوفينية، المقدونية، السويدية، الدنماركية، النرويجية، الفنلندية، الأوكرانية، الليتوانية، الكتالونية
معالجة الأخطاء
رموز الحالة HTTP القياسية:
| الحالة | المعنى | الوصف |
|---|---|---|
| 200 | OK | Request succeeded |
| 201 | Created | Resource created successfully |
| 400 | Bad Request | 400 - طلب غير صالح (معلمات غير صالحة) |
| 401 | Unauthorized | 401 - غير مصرح (رمز غير صالح أو مفقود) |
| 402 | Payment Required | Insufficient tokens |
| 403 | Forbidden | Access denied to resource |
| 404 | Not Found | Resource not found |
| 429 | Too Many Requests | 429 - محدود بمعدل (الكثير من الطلبات) |
| 500 | Internal Error | 500 - خطأ في الخادم (اتصل بالدعم) |
تنسيق استجابة الخطأ
{
"error": {
"code": "INSUFFICIENT_TOKENS",
"message": "You need 5 tokens but only have 2 remaining",
"details": {
"required": 5,
"available": 2
}
}
}أمثلة كاملة
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
آخر تحديث: مارس 2026