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.
| Plan | Limit |
|---|---|
| Free | 5 req/min |
| Pro | 20 req/min |
| Enterprise | 100 req/min |
Errors
| Status | Meaning |
|---|---|
| 400 | Malformed request body — email is required. |
| 401 | Missing or invalid API key / session token. |
| 402 | Your account is out of credits. |
| 429 | You've exceeded your plan's rate limit for this minute. |