Email & phone validation
Check an email or phone number you already have before you use it, with a clear verdict and a score per address.
Email & phone validation
You already have the address; the question is whether to use it. We built validation for exactly that: send one email or one phone number and get back a verdict you can act on, plus the details behind it. Is the email going to bounce? Is it a role inbox or a throwaway? Is the number real, and is it reachable right now?
Contacts from Contact Reveal are already checked. Every reveal comes back with a deliverability status, so you don't need to re-validate them. See Contact Reveal: Deliverability. Validation is for addresses that came from somewhere else.
What it does
- Email validation tells you whether an address is likely to bounce, including on catch-all domains, and flags role-based, disposable, and consumer addresses.
- Phone validation tells you whether a number is valid and reachable, normalizes it to international and national formats, and returns the country, carrier, and caller ID name where available.
Both are single-address and synchronous: one request, one answer.
Email validation
You send email, one address.
You get:
| Field | What it tells you |
|---|---|
verdict | ok, undeliverable, risky, or inconclusive |
deliverability_score | 0–100; higher means more likely to deliver |
is_catch_all | The domain accepts mail for any address |
is_role_based | A functional inbox like sales@ or hello@, not a person |
is_disposable | A disposable email provider |
is_consumer | A consumer mailbox (Gmail, Outlook and the like) rather than a work domain |
email_provider | The mailbox provider behind the address |
email | The address you sent |
{
"apiKey": "sk_live_xxx",
"email": "jane@example.com"
}Read verdict first: send to ok, drop undeliverable, and decide on
risky and inconclusive with deliverability_score and the flags.
Phone validation
You send phoneNumber. E.164 (+14155551234) is recommended, but spaces,
dashes, and parentheses are accepted. Optionally pass patience: MINIMUM,
LOW, MEDIUM, HIGH, EXTREME, or MAXIMUM. Higher patience takes longer
on average and gives more accurate identity and reachability results.
You get:
| Field | What it tells you |
|---|---|
validationStatus | valid_reachable, valid_not_reachable, invalid, or unknown |
validationScore | 0–10: 10 = valid and reachable, 6 = valid but not reachable, 2 = unknown, 0 = invalid |
isValid | Whether the number is valid |
isReachable | reachable, not_reachable, bad_number, or unknown |
formattedNumber / nationalFormat | The number in international and national format |
countryCallingCode, countryIsoCode, countryName | Where the number is registered, e.g. +1, US, United States |
currentCarrier / originalCarrier | Carrier name, networkType, and country |
isPorted | The number has moved carriers |
isRoaming | The number is currently roaming |
callerIdName | The caller ID name on the number, when there is one |
Formatting, country, carrier, and caller ID fields are nullable.
{
"apiKey": "sk_live_xxx",
"phoneNumber": "+14155551234",
"patience": "MEDIUM"
}Operations
| Operation | What it does | Reference |
|---|---|---|
| Email validation | POST /v1/validate-email/single. Verdict, 0–100 score, and address flags for one email | emailBounceDetection |
| Phone validation | POST /v1/validate-phone/single. Validity, reachability, formatting, carrier, and caller ID for one number | validatePhoneNumber |
Using it effectively
- Validate CRM and imported lists before a send, not after the bounces land. Old contact data decays, and a clean list protects your sender reputation.
- Skip validation on addresses you just got from
Contact Reveal; they already
carry a status. Note the vocabulary differs: reveals use
valid,risky,unknown,invalid, while email validation returnsok,undeliverable,risky,inconclusive. - Treat
is_role_basedas a routing hint. Asales@address can be perfectly deliverable and still the wrong place for one-to-one outreach. - Allow up to a minute per phone request, and raise
patienceonly when accuracy matters more than speed. A human waiting on a form submit wants a lower setting. - Pace bulk runs to the rate limits below; a burst past them returns HTTP 429.
Use cases
- Pre-send list cleaning: run every email in a campaign list and suppress
undeliverablebefore the sequence starts. - Inbound form screening: flag disposable and consumer emails at signup so sales sees which leads gave a work address.
- Dialer prep: drop
invalidandvalid_not_reachablenumbers before they reach your reps' call queue, and useformattedNumberto normalize what's left. - CRM hygiene: re-check contacts that haven't engaged in a while and mark the ones that no longer pass.
Cost and limits
| Email validation | Phone validation | |
|---|---|---|
| Cost | 1 credit per email validation | 3 credits per phone validation |
| Rate limit | 300 requests/minute | 60 requests/minute |
Set a 1-minute client timeout for phone validation.
chargeInfo on each response is the authoritative record of what you were
charged. See Billing & credits.
Related
- Contact Reveal: find verified emails and phones for a known person
- Reverse Email Lookup: go from an email or phone to a LinkedIn profile
- Billing & credits