common.skipToContent

مرجع API

دمج إخفاء الهوية في تطبيقاتك

واجهة برمجة تطبيقات REST كاملة لاكتشاف وإخفاء الهوية لـ PII برمجيًا.


عنوان URL الأساسي

https://anonymize.today/api

جميع نقاط نهاية API نسبية إلى عنوان URL الأساسي هذا. على سبيل المثال، نقطة نهاية التحليل هي https://anonymize.today/api/presidio/analyze.


المصادقة

قم بمصادقة طلبات API باستخدام رموز Bearer:

Authorization: Bearer YOUR_API_TOKEN

الحصول على رمز API

  1. قم بتسجيل الدخول إلى حسابك في anonymize.today
  2. اذهب إلى الإعدادات → الحساب → رموز API
  3. انقر على إنشاء رمز جديد
  4. انسخ واحفظ رمزك بأمان (لن يتم عرضه مرة أخرى)

ملاحظة أمنية

لا تعرض رمز 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 طلبات
Authentication3 requests/second5 requests
Analysis & Anonymization30 requests/second50 requests
Presets & Settings10 requests/second20 requests

عند الحد من المعدل، تعيد API 429 طلبات كثيرة جدًا مع رأس Retry-After يشير إلى متى يمكنك إعادة المحاولة.


نقاط النهاية الأساسية

تحليل النص

اكتشاف كيان PII في النص. يعيد المواقع وأنواع الكيانات المكتشفة.

إخفاء النص

إخفاء الكيانات PII المكتشفة باستخدام مشغلين مختلفين.

إعادة الكشف عن النص

استعادة الكيانات المشفرة إلى قيمها الأصلية باستخدام نفس مفتاح التشفير.


مشغلات الإخفاء

المشغلالوصفقابل للعكسمثال
replaceاستبدال بمكان فارغNoJohn → [PERSON]
maskتعتيم جزئي على الأحرفNojohn@email.com → j***@email.com
redactإزالة تمامًاNoJohn → (empty)
hashهاش SHA-256 أحادي الاتجاهNoJohn → a3f2b1c4...
encryptتشفير AES-256-GCMYesJohn → [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:

الكوداللغةالمحرك
enEnglishspaCy
deGermanspaCy
esSpanishspaCy
frFrenchspaCy
itItalianspaCy
ptPortuguesespaCy
nlDutchspaCy
plPolishspaCy
ruRussianspaCy
jaJapanesespaCy
zhChinesespaCy
koKoreanspaCy
arArabicTransformer
hiHindiTransformer
trTurkishTransformer

لغات إضافية: الرومانية، اليونانية، الكرواتية، السلوفينية، المقدونية، السويدية، الدنماركية، النرويجية، الفنلندية، الأوكرانية، الليتوانية، الكتالونية


معالجة الأخطاء

رموز الحالة HTTP القياسية:

الحالةالمعنىالوصف
200OKRequest succeeded
201CreatedResource created successfully
400Bad Request400 - طلب غير صالح (معلمات غير صالحة)
401Unauthorized401 - غير مصرح (رمز غير صالح أو مفقود)
402Payment RequiredInsufficient tokens
403ForbiddenAccess denied to resource
404Not FoundResource not found
429Too Many Requests429 - محدود بمعدل (الكثير من الطلبات)
500Internal Error500 - خطأ في الخادم (اتصل بالدعم)

تنسيق استجابة الخطأ

{
  "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