API docs

One endpoint: check an identifier, get back the same masked report the web app shows. For B2B integrators on the Pro or Enterprise plan.

Authentication

Send your key in an X-API-Key header. Create and revoke keys from your Dashboard — API keys require a Pro or Enterprise plan; Free accounts get a 403 on key creation.

X-API-Key: idsk_<your key>

POST /lookup

Checks one identifier and spends one credit from your balance. The identifier is hashed before it's compared — see Privacy for what we do and don't store.

Request

curl -X POST https://id-sentinel-api.zer0dev.me/lookup \
  -H "X-API-Key: idsk_<your key>" \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]"}'

Response — found

{
  "found": true,
  "profile": {
    "masked_identifier": "j***@example.com",
    "total_compromises": 2,
    "total_machines": 2,
    "first_seen": "2025-03-11T00:00:00Z",
    "last_seen": "2025-11-14T00:00:00Z"
  },
  "exposures": [
    {
      "log_date": "2025-11-14T00:00:00Z",
      "country_code": "FR",
      "city_name": "Lyon",
      "os_info": "Windows 11 Pro x64",
      "antivirus": "Windows Defender",
      "browsers": ["Google Chrome"],
      "malware_processes": ["svchost32.exe"],
      "domains_detected": ["streaming-service.com"]
    }
  ],
  "credentials": [
    {
      "service_domain": "streaming-service.com",
      "masked_login": "j***@example.com",
      "masked_password": "P********!",
      "length": 12,
      "has_upper": true,
      "has_lower": true,
      "has_digit": true,
      "has_special": true,
      "occurrences_profile": 1,
      "occurrences_global": 3
    }
  ]
}

Response — not found

{ "found": false }

Rate limits

Applied per caller, per minute, based on your account's plan.

PlanLimit
Free5 req/min
Pro20 req/min
Enterprise100 req/min

Errors

StatusMeaning
400Malformed request body — email is required.
401Missing or invalid API key / session token.
402Your account is out of credits.
429You've exceeded your plan's rate limit for this minute.