Skip to main content

Email Verification

Email verification validates email addresses and assesses their risk level based on multiple factors including deliverability, domain reputation, and fraud signals.

Email Verification Process

┌─────────────────────────────────────────────────────────┐
│ EMAIL ADDRESS │
└─────────────────────────┬───────────────────────────────┘

┌─────────────┼─────────────┐
│ │ │
v v v
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Syntax │ │ Domain │ │ Mailbox │
│ Check │ │ Check │ │ Check │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
v v v
┌─────────────────────────────────────────────────────────┐
│ RISK ASSESSMENT │
│ Domain age, reputation, fraud history, patterns │
└─────────────────────────┬───────────────────────────────┘

v
┌─────────────────────────────────────────────────────────┐
│ VERIFICATION RESULT + RISK SCORE │
└─────────────────────────────────────────────────────────┘

Verify an Email

API Request

curl -X POST https://api.bytrustgate.com/v1/email/verify \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "john.doe@example.com",
"applicant_id": "550e8400-e29b-41d4-a716-446655440000"
}'

Response

{
"email": "john.doe@example.com",
"verification": {
"status": "valid",
"deliverable": true,
"syntax_valid": true,
"domain_valid": true,
"mailbox_exists": true
},
"risk_assessment": {
"risk_score": 25,
"risk_level": "low",
"factors": []
},
"metadata": {
"domain": "example.com",
"domain_age_days": 8500,
"is_free_provider": false,
"is_disposable": false,
"is_role_account": false,
"is_catch_all": false,
"mx_records": true
}
}

Verification Statuses

StatusDescriptionRecommendation
validEmail is valid and deliverableAccept
invalidEmail is invalidReject or request new
riskyEmail exists but has risk factorsReview
unknownUnable to verify mailboxAllow with caution

Risk Factors

High Risk

FactorRisk ContributionDescription
disposable_email+30Temporary email service
known_fraud_domain+40Domain associated with fraud
spam_trap+50Known spam trap address
recently_created_domain+20Domain < 30 days old

Medium Risk

FactorRisk ContributionDescription
free_provider+5Gmail, Yahoo, etc.
catch_all_domain+10Domain accepts all addresses
role_account+10Generic addresses (info@, admin@)
no_mx_records+15Domain can't receive email

Low Risk

FactorRisk ContributionDescription
new_email+5No history of this email
unusual_tld+5Uncommon top-level domain

Disposable Email Detection

Common Disposable Providers

TrustGate detects 10,000+ disposable email providers including:

  • 10minutemail.com
  • guerrillamail.com
  • tempmail.com
  • throwaway.email
  • mailinator.com
  • And many more...

Response for Disposable Email

{
"email": "user@tempmail.com",
"verification": {
"status": "risky",
"deliverable": true
},
"risk_assessment": {
"risk_score": 75,
"risk_level": "high",
"factors": [
{
"factor": "disposable_email",
"contribution": 30,
"details": "tempmail.com is a known disposable email provider"
},
{
"factor": "recently_created_domain",
"contribution": 20,
"details": "Domain created 15 days ago"
}
]
}
}

Email Domain Intelligence

Get Domain Information

curl -X GET "https://api.bytrustgate.com/v1/email/domain/example.com" \
-H "Authorization: Bearer YOUR_API_KEY"

Response

{
"domain": "example.com",
"domain_age_days": 8500,
"registrar": "Example Registrar Inc",
"mx_provider": "Google Workspace",
"spf_record": true,
"dkim_record": true,
"dmarc_record": true,
"is_free_provider": false,
"is_disposable": false,
"is_corporate": true,
"company_name": "Example Corporation",
"risk_score": 10,
"applications_from_domain": 25,
"fraud_rate_from_domain": 0.02
}

Workflow Rules

Block Disposable Emails

curl -X POST https://api.bytrustgate.com/v1/workflows/rules \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"rule_id": "block_disposable_email",
"trigger": "email_verified",
"conditions": {
"all": [
{"field": "email_is_disposable", "operator": "eq", "value": true}
]
},
"actions": [
{
"type": "update_status",
"status": "pending_review"
},
{
"type": "request_info",
"info_needed": "Please provide a permanent email address"
}
]
}'

Flag Free Email Providers

curl -X POST https://api.bytrustgate.com/v1/workflows/rules \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"rule_id": "flag_free_email",
"trigger": "email_verified",
"conditions": {
"all": [
{"field": "email_is_free_provider", "operator": "eq", "value": true},
{"field": "applicant_type", "operator": "eq", "value": "business"}
]
},
"actions": [
{
"type": "add_flag",
"flag": "personal_email_for_business"
}
]
}'

Email Verification Settings

Configure Email Checks

curl -X PUT https://api.bytrustgate.com/v1/settings/email-verification \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"verify_on_submit": true,
"block_disposable": true,
"flag_free_providers": true,
"require_corporate_for_business": true,
"risk_thresholds": {
"auto_accept": 30,
"manual_review": 60,
"auto_reject": 85
}
}'

Bulk Email Verification

Verify Multiple Emails

curl -X POST https://api.bytrustgate.com/v1/email/verify/bulk \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"emails": [
"user1@example.com",
"user2@company.org",
"user3@tempmail.com"
]
}'

Response

{
"results": [
{
"email": "user1@example.com",
"status": "valid",
"risk_score": 15
},
{
"email": "user2@company.org",
"status": "valid",
"risk_score": 10
},
{
"email": "user3@tempmail.com",
"status": "risky",
"risk_score": 75
}
],
"summary": {
"total": 3,
"valid": 2,
"risky": 1,
"invalid": 0
}
}

Email Deduplication

Find Duplicate Applications

curl -X GET "https://api.bytrustgate.com/v1/email/duplicates?email=john.doe@example.com" \
-H "Authorization: Bearer YOUR_API_KEY"

Response

{
"email": "john.doe@example.com",
"applications": [
{
"applicant_id": "app_001",
"status": "approved",
"created_at": "2024-06-15"
},
{
"applicant_id": "app_002",
"status": "pending",
"created_at": "2025-01-20"
}
],
"similar_emails": [
{
"email": "johndoe@example.com",
"similarity": 0.95,
"applicant_id": "app_003"
}
]
}

Next Steps