Blog·Craft·

Email flags the inbox, not just the syntax

/email checks format, domain, and whether the address is a generic role inbox, as three separate fields.

Passing a regex is not the same as being reachable.

GET /email/admin@example.com
{ "email": "admin@example.com", "valid": true, "domain": "example.com", "domain_valid": false, "role": true }

GET /email/jsmith847@gmail.com
{ "email": "jsmith847@gmail.com", "valid": true, "domain": "gmail.com", "domain_valid": true, "role": false }

Both addresses pass valid, the syntax is fine on either one. domain_valid and role are what actually separate them: example.com has no live mail setup, and admin@ reads as a generic inbox instead of a person.

Three checks, three fields

valid is spelling. domain_valid is whether mail can actually land there. role is whether the mailbox belongs to a person or a department. A signup form that only checks valid lets both examples through, one of them is worth treating differently.

Try it

Call /email with support@ and a personal address at the same domain and compare role. One of them is a person. The API can tell.