Overview
The Email Validation API helps you verify email addresses before sending, reducing bounces and protecting your sender reputation.Validate emails at the point of collection (signup forms, checkout) to prevent invalid addresses from entering your database.
Validation Checks
Syntax
RFC 5322 compliant format validation
MX Records
Domain has valid mail servers
Disposable
Temporary/throwaway email detection
Role-based
Generic addresses (info@, support@)
Free Provider
Gmail, Yahoo, Outlook detection
Catch-all
Domain accepts any address
Quality Score
Each email receives a quality score from 0-100:| Score | Rating | Description |
|---|---|---|
| 80-100 | Excellent | Safe to send, high deliverability |
| 60-79 | Good | Likely valid, minor risks |
| 40-59 | Risky | May bounce or be problematic |
| 0-39 | Poor | High risk, likely invalid |
Single Validation
POST
Validate a single email address with comprehensive checks.
/v1/validate/emailRequest Body
Email address to validate
Perform SMTP mailbox verification (slower but more accurate)
Check if domain is a catch-all (accepts any address)
cURL
Response
200 OK
Bulk Validation
POST
Validate multiple email addresses in a single request (up to 1,000 emails synchronously).
/v1/validate/emailsPROFor validating more than 1,000 emails, use the Async Bulk Validation endpoint which supports up to 500,000 emails.
Request Body
Array of email addresses to validate (up to 1,000,000 on Pro/Scale/Enterprise plans)
Perform SMTP mailbox verification
Check for catch-all domains
cURL
Response
200 OK
Async Bulk Validation
POST
Validate large email lists asynchronously (up to 500,000 emails). Perfect for cleaning your audience lists before sending campaigns.
/v1/validate/bulkPROThis endpoint starts a validation job that runs in the background. Use the job ID to check progress and retrieve results.
Pricing
| Plan | Credits | Price |
|---|---|---|
| Free | 1,000 | $0 |
| Pro | 100,000 | $29 |
Request Body
Array of email addresses to validate (up to 500,000)
Alternatively, validate all contacts in an audience
cURL
cURL
Response
200 OK
Check Validation Progress
GET
Check the progress of an async validation job.
/v1/validate/bulk/:job_idcURL
Response
200 OK
Status Values
| Status | Description |
|---|---|
pending | Job is queued, waiting to start |
processing | Validation in progress |
completed | All emails validated |
failed | Job failed (check error message) |
cancelled | Job was cancelled |
Get Validation Results
GET
Retrieve the results of a completed validation job.
/v1/validate/bulk/:job_id/resultscURL
Response
200 OK
Reason Codes
| Reason | Description |
|---|---|
syntax | Invalid email format |
disposable | Temporary/throwaway email domain |
typo | Common domain typo detected |
no_mx | Domain has no mail servers |
invalid_mailbox | Mailbox doesn’t exist (SMTP check failed) |
role_based | Generic address (info@, support@, etc.) |
Cancel Validation Job
DELETE
Cancel a running validation job.
/v1/validate/bulk/:job_idcURL
Response
200 OK
Processing Time
Async bulk validation processes approximately 10 emails per second:| Emails | Estimated Time |
|---|---|
| 1,000 | ~2 minutes |
| 10,000 | ~17 minutes |
| 100,000 | ~2.8 hours |
| 500,000 | ~14 hours |
Check Types Explained
Syntax Check
Validates email format according to RFC 5322:- Proper
local@domain.tldformat - No invalid characters
- Length limits (64 chars local, 254 total)
- No consecutive dots
MX Records Check
Verifies the domain has configured mail servers:- DNS lookup for MX records
- Returns list of mail hosts
- No MX = domain can’t receive email
Disposable Detection
Identifies temporary/throwaway email services:- 10minutemail, Mailinator, Guerrilla Mail
- 100+ disposable domains tracked
- High bounce risk
Role-based Detection
Flags generic/group addresses:info@,support@,sales@,admin@- Often shared mailboxes
- Higher complaint risk
Free Provider Detection
Identifies free email services:- Gmail, Yahoo, Hotmail, Outlook
- Not necessarily bad, just informational
Catch-all Detection
Checks if domain accepts all emails:- Tests random address acceptance
- Catch-all domains can’t verify individual addresses
- Higher risk of invalid addresses
SMTP Verification
Direct mailbox existence check:- Connects to mail server
- Tests if address is accepted
- Most accurate but slower
Typo Detection
The API automatically detects common typos and suggests corrections:gmial.com→gmail.comhotmal.com→hotmail.comyaho.com→yahoo.comoutlok.com→outlook.com
Best Practices
Validate at collection
Validate at collection
Check emails when users sign up or enter their address, not just before sending.
Use appropriate checks
Use appropriate checks
- Signups: Full validation with catch-all detection
- Transactional: Quick syntax + MX check
- Marketing lists: Bulk validation with SMTP
Handle low scores gracefully
Handle low scores gracefully
Don’t reject users immediately. Ask them to confirm or re-enter their email.
Respect rate limits
Respect rate limits
Bulk validation counts against your API rate limits. Process large lists in batches.