рдИрдореЗрд▓ рдкрддреЗ рдПрдХрддреНрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ applications рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП basic form validation рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рдИрдореЗрд▓ рд╕рддреНрдпрд╛рдкрди API рдпрд╣ confirm рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП infrastructure рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдИрдореЗрд▓ рдкрддреЗ рдЖрдкрдХреЗ database рдореЗрдВ enter рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ real, deliverable рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП safe рд╣реИрдВред рдпрд╣ comprehensive guide developers рдХреЛ рдЕрдкрдиреЗ applications рдореЗрдВ рдИрдореЗрд▓ рд╕рддреНрдпрд╛рдкрди API рдХреЛ integrate рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рдХреА рд╣рд░ рдЪреАрдЬ рдХреЛ cover рдХрд░рддрд╛ рд╣реИ, authentication рдФрд░ endpoints рд╕реЗ рд▓реЗрдХрд░ error handling рдФрд░ optimization strategies рддрдХред
рдИрдореЗрд▓ рд╕рддреНрдпрд╛рдкрди API рдХреЛ рд╕рдордЭрдирд╛
рдПрдХ рдИрдореЗрд▓ рд╕рддреНрдпрд╛рдкрди API рдПрдХ web service рд╣реИ рдЬреЛ рдИрдореЗрд▓ рдкрддреЗ accept рдХрд░рддрд╛ рд╣реИ рдФрд░ detailed validation results return рдХрд░рддрд╛ рд╣реИред Client-side validation рдХреЗ рд╡рд┐рдкрд░реАрдд рдЬреЛ рдХреЗрд╡рд▓ format check рдХрд░рддрд╛ рд╣реИ, рдпреЗ APIs comprehensive server-side checks perform рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ syntax validation, domain verification, MX record lookup, SMTP verification, рдФрд░ additional intelligence рдЬреИрд╕реЗ disposable email detection рдФрд░ catch-all domain identification рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
BillionVerify рдЬреИрд╕реА professional email verification services рдЕрдкрдиреА verification capabilities рдХреЛ RESTful APIs рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ expose рдХрд░рддреА рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ developers рдХреЛ registration flows, data processing pipelines, рдФрд░ batch verification workflows рдореЗрдВ рд╕реАрдзреЗ рдИрдореЗрд▓ рд╡реИрд▓рд┐рдбреЗрд╢рди integrate рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд implementation рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП, Developer Guide рджреЗрдЦреЗрдВред
рдИрдореЗрд▓ рд╕рддреНрдпрд╛рдкрди API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░реЗрдВ?
Real-Time Validation User registration рдпрд╛ form submission рдХреЗ рджреМрд░рд╛рди рддреБрд░рдВрдд рдИрдореЗрд▓ рдкрддреЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВред Users рдХреЛ invalid addresses рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ immediate feedback рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реА interaction рд╕реЗ рд╣реА data quality рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред
Scalable Infrastructure рдИрдореЗрд▓ рд╕рддреНрдпрд╛рдкрди infrastructure рдХреЛ build рдФрд░ maintain рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП significant resources рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред APIs distributed verification systems, clean IP reputation pools, рдФрд░ continuously updated intelligence рддрдХ operational overhead рдХреЗ рдмрд┐рдирд╛ access рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
Comprehensive Checks Professional рдИрдореЗрд▓ рд╕рддреНрдпрд╛рдкрди API рдХрдИ validation techniques рдХреЛ combine рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ replicate рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП substantial development effort рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдПрдХ single API call syntax validation, domain checks, SMTP verification, disposable email detection, рдФрд░ рдмрд╣реБрдд рдХреБрдЫ perform рдХрд░ рд╕рдХрддрд╛ рд╣реИред
Accuracy рдФрд░ Reliability Email verification services accuracy рдореЗрдВ heavily invest рдХрд░рддреА рд╣реИрдВред рд╡реЗ disposable domains рдХреЗ databases maintain рдХрд░рддреА рд╣реИрдВ, catch-all configurations рдХреЛ track рдХрд░рддреА рд╣реИрдВ, рдФрд░ sophisticated detection algorithms implement рдХрд░рддреА рд╣реИрдВ рдЬреЛ рд╕рдордп рдХреЗ рд╕рд╛рде improve рд╣реЛрддреЗ рд╣реИрдВред
API Authentication Methods
API access рдХреЛ secure рдХрд░рдирд╛ рдХрд┐рд╕реА рднреА email verification integration рдХреЗ рд▓рд┐рдП fundamental рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ services рд╡рд┐рднрд┐рдиреНрди use cases рдХреЗ рдЕрдиреБрд░реВрдк рдХрдИ authentication mechanisms offer рдХрд░рддреА рд╣реИрдВред
API Key Authentication
рд╕рдмрд╕реЗ common authentication method API keys рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ request headers рдпрд╛ query parameters рдХреЗ рд░реВрдк рдореЗрдВ passed рд╣реЛрддреЗ рд╣реИрдВред API keys simple integration рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬрдмрдХрд┐ usage tracking рдФрд░ rate limiting рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
Header-Based Authentication
const response = await fetch('https://api.billionverify.com/v1/verify', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({ email: 'user@example.com' })
});
Bearer token рдХреЗ рд╕рд╛рде Authorization header recommended approach рд╣реИред рдпрд╣ credentials рдХреЛ URLs рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрддрд╛ рд╣реИ, server access logs рдореЗрдВ accidental logging рдХреЛ prevent рдХрд░рддрд╛ рд╣реИред
Query Parameter Authentication
рдХреБрдЫ APIs рдХреБрдЫ contexts рдореЗрдВ simpler integration рдХреЗ рд▓рд┐рдП keys рдХреЛ query parameters рдХреЗ рд░реВрдк рдореЗрдВ accept рдХрд░рддреЗ рд╣реИрдВ:
GET https://api.billionverify.com/v1/verify?email=user@example.com&api_key=YOUR_API_KEY
Convenient рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, query parameter authentication credentials рдХреЛ logs рдФрд░ browser history рдореЗрдВ expose рдХрд░рддрд╛ рд╣реИред рдЬрдм рд╕рдВрднрд╡ рд╣реЛ рддреЛ header-based authentication рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
API Key Best Practices
Environment Variables рдХрднреА рднреА source code рдореЗрдВ API keys рдХреЛ hardcode рди рдХрд░реЗрдВред рдЙрдиреНрд╣реЗрдВ environment variables рдореЗрдВ store рдХрд░реЗрдВ:
const apiKey = process.env.BILLIONVERIFY_API_KEY;
Key Rotation API keys рдХреЛ periodically rotate рдХрд░реЗрдВ рдФрд░ compromise рдХрд╛ рд╕рдВрджреЗрд╣ рд╣реЛрдиреЗ рдкрд░ рддреБрд░рдВрдд рдХрд░реЗрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ services seamless rotation рдХреЛ enable рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ active keys рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред
рд╕реБрд░рдХреНрд╖рд╛ рдмреЗрд╣рддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Best Practices Guide рдкрдврд╝реЗрдВред
Environment рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ Keys Development, staging, рдФрд░ production рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ API keys рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ test traffic рдХреЛ production quotas рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ рдФрд░ debugging рдХреЛ simplify рдХрд░рддрд╛ рд╣реИред
Key Permissions рдХреЛ Restrict рдХрд░реЗрдВ рдпрджрд┐ API scoped permissions рдХреЛ support рдХрд░рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ key рдХреЛ рдХреЗрд╡рд▓ рдЙрди operations рддрдХ рд╕реАрдорд┐рдд рдХрд░реЗрдВ рдЬрд┐рдирдХреА рдЙрд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓ single email verification рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА key рдХреЛ bulk processing permissions рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
Core API Endpoints
Email verification APIs рдЖрдорддреМрд░ рдкрд░ рд╡рд┐рднрд┐рдиреНрди use cases рдХреЗ рд▓рд┐рдП endpoints рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ endpoint рдХреЗ purpose рдХреЛ рд╕рдордЭрдирд╛ рдЖрдкрдХреЗ integration рдХреЗ рд▓рд┐рдП рд╕рд╣реА approach рдЪреБрдирдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
Single Email Verification
Fundamental endpoint рдПрдХ request рдореЗрдВ рдПрдХ рдИрдореЗрд▓ рдкрддреЗ рдХреЛ verify рдХрд░рддрд╛ рд╣реИ:
POST /v1/verify
{
"email": "user@example.com"
}
Response Structure
{
"email": "user@example.com",
"is_valid": true,
"is_deliverable": true,
"is_disposable": false,
"is_role_based": false,
"is_catch_all": false,
"is_free_provider": true,
"syntax_valid": true,
"domain_valid": true,
"mx_found": true,
"smtp_check": "passed",
"risk_score": 15,
"suggestion": null,
"verification_time_ms": 1234
}
Key Response Fields
| Field | Type | Description |
|---|---|---|
is_valid | boolean | Overall validity assessment |
is_deliverable | boolean | рдХреНрдпрд╛ email messages receive рдХрд░ рд╕рдХрддрд╛ рд╣реИ |
is_disposable | boolean | Temporary/throwaway email address |
is_role_based | boolean | Generic addresses рдЬреИрд╕реЗ info@, support@ |
is_catch_all | boolean | Domain рд╕рднреА addresses рдХреЛ accept рдХрд░рддрд╛ рд╣реИ |
smtp_check | string | SMTP verification result |
risk_score | number | Risk assessment (0-100, рдХрдо рдмреЗрд╣рддрд░ рд╣реИ) |
suggestion | string | рдпрджрд┐ detected рд╣реЛ рддреЛ typo correction suggestion |
Batch Email Verification
рдмрдбрд╝реА lists рдХреЛ verify рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, batch endpoints рдХрдИ emails accept рдХрд░рддреЗ рд╣реИрдВ:
POST /v1/verify/batch
{
"emails": [
"user1@example.com",
"user2@example.com",
"user3@example.com"
]
}
Batch endpoints emails рдХреЛ parallel рдореЗрдВ process рдХрд░рддреЗ рд╣реИрдВ, sequential single-email requests рдХреА рддреБрд▓рдирд╛ рдореЗрдВ faster results return рдХрд░рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ services batch sizes рдХреЛ limit рдХрд░рддреА рд╣реИрдВ (рдЖрдорддреМрд░ рдкрд░ 100-1000 emails per request) рдФрд░ рдмрд╣реБрдд рдмрдбрд╝реА batches рдХреЛ asynchronously process рдХрд░ рд╕рдХрддреА рд╣реИрдВред
Bulk File Upload
Batch endpoints рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдбрд╝реА lists рдХреЗ рд▓рд┐рдП, file upload APIs millions of records handle рдХрд░рддреЗ рд╣реИрдВ:
const formData = new FormData();
formData.append('file', emailListFile);
const uploadResponse = await fetch('https://api.billionverify.com/v1/bulk/upload', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
},
body: formData
});
const { job_id } = await uploadResponse.json();
File upload endpoints progress рдХреЛ track рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ job ID return рдХрд░рддреЗ рд╣реИрдВред Processing complete рд╣реЛрдиреЗ рдкрд░ results рдХреЛ retrieve рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
// Check job status
const statusResponse = await fetch(
`https://api.billionverify.com/v1/bulk/status/${job_id}`,
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const { status, progress, estimated_completion } = await statusResponse.json();
// Download results when complete
if (status === 'completed') {
const resultsResponse = await fetch(
`https://api.billionverify.com/v1/bulk/download/${job_id}`,
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
}
Webhook Notifications
Asynchronous processing рдХреЗ рд▓рд┐рдП, verification complete рд╣реЛрдиреЗ рдкрд░ notifications receive рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП webhooks configure рдХрд░реЗрдВ:
POST /v1/webhooks
{
"url": "https://yourapp.com/webhooks/email-verification",
"events": ["bulk.completed", "bulk.failed"],
"secret": "your_webhook_secret"
}
Webhooks polling рдХреЛ eliminate рдХрд░рддреЗ рд╣реИрдВ, bulk operations рдХреЗ рд▓рд┐рдП efficiency рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
Error Handling Strategies
Robust error handling рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ integration user experience рдХреЛ disrupt рдХрд┐рдП рдмрд┐рдирд╛ failures рдХреЛ gracefully handle рдХрд░рддрд╛ рд╣реИред
HTTP Status Codes
Email verification APIs standard HTTP status codes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
| Code | Meaning | Action |
|---|---|---|
| 200 | Success | Response рдХреЛ process рдХрд░реЗрдВ |
| 400 | Bad Request | Request format рдХреЛ fix рдХрд░реЗрдВ |
| 401 | Unauthorized | API key рдХреЛ check рдХрд░реЗрдВ |
| 403 | Forbidden | Permissions рдХреЛ check рдХрд░реЗрдВ |
| 404 | Not Found | Endpoint URL рдХреЛ check рдХрд░реЗрдВ |
| 429 | Rate Limited | Backoff implement рдХрд░реЗрдВ |
| 500 | Server Error | Backoff рдХреЗ рд╕рд╛рде retry рдХрд░реЗрдВ |
| 503 | Service Unavailable | рдмрд╛рдж рдореЗрдВ retry рдХрд░реЗрдВ |
Retry Logic Implement рдХрд░рдирд╛
Network issues рдФрд░ transient errors рдХреЛ retry mechanisms рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
async function verifyEmailWithRetry(email, maxRetries = 3) {
const delays = [1000, 2000, 4000]; // Exponential backoff
for (let attempt = 0; attempt < maxRetries; attempt++) {
try {
const response = await fetch('https://api.billionverify.com/v1/verify', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.BILLIONVERIFY_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ email })
});
if (response.status === 429) {
// Rate limited - wait and retry
const retryAfter = response.headers.get('Retry-After') || delays[attempt];
await sleep(parseInt(retryAfter) * 1000);
continue;
}
if (response.status >= 500) {
// Server error - retry with backoff
await sleep(delays[attempt]);
continue;
}
if (!response.ok) {
throw new Error(`API error: ${response.status}`);
}
return await response.json();
} catch (error) {
if (attempt === maxRetries - 1) {
throw error;
}
await sleep(delays[attempt]);
}
}
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
Validation Results рдХреЛ Handle рдХрд░рдирд╛
рд╣рд░ verification рдПрдХ definitive answer return рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред Uncertain results рдХреЛ appropriately handle рдХрд░реЗрдВ:
function handleVerificationResult(result) {
if (result.is_valid && result.is_deliverable) {
return { status: 'valid', action: 'accept' };
}
if (!result.syntax_valid || !result.domain_valid) {
return { status: 'invalid', action: 'reject' };
}
if (result.is_disposable) {
return { status: 'risky', action: 'reject_or_warn' };
}
if (result.is_catch_all) {
// Can't definitively verify - consider accepting with monitoring
return { status: 'uncertain', action: 'accept_with_caution' };
}
if (result.risk_score > 70) {
return { status: 'high_risk', action: 'manual_review' };
}
return { status: 'unknown', action: 'accept_with_monitoring' };
}
Rate Limiting рдФрд░ Optimization
Email verification APIs fair usage рдФрд░ system stability рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП rate limits implement рдХрд░рддреЗ рд╣реИрдВред Effective integration рдЗрди limits рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрдмрдХрд┐ throughput рдХреЛ maximize рдХрд░рддрд╛ рд╣реИред
Rate Limits рдХреЛ рд╕рдордЭрдирд╛
Rate limits рдЖрдорддреМрд░ рдкрд░ рдХрдИ levels рдкрд░ apply рд╣реЛрддреА рд╣реИрдВ:
- Requests per second: Maximum API calls per second
- Requests per minute/hour: Sustained rate limits
- Daily/monthly quotas: Total verification allowance
- Concurrent connections: Simultaneous request limits
Rate limit information рдХреЗ рд▓рд┐рдП response headers рдХреЛ check рдХрд░реЗрдВ:
const response = await fetch('https://api.billionverify.com/v1/verify', {
// ... request options
});
const rateLimit = response.headers.get('X-RateLimit-Limit');
const remaining = response.headers.get('X-RateLimit-Remaining');
const resetTime = response.headers.get('X-RateLimit-Reset');
console.log(`Rate limit: ${remaining}/${rateLimit}, resets at ${resetTime}`);
Rate Limiting Implement рдХрд░рдирд╛
Limits рдХреЛ hit рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП proactively request rates рдХреЛ manage рдХрд░реЗрдВ:
class RateLimiter {
constructor(requestsPerSecond) {
this.interval = 1000 / requestsPerSecond;
this.lastRequest = 0;
}
async waitForSlot() {
const now = Date.now();
const timeSinceLastRequest = now - this.lastRequest;
if (timeSinceLastRequest < this.interval) {
await sleep(this.interval - timeSinceLastRequest);
}
this.lastRequest = Date.now();
}
}
// Usage
const limiter = new RateLimiter(10); // 10 requests per second
async function verifyEmailsWithRateLimit(emails) {
const results = [];
for (const email of emails) {
await limiter.waitForSlot();
const result = await verifyEmail(email);
results.push(result);
}
return results;
}
Batch Processing Optimization
рдХрдИ emails рдХреЛ verify рдХрд░рддреЗ рд╕рдордп efficiency рдХреЛ maximize рдХрд░реЗрдВ:
Batch Endpoints рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдкреНрд░рддреНрдпреЗрдХ email рдХреЗ рд▓рд┐рдП single requests network round-trips рдХреЛ waste рдХрд░рддреА рд╣реИрдВред Batch endpoints рдкреНрд░рддрд┐ request рдХрдИ emails рдХреЛ verify рдХрд░рддреЗ рд╣реИрдВ:
// Inefficient: 100 separate requests
for (const email of emails) {
await verifyEmail(email);
}
// Efficient: 1 batch request
const results = await verifyEmailBatch(emails);
рдмрдбрд╝реА Lists рдХреЛ Chunk рдХрд░реЗрдВ рдмрд╣реБрдд рдмрдбрд╝реА lists рдХреЛ optimal batch sizes рдореЗрдВ split рдХрд░реЗрдВ:
function chunkArray(array, chunkSize) {
const chunks = [];
for (let i = 0; i < array.length; i += chunkSize) {
chunks.push(array.slice(i, i + chunkSize));
}
return chunks;
}
async function verifyLargeList(emails) {
const chunks = chunkArray(emails, 100); // 100 emails per batch
const results = [];
for (const chunk of chunks) {
const batchResults = await verifyEmailBatch(chunk);
results.push(...batchResults);
}
return results;
}
Limits рдХреЗ рд╕рд╛рде Parallel Processing Rate limits рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддреЗ рд╣реБрдП рдХрдИ batches рдХреЛ concurrently process рдХрд░реЗрдВ:
async function verifyWithConcurrency(emails, concurrency = 5) {
const chunks = chunkArray(emails, 100);
const results = [];
for (let i = 0; i < chunks.length; i += concurrency) {
const batch = chunks.slice(i, i + concurrency);
const batchResults = await Promise.all(
batch.map(chunk => verifyEmailBatch(chunk))
);
results.push(...batchResults.flat());
}
return results;
}
Caching Strategies
Verification results рдХреЛ cache рдХрд░рдирд╛ API costs рдХреЛ reduce рдХрд░рддрд╛ рд╣реИ рдФрд░ repeated emails рдХреЗ рд▓рд┐рдП response times рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдХрдм Cache рдХрд░реЗрдВ
Verification results рдХреЛ cache рдХрд░реЗрдВ рдЬрдм:
- Same email рдХреЛ рдХрдИ рдмрд╛рд░ verify рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
- Real-time verification critical рдирд╣реАрдВ рд╣реИ
- Cost optimization рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ
Cache рди рдХрд░реЗрдВ рдЬрдм:
- Freshness critical рд╣реИ (рдЬреИрд╕реЗ, high-value transactions)
- Emails рдЖрдкрдХреЗ use case рдореЗрдВ frequently status change рдХрд░рддреЗ рд╣реИрдВ
- Storage costs API costs рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВ
Cache Implementation
class VerificationCache {
constructor(ttlMs = 24 * 60 * 60 * 1000) { // 24 hour default TTL
this.cache = new Map();
this.ttl = ttlMs;
}
get(email) {
const entry = this.cache.get(email.toLowerCase());
if (!entry) return null;
if (Date.now() > entry.expiry) {
this.cache.delete(email.toLowerCase());
return null;
}
return entry.result;
}
set(email, result) {
this.cache.set(email.toLowerCase(), {
result,
expiry: Date.now() + this.ttl
});
}
}
// Usage
const cache = new VerificationCache();
async function verifyEmailCached(email) {
const cached = cache.get(email);
if (cached) {
return { ...cached, fromCache: true };
}
const result = await verifyEmail(email);
cache.set(email, result);
return { ...result, fromCache: false };
}
Cache TTL Considerations
рд╡рд┐рднрд┐рдиреНрди result types рд╡рд┐рднрд┐рдиреНрди cache durations рдХреЗ рдпреЛрдЧреНрдп рд╣реИрдВ:
| Result Type | Recommended TTL | Reasoning |
|---|---|---|
| Invalid syntax | 30 рджрд┐рди | Change рдирд╣реАрдВ рд╣реЛрдЧрд╛ |
| Domain doesn't exist | 7 рджрд┐рди | Domains рд╢рд╛рдпрдж рд╣реА appear рд╣реЛрддреЗ рд╣реИрдВ |
| Valid + deliverable | 24-48 рдШрдВрдЯреЗ | Status change рд╣реЛ рд╕рдХрддрд╛ рд╣реИ |
| Disposable | 7 рджрд┐рди | Disposable status stable рд╣реИ |
| Catch-all | 24 рдШрдВрдЯреЗ | Configuration change рд╣реЛ рд╕рдХрддрд╛ рд╣реИ |
Security Best Practices
External APIs рдХреЛ integrate рдХрд░рдирд╛ authentication рд╕реЗ рдкрд░реЗ security considerations рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИред
Input Validation
API рдХреЛ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ emails рдХреЛ validate рдХрд░реЗрдВ:
function isValidEmailFormat(email) {
if (typeof email !== 'string') return false;
if (email.length > 254) return false;
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emailRegex.test(email);
}
async function verifyEmailSafely(email) {
if (!isValidEmailFormat(email)) {
return { is_valid: false, reason: 'Invalid format' };
}
return await verifyEmail(email);
}
Secure Logging
рдХрднреА рднреА full API keys рдпрд╛ sensitive data рдХреЛ log рди рдХрд░реЗрдВ:
function logApiRequest(email, response) {
// Don't log: API keys, full email addresses in production
console.log({
email_domain: email.split('@')[1],
status: response.status,
is_valid: response.is_valid,
timestamp: new Date().toISOString()
});
}
рдХреЗрд╡рд▓ HTTPS
API communications рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ HTTPS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред Production рдореЗрдВ SSL certificates рдХреЛ verify рдХрд░реЗрдВ:
// Node.js - don't disable certificate verification in production
const https = require('https');
const agent = new https.Agent({
rejectUnauthorized: true // Default, but explicit
});
рд▓реЛрдХрдкреНрд░рд┐рдп Frameworks рдХреЗ рд╕рд╛рде Integration
Express.js Middleware
Email verification рдХреЗ рд▓рд┐рдП reusable middleware рдмрдирд╛рдПрдВ:
const emailVerificationMiddleware = async (req, res, next) => {
const { email } = req.body;
if (!email) {
return next();
}
try {
const result = await verifyEmail(email);
req.emailVerification = result;
if (!result.is_valid) {
return res.status(400).json({
error: 'Invalid email address',
details: result
});
}
next();
} catch (error) {
// Fail open - don't block registration on API errors
req.emailVerification = { verified: false, error: error.message };
next();
}
};
// Usage
app.post('/register', emailVerificationMiddleware, (req, res) => {
// req.emailVerification contains verification results
});
React Hook
Frontend email verification рдХреЗ рд▓рд┐рдП рдПрдХ custom hook рдмрдирд╛рдПрдВ:
import { useState, useCallback } from 'react';
import debounce from 'lodash/debounce';
function useEmailVerification() {
const [result, setResult] = useState(null);
const [loading, setLoading] = useState(false);
const [error, setError] = useState(null);
const verify = useCallback(
debounce(async (email) => {
if (!email || !email.includes('@')) {
setResult(null);
return;
}
setLoading(true);
setError(null);
try {
const response = await fetch('/api/verify-email', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email })
});
const data = await response.json();
setResult(data);
} catch (err) {
setError(err.message);
} finally {
setLoading(false);
}
}, 500),
[]
);
return { verify, result, loading, error };
}
Monitoring рдФрд░ Analytics
рдЕрдкрдиреЗ integration рдХреЛ optimize рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП API usage рдФрд░ verification results рдХреЛ track рдХрд░реЗрдВред
Monitor рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Key Metrics
- API response time: Latency trends рдХреЛ track рдХрд░реЗрдВ
- Error rates: Type рджреНрд╡рд╛рд░рд╛ failures рдХреЛ monitor рдХрд░реЗрдВ
- Cache hit ratio: Caching effectiveness рдХреЛ measure рдХрд░реЗрдВ
- Verification distribution: Valid/invalid/risky percentages рдХреЛ track рдХрд░реЗрдВ
- Cost per verification: Actual costs рдХреЛ calculate рдХрд░реЗрдВ
Analytics рдХреЗ рд▓рд┐рдП Logging
function logVerification(email, result, metadata) {
const logEntry = {
timestamp: new Date().toISOString(),
email_domain: email.split('@')[1],
is_valid: result.is_valid,
is_deliverable: result.is_deliverable,
is_disposable: result.is_disposable,
risk_score: result.risk_score,
response_time_ms: metadata.responseTime,
from_cache: metadata.fromCache,
source: metadata.source // registration, import, etc.
};
// Send to your analytics system
analytics.track('email_verification', logEntry);
}
BillionVerify API Integration
BillionVerify developers рдХреЗ рд▓рд┐рдП design рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ comprehensive рдИрдореЗрд▓ рд╕рддреНрдпрд╛рдкрди API рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред API рдПрдХ single call рдореЗрдВ рдХрдИ verification techniques рдХреЛ combine рдХрд░рддрд╛ рд╣реИ, detailed insights рдХреЗ рд╕рд╛рде fast, accurate results deliver рдХрд░рддрд╛ рд╣реИред
Quick Start
async function verifyWithBillionVerify(email) {
const response = await fetch('https://api.billionverify.com/v1/verify', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.BILLIONVERIFY_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ email })
});
return await response.json();
}
Features
- Real-time verification: Single email verification рдХреЗ рд▓рд┐рдП sub-second response times
- Batch processing: рдкреНрд░рддрд┐ request рддрдХ 1000 emails verify рдХрд░реЗрдВ
- Bulk file upload: Async job processing рдХреЗ рд╕рд╛рде millions of records рдХреЛ process рдХрд░реЗрдВ
- Comprehensive checks: Syntax, domain, MX, SMTP, disposable, catch-all detection
- Risk scoring: Binary valid/invalid рд╕реЗ рдкрд░реЗ nuanced risk assessment
- Typo suggestions: Common typos рдХреЗ рд▓рд┐рдП corrections detect рдФрд░ suggest рдХрд░реЗрдВ
- Webhook support: Bulk job completion рдХреЗ рд▓рд┐рдП notifications receive рдХрд░реЗрдВ
API documentation рд╕рднреА endpoints, response formats, рдФрд░ рдХрдИ programming languages рдореЗрдВ integration examples рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ detailed information рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдПрдХ рдИрдореЗрд▓ рд╕рддреНрдпрд╛рдкрди API рдХреЛ integrate рдХрд░рдирд╛ transform рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ application email data quality рдХреЛ рдХреИрд╕реЗ handle рдХрд░рддрд╛ рд╣реИред Registration рдХреЗ рджреМрд░рд╛рди real-time validation рд╕реЗ рд▓реЗрдХрд░ existing lists рдХреА batch processing рддрдХ, APIs verification systems рдХреЛ build рдФрд░ maintain рдХрд░рдиреЗ рдХреА complexity рдХреЗ рдмрд┐рдирд╛ comprehensive email verification рдХреЗ рд▓рд┐рдП infrastructure рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
Successful integration рдХреЗ рд▓рд┐рдП key takeaways:
- рдЕрдкрдиреЗ use case рдХреЗ рд▓рд┐рдП рд╕рд╣реА endpoint рдЪреБрдиреЗрдВ: real-time рдХреЗ рд▓рд┐рдП single verification, medium lists рдХреЗ рд▓рд┐рдП batch, large datasets рдХреЗ рд▓рд┐рдП bulk upload
- Retry logic рдФрд░ graceful degradation рдХреЗ рд╕рд╛рде robust error handling implement рдХрд░реЗрдВ
- Client-side throttling рдФрд░ efficient batching рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ rate limits рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░реЗрдВ
- Costs рдХреЛ reduce рдХрд░рдиреЗ рдФрд░ performance рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП strategically cache рдХрд░реЗрдВ
- Data quality рдХреЛ continuously improve рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП verification results рдХреЛ monitor рдФрд░ analyze рдХрд░реЗрдВ
рдЪрд╛рд╣реЗ рдЖрдк рдПрдХ рдирдпрд╛ application build рдХрд░ рд░рд╣реЗ рд╣реЛрдВ рдпрд╛ existing system рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ, BillionVerify рдЬреИрд╕реЗ рдИрдореЗрд▓ рд╕рддреНрдпрд╛рдкрди API рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ tools рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ database рдореЗрдВ рд╣рд░ рдИрдореЗрд▓ рдкрддрд╛ valid, deliverable, рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП safe рд╣реИред
рдЖрдЬ рд╣реА рдЕрдкрдирд╛ integration рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рдЕрдиреБрднрд╡ рдХрд░реЗрдВ рдХрд┐ professional email verification рдЖрдкрдХреЗ application рдХреА data quality рдФрд░ email deliverability рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЕрдВрддрд░ рдмрдирд╛рддрд╛ рд╣реИред