How do I list breaches for a company domain?
GET /breaches?domain=adobe.com returns public breach records for that domain. Domain catalog lookups are the safest public demo path and do not require sending personal emails.
List public HIBP breach records by domain, screen emails when you have a key, and check pwned passwords with a 5 character SHA-1 prefix. Logs never keep a full address.
This calls GET /breaches for allowlisted domains only. It does not look up personal emails. The catalog is HIBP-backed so the playground waits for you to press Run.
Demo allowlist is example.com and adobe.com.
Press Run to load the HIBP-backed domain catalog. This demo never sends personal emails.
Why Breach Check
Domain breach catalog
GET /breaches?domain= lists public HIBP records without sending anyone's email address.
Email screening
GET /check returns breached, breachCount, and per-breach name, date, pwnCount, and data classes.
Batch up to 25
POST /check throttles 1.5s between upstream calls and returns total, breached, clean, and failed.
k-anonymity passwords
GET /password?hash_prefix= uses the first 5 SHA-1 hex characters. Plaintext is hashed in memory only.
Prefix-only logs
Only the first 5 hex characters of an email SHA-1 are logged. Full addresses are not written.
Explicit HIBP status
Health reports hibpConfigured. Missing keys return 503 with hibp-api-key-required instead of fake data.
/api/v1/breach-check
Breach catalog
Public HIBP records, optionally filtered by domain. Does not require a personal email.
Email check
Look up one email. Requires a server-side HIBP API key for live data.
Batch email check
1 to 25 emails. Upstream calls pause 1.5s between items.
Pwned password
k-anonymity hash_prefix or in-memory password hash. Prefix only is logged.
| Parameter | Type | Required | Description |
|---|---|---|---|
| domain | string | no | Filter /breaches. Example: adobe.com. |
| string | for GET /check | Address to screen against known breaches. | |
| emails | array | for POST /check | 1 to 25 email strings. |
| hash_prefix | string | for /password | First 5 hex characters of a SHA-1 password hash. |
| password | string | for /password | Plaintext hashed in memory. Never stored. |
Error reference
Invalid email, invalid 5-character hash prefix, or a batch larger than 25 emails.
Missing or invalid gateway API key. Send x-api-key or api_key with every request.
Unknown route under /api/v1/breach-check.
More than 60 requests in 15 minutes, or HIBP upstream rate limiting.
HIBP rejected the configured key or the upstream network failed.
HIBP_API_KEY is not configured for live email lookups.
Example error response
{
"success": false,
"error": "Invalid input parameters",
"details": ["\"email\" must be a valid email"],
"correlationId": "req_abc123"
}FAQ
GET /breaches?domain=adobe.com returns public breach records for that domain. Domain catalog lookups are the safest public demo path and do not require sending personal emails.
GET /check?email= returns breached, breachCount, and per-breach detail. POST /check accepts 1 to 25 emails and throttles 1.5s between upstream HIBP calls.
Yes. GET /password?hash_prefix=5BAA6 uses the NIST k-anonymity model. You can also pass password, which is hashed in memory and never stored.
Only the first 5 hex characters of the email SHA-1 hash. Full addresses are not written to logs. Live email lookups need a server-side HIBP API key.
Send your Datpaq API key as an x-api-key header or an api_key query parameter. Keys are created in the Datpaq dashboard and a free tier is included.
List public HIBP records by domain, screen emails when you have a key, and query pwned passwords with k-anonymity prefixes.