Deliverability Insights
Optimizing your inbox reach with domain health analysis.
Blocklists, SPF / DKIM / DMARC health, risk score, recommendations
0 domains
Build on the checker
Every check is one plain HTTP request. Create a key, give it only the scopes the job needs, and call from any language below.
7 endpoints
8 languages
scoped keys
API keys
A key is shown exactly once, when it is created. After that only its name and prefix remain; the key itself is stored as a hash and cannot be recovered.
Loading keys…
Notes
- API key (optional):
POST /api/keyswith{ "name", "scopes" }returns a key; send it as theX-API-Keyheader for a higher rate limit. The server can require keys withDBC_REQUIRE_KEY=true. - Scopes: each key is limited to the scopes it was created with (shown next to each endpoint above). Calling outside them returns 403 naming the missing scope.
all:allgrants everything. Scopes cannot be changed after creation, so make a new key instead.GET /api/scopeslists them all. - The key is shown once. Only a hash of it is stored, so it cannot be displayed again. Lose it and you create a new one.
GET /api/keyslists your keys by prefix,DELETE /api/keys/:idrevokes one. - Expiry: pass
expiresInDays(1 to 3650) at creation and the key refuses to work after that date, answering 401 with the expiry date. Omit it for a key that never expires. Usage is tracked per key (count, last use, last IP) and shown in the list above. At mostDBC_MAX_KEYSkeys (default 50) can be active at once. verdict:clean·listed·blacklisted(a critical/Spamhaus hit) ·unknown(only timeouts).- A row's
stateislisted/ok/timeout. A timeout is never treated as clean. - Rate limit:
DBC_RATE_MAXrequests/min per IP (default 30). Bulk costs more, in proportion to the domain count. A 429 means slow down. - Bulk is capped at
DBC_BULK_MAXdomains (default 500); add?format=csvto get a CSV download. - Share links:
POST /api/sharewith{ "kind": "single"|"bulk", "data": {...} }freezes a result and returns/r/<id>, viewable by anyone with the link. Links expire afterDBC_SHARE_TTL_DAYS(default 90); withoutDATABASE_URLthey live in memory and die on restart.
Loading visitors…
What this page can and cannot know
- Every browser that opens this site (the login screen and shared /r/ links included) reports itself here and keeps a heartbeat every 30 seconds while the tab is open.
- Active means a heartbeat arrived recently; Offline means the tab closed or went quiet.
- A browser never reveals its owner's personal email address to a website. The account column is filled in only when the visitor signs in.
- Presence lives in memory: restarting the server clears the list.