Email Validation API: Stop Bounce Rates Before They Kill Your Deliverability

C
Christian Mesa
Mar 03, 2026
7 min read

title: "Email Validation API: Stop Bounce Rates Before They Kill Your Deliverability" slug: email-validation-api-bounce-rates excerpt: "High bounce rates destroy email deliverability. Learn how to validate emails programmatically before sending, using an Email Validation API." meta_description: "Learn how to use an Email Validation API to reduce bounce rates, protect sender reputation, and improve email deliverability. Code examples in Node.js, Python, and PHP." meta_keywords: "email validation api, email verification api, reduce bounce rate, email deliverability, validate email programmatically, check email exists"

Email Validation API: Stop Bounce Rates Before They Kill Your Deliverability

Email marketing and transactional email are only as good as the list you're sending to. A 5% bounce rate can get your domain blacklisted. A 10% bounce rate will get your account suspended by any major ESP. And the worst part? Most of those bounces are preventable.

The solution is simple: validate emails before they enter your system. In this guide, we'll walk through how to use an Email Validation API to clean your list in real time — at signup, at import, or in bulk.

Why Email Bounce Rates Destroy Deliverability

When you send email to an address that doesn't exist, the receiving mail server returns a bounce. There are two types:

  • Hard bounces: The address doesn't exist, the domain doesn't accept email, or the mailbox is permanently unavailable
  • Soft bounces: Temporary issues — full mailbox, server down, etc.

Hard bounces are the dangerous ones. ISPs like Gmail, Outlook, and Yahoo track your bounce rate. Once you cross ~2%, they start filtering your emails to spam. At 5%+, they may block you entirely.

Most email service providers (Mailchimp, SendGrid, Postmark) will suspend your account if your bounce rate gets too high. Recovering a damaged sender reputation takes months.

What Does an Email Validation API Check?

A proper email validation API goes beyond just checking if an email has an @ sign. Here's what it actually validates:

| Check | What it does | |-------|-------------| | Syntax validation | Is the email format valid? | | Domain check | Does the domain exist and have MX records? | | Disposable detection | Is it a throwaway address (Mailinator, Guerrilla Mail, etc.)? | | Role-based detection | Is it a generic address like admin@, noreply@, info@? | | SMTP verification | Does the mailbox actually exist on the mail server? |

The SMTP verification is the most powerful — it pings the mail server directly and asks "does this mailbox exist?" without actually sending a message.

Using ToolCenter's Email Validation API

ToolCenter's Email Validation API handles all of the above in a single request. Here's how to use it:

Basic Request

curl -X POST "https://api.toolcenter.dev/v1/email-validate" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]"}'

Response

{
  "email": "[email protected]",
  "valid": true,
  "format_valid": true,
  "domain_valid": true,
  "mx_found": true,
  "disposable": false,
  "role_based": false,
  "smtp_valid": true,
  "score": 98,
  "suggestion": null
}

The score field (0–100) gives you a confidence rating. We recommend rejecting anything below 50 and flagging anything between 50–80 for review.

The suggestion field catches typos — if someone types [email protected], you'll get "suggestion": "[email protected]" so you can prompt them to correct it.

Real-World Integration Examples

Node.js — Validate at Signup

const response = await fetch('https://api.toolcenter.dev/v1/email-validate', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ email: req.body.email })
});

const result = await response.json();

if (!result.valid || result.disposable) {
  return res.status(400).json({
    error: result.disposable 
      ? 'Disposable email addresses are not allowed.' 
      : 'Please enter a valid email address.',
    suggestion: result.suggestion
  });
}

// Safe to proceed with registration
await createUser(req.body.email);

Python — Bulk List Cleaning

import requests
import csv

API_KEY = "YOUR_API_KEY"
URL = "https://api.toolcenter.dev/v1/email-validate"

valid_emails = []
invalid_emails = []

with open("email_list.csv") as f:
    reader = csv.reader(f)
    for row in reader:
        email = row[0].strip()
        
        response = requests.post(URL,
            headers={"Authorization": f"Bearer {API_KEY}"},
            json={"email": email}
        )
        result = response.json()
        
        if result["valid"] and not result["disposable"] and result["score"] >= 70:
            valid_emails.append(email)
        else:
            invalid_emails.append({
                "email": email,
                "reason": "disposable" if result["disposable"] else "invalid",
                "score": result["score"]
            })

print(f"Valid: {len(valid_emails)}, Removed: {len(invalid_emails)}")

PHP — Laravel Form Validation

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;

public function register(Request $request)
{
    $request->validate([
        'email' => 'required|email',
        'name'  => 'required|string',
    ]);

    $validation = Http::withToken(config('services.toolcenter.key'))
        ->post('https://api.toolcenter.dev/v1/email-validate', [
            'email' => $request->email
        ])->json();

    if (!$validation['valid'] || $validation['disposable']) {
        return back()->withErrors([
            'email' => $validation['suggestion'] 
                ? "Did you mean {$validation['suggestion']}?" 
                : 'Please provide a valid email address.'
        ]);
    }

    // Proceed with user creation...
}

When to Validate: A Decision Framework

Validate in real time (at signup/input):

  • Registration forms
  • Newsletter subscriptions
  • Lead capture forms
  • Checkout email fields

Validate in bulk (before campaigns):

  • Imported lists from old databases
  • Lists from lead gen tools
  • Lists you haven't emailed in 6+ months
  • Any list you purchased (please don't buy lists)

Skip validation (low risk):

  • Internal company tools where you control the user base
  • Forms where users are already authenticated

The ROI of Email Validation

Let's put some numbers on this. Assume you have a list of 50,000 emails and you're paying $0.001/email to send (typical for SendGrid/Postmark):

| Scenario | Bounces | Cost | Deliverability | |---------|---------|------|----------------| | No validation | 5,000 (10%) | $50 + reputation damage | Degraded | | With validation | ~200 (0.4%) | $50 + $15 validation cost | Healthy |

You save your sender reputation — which is worth far more than the $15 validation cost. Once your domain is blacklisted, you're looking at weeks of recovery, new domain setup, and lost revenue from emails that go to spam.

Handling Edge Cases

Role-based addresses

admin@, info@, support@, noreply@ are valid addresses but they're often not read by a real person. Whether you accept them depends on your use case:

  • B2B lead gen: You probably want them
  • Newsletter signups: Skip them — they rarely engage
if (result.role_based && useCase === 'newsletter') {
  return { error: 'Please use your personal email address.' };
}

Catch-all domains

Some domains accept all email regardless of whether the mailbox exists (they "catch all" undeliverable mail). This makes SMTP verification impossible. The API flags these with "catch_all": true. For catch-all domains, fall back to domain and syntax validation only.

International email addresses

The API handles internationalized domain names (IDN) like user@münchen.de and non-ASCII local parts. Just pass them through as UTF-8.

Best Practices

  1. Validate at entry, not at send time — the earlier you catch bad emails, the cheaper it is
  2. Show typo suggestionsgmial.comgmail.com recovers legitimate signups you'd otherwise lose
  3. Don't block role-based emails unconditionally — context matters
  4. Re-validate old lists — email addresses go stale. A list that was 95% deliverable 2 years ago might be 80% deliverable today
  5. Monitor your bounce rate continuously — even with validation, some bad addresses will slip through

Getting Started

Email Validation is available on all ToolCenter plans including the free tier (100 requests/month). The API response is fast — typically under 300ms for syntax/domain checks, up to 2 seconds when SMTP verification is included.

View the Email Validation API docs →

Start with your signup form. That's where 80% of bad emails enter your system, and it's the easiest place to add a single API call that protects your entire deliverability infrastructure.

Share this article

CM

Christian Mesa

Founder & Developer at ToolCenter

Full-stack developer from the Canary Islands, Spain. Building developer tools and APIs that simplify web development. Passionate about clean code, performance, and making complex things simple.

Try ToolCenter APIs Free

100 API calls/month free. No credit card required.

Related Posts