Real Time Email Verification API

Our Email Validation Real-Time API is simply based on the JSON web service, which allows developers to verify individual email addresses on-demand as a user enters them in a web form or mobile application.

MyEmailVerifier API is a powerful tool designed to verify email addresses efficiently and accurately. It offers various functionalities to validate single emails and bulk files containing email lists. This documentation provides detailed information on API endpoints, request parameters, response formats, and additional features to assist users in integrating MyEmailVerifier seamlessly into their applications.

URL for API info: https://client.myemailverifier.com/apisettings (required login)

API Responses

Our API divides email statuses in 5 ways.

  • Valid: Valid email represents that account is real and available at the given domain
  • Invalid: Not a real email
  • Unknown: When we cannot verify valid or invalid due to some reason. Generally most of the time a domain didn’t respond quick enough.
  • Catch All: The domains which respond to every verification in the affirmative, therefore they cannot be fully verified.
  • Grey-listed: This domain doesn’t respond in the first attempt, It is advisable to retry after 5-10 hours.

Optional Inputs

  • Address: provided email.
  • Status: Can be either Valid, Invalid, Grey-listed or Unknown
  • StatusCode: SMTP server status code for advance users
  • Disposable_Domain: If the domain is disposable
  • Free_Domain: If email is not a business address
  • Greylisted: Server will not respond properly in the first attempt. Frequent multiple attempts are not advisable.
  • Diagnosis: Helpful information about Invalid address

Verify an Email - Real-Time Verification API

API - Validate Single Email Documentation

Looking to validate emails via our email validation API? Here is an explanation of how you can use our Single Email Validation through an API.

EndPoint

GET:

https://client.myemailverifier.com/verifier/validate_single/[email protected]/API_KEY

NOTE: <API_KEY> - You can find your API key from your client area - API section.

Example Request
curl "https://client.myemailverifier.com/verifier/validate_single/[email protected]/API_KEY"
Example Response
 {
        "Address":"[email protected]",
        "catch_all": "false",
        "Status":"Valid",
        "Disposable_Domain":"false",
        "Role_Based":"true"
        "Free_Domain":"false",
        "Greylisted":"false",
        "Diagnosis":"Mailbox Exists and Active"
    }

Status Code: 200

Other Response:

​

API - Get Credits Documentation

Here is an explanation of how you can use our Get Credits API

EndPoint

GET:

https://client.myemailverifier.com/verifier/getcredits/API_KEY

NOTE: <API_KEY> - You can find your API key from your client area - API section.

Example Request
curl "https://client.myemailverifier.com/verifier/getcredits/API_KEY"

Example Response

{
	Credits: "7800"
}

API - Upload File for bulk verification Documentation

Here is an explanation of how to validate a file using an API. You can upload a TXT/CSV/XLSX file by referring to an example given below:

EndPoint
https://client.myemailverifier.com/verifier/upload_file

POST Variable: api_key (string), filename (fileupload)

file: The bulk file containing email addresses. Allowed formats are TXT, CSV, and XLSX.

Example Request

if (function_exists('curl_file_create'))
    {
        $file = curl_file_create('c:\temp\emails.txt');
    }
    else
    {
        $file = '@c:\tempemails.txt';
    }
    $data['filename'] = $file;
    $data['api_key'] = 'API_KEY';
    $url = 'https://client.myemailverifier.com/verifier/upload_file/';
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    $file_id = curl_exec($ch); //return FILE ID to get file status and download url
    curl_close($ch); 

Example Response

{
	"status": true,
	"file_name": "emails.txt",
	"file_id": 1670,
	"msg": "File uploaded successfully."
}

Status Code: 200

Other Response

​

API - Get File Info Documentation

We assume that you have uploaded a file using our File Upload API. Now, here is an explanation of how you can get the real-time status, live progress, result counts, and download links for your uploaded file using our Get File API.

Poll this endpoint every 30–60 seconds while a file is processing. Server data updates approximately every 30 seconds to 1 minute. Stop polling when status_label === "completed".

EndPoint

GET:

https://client.myemailverifier.com/verifier/file_info/API_KEY/FILE_ID

NOTE1: <API_KEY> - You can find your API key from your client area - API section.

NOTE2: <FILE_ID> - You will get your file ID in the response of the Upload File API.

Example Request
curl "https://client.myemailverifier.com/verifier/file_info/YOUR_API_KEY/1669"
Example Response
{
  "status": true,
  "file": {
    "upload_id": 1669,
    "user_id": 54838,
    "filename": "my-list.csv",
    "created_at": "2026-06-19T10:22:00.000000Z",

    "ready_for_download": 1,
    "status": "finished",
    "status_label": "completed",
    "downloadable": true,

    "progress_percent": 100,
    "total_emails": 5000,
    "processed_res": 5000,

    "phase": "Validating emails",
    "percent_phase1": 100,
    "percent_phase2": 100,
    "unique_domains": 412,
    "domains_checked_p1": 412,
    "domains_checked_p2": 412,

    "total": 5000,
    "valid": 3800,
    "invalid": 750,
    "catchall": 320,
    "unknown": 80,
    "duplicates": 50,
    "spam_trap": 12,
    "toxic_domains": 38,
    "credit_used": 4950,

    "result_counts": {
      "Valid": 3800,
      "Invalid": 750,
      "CatchAll": 320,
      "Unknown": 80,
      "Spamtrap": 12,
      "Disposable": 38,
      "Duplicate": 50
    },

    "download_all_csv":      "https://client.myemailverifier.com/downloadreport/csv/...",
    "download_valid_csv":    "https://client.myemailverifier.com/downloadreport/validcsv/...",
    "download_invalid_csv":  "https://client.myemailverifier.com/downloadreport/invalidcsv/...",
    "download_catchall_csv": "https://client.myemailverifier.com/downloadreport/catchallcsv/...",
    "download_unknown_csv":  "https://client.myemailverifier.com/downloadreport/unknowncsv/...",
    "download_xls":          "https://client.myemailverifier.com/downloadreport/xls/...",

    "file_path":             "https://client.myemailverifier.com/downloadreport/csv/...",
    "xls_file_path":         "https://client.myemailverifier.com/downloadreport/xls/..."
  }
}
Complete Field Reference

Identity

  • upload_id (integer): Unique file ID
  • user_id (integer): User account ID (backward-compatible field)
  • filename (string): User-supplied file name
  • created_at (string): ISO 8601 upload timestamp

Status

  • ready_for_download (integer): Raw status β€” 0 = queued, 1 = completed, 3 = processing
  • status (string): Raw status string from server (e.g. "finished", "In Queue")
  • status_label (string): Normalised β€” "queued" | "processing" | "completed". Use this for logic.
  • downloadable (boolean): true only when ready_for_download === 1. Check this before using download URLs.

Overall Progress

  • progress_percent (integer): Main progress bar value, 0–100. Computed as (valid + invalid + unknown + catchall) / total_emails Γ— 100. Hard-capped at 100. Forced to 100 when complete.
  • total_emails (integer): Total email lines minus blank lines β€” the correct denominator
  • processed_res (integer): Emails verified so far

Note: spam_trap and toxic_domains are sub-breakdowns of invalid. They are NOT added separately into processed_res to avoid exceeding total_emails.

3-Phase Progress

The verification engine runs in three sequential phases. Display these as sub-progress bars or status labels alongside the main progress_percent.

  • phase (string): Current phase label β€” "Blacklisted domain check" β†’ "Checking catchall domains" β†’ "Validating emails"
  • percent_phase1 (integer): Phase 1 (domain blacklist / MX record check), 0–100
  • percent_phase2 (integer): Phase 2 (catch-all domain detection), 0–100
  • unique_domains (integer): Total unique domains in the file
  • domains_checked_p1 (integer): Domains processed in Phase 1
  • domains_checked_p2 (integer): Domains processed in Phase 2

Result Counts

  • total (integer): Total email addresses in file
  • valid (integer): Confirmed deliverable mailboxes
  • invalid (integer): Undeliverable (includes spam_trap + toxic_domains sub-types)
  • catchall (integer): Catch-all domain β€” server accepts all email
  • unknown (integer): Could not be determined (timeout / greylisted)
  • duplicates (integer): Duplicate email lines found
  • spam_trap (integer): Spam trap addresses detected (sub-type of invalid)
  • toxic_domains (integer): Disposable / toxic domain addresses (sub-type of invalid)
  • credit_used (integer): Credits consumed for this file

result_counts Object (for charts)

Ready-to-use for pie or bar chart rendering. Keys match the web dashboard chart labels: Valid, Invalid, CatchAll, Unknown, Spamtrap, Disposable, Duplicate.

Per-Category Download URLs

All URLs are pre-built β€” no construction needed. Each is null if that category has zero results. Only use download URLs when downloadable === true.

  • download_all_csv: All results combined (always present)
  • download_valid_csv: Valid emails only
  • download_invalid_csv: Invalid emails only
  • download_catchall_csv: Catch-all emails only
  • download_unknown_csv: Unknown emails only
  • download_xls: Full Excel report
  • file_path: Alias for download_all_csv (backward-compatible)
  • xls_file_path: Alias for download_xls (backward-compatible)
status_label State Machine
upload response received
        ↓
  status_label = "queued"        (ready_for_download = 0)
        ↓ processing begins
  status_label = "processing"    (ready_for_download = 3)
        ↓ all emails done
  status_label = "completed"     (ready_for_download = 1)
                                  β†’ downloadable = true
                                  β†’ progress_percent = 100
3-Phase Verification Flow
Phase 1 β€” Domain Blacklist & MX Check
  ↓  (percent_phase1: 0β†’100)
Phase 2 β€” Catch-All Domain Detection
  ↓  (percent_phase2: 0β†’100)
Phase 3 β€” Individual SMTP Email Validation
       (progress_percent: 0β†’100, phase = "Validating emails")
Polling Example β€” JavaScript Progress Bar
async function trackBulkVerification(apiKey, fileId) {
  const url = `https://client.myemailverifier.com/verifier/file_info/${apiKey}/${fileId}`;

  while (true) {
    const res = await fetch(url);
    const data = await res.json();

    if (!data.status) { console.error('API error:', data.message); break; }

    const f = data.file;

    // Main progress bar (0–100)
    document.getElementById('progress-bar').style.width = f.progress_percent + '%';
    document.getElementById('progress-label').textContent = f.progress_percent + '%';

    // Phase sub-progress
    if (f.phase) document.getElementById('phase-label').textContent = f.phase;
    if (f.percent_phase1 < 100) showPhaseBar('phase1-bar', f.percent_phase1);
    else if (f.percent_phase2 < 100) showPhaseBar('phase2-bar', f.percent_phase2);

    // Live counts
    document.getElementById('count-valid').textContent    = f.valid;
    document.getElementById('count-invalid').textContent  = f.invalid;
    document.getElementById('count-catchall').textContent = f.catchall;
    document.getElementById('count-unknown').textContent  = f.unknown;

    if (f.status_label === 'completed') {
      renderResultChart(f.result_counts);
      if (f.download_valid_csv)    showDownloadBtn('valid',    f.download_valid_csv);
      if (f.download_invalid_csv)  showDownloadBtn('invalid',  f.download_invalid_csv);
      if (f.download_catchall_csv) showDownloadBtn('catchall', f.download_catchall_csv);
      if (f.download_unknown_csv)  showDownloadBtn('unknown',  f.download_unknown_csv);
      if (f.download_xls)          showDownloadBtn('xls',      f.download_xls);
      showDownloadBtn('all', f.download_all_csv);
      break;
    }

    // Wait 30 seconds before next poll (server updates every 30s–1min)
    await new Promise(resolve => setTimeout(resolve, 30000));
  }
}
Chart.js / ApexCharts Integration

When status_label === "completed", the result_counts object is ready to pass directly to any chart library.

// Chart.js β€” pie chart
new Chart(document.getElementById('resultsChart'), {
  type: 'pie',
  data: {
    labels: Object.keys(f.result_counts),   // ['Valid','Invalid','CatchAll',...]
    datasets: [{
      data: Object.values(f.result_counts),
      backgroundColor: [
        '#22c55e', // Valid      β€” green
        '#ef4444', // Invalid    β€” red
        '#f59e0b', // CatchAll   β€” amber
        '#6b7280', // Unknown    β€” gray
        '#8b5cf6', // Spamtrap   β€” purple
        '#f97316', // Disposable β€” orange
        '#64748b'  // Duplicate  β€” slate
      ]
    }]
  }
});

// ApexCharts β€” donut chart
new ApexCharts(document.getElementById('resultsChart'), {
  series: Object.values(f.result_counts),
  labels: Object.keys(f.result_counts),
  chart: { type: 'donut' },
  colors: ['#22c55e','#ef4444','#f59e0b','#6b7280','#8b5cf6','#f97316','#64748b']
}).render();
Error Responses
{ "status": false, "message": "Invalid API Key" }        // 401
{ "status": false, "message": "Unauthorized Request" }   // 403
{ "status": false, "message": "File not found" }         // 404

Authentication Errors

Authentication: To utilize the MyEmailVerifier API, users must acquire an API key. This key serves for authentication purposes and must be included in the request headers for every API call.

Unauthorized Request

  • Status code: 200
  • Response Status: false
  • Response Message: Unauthorized Request

Invalid API Key

  • Response Status: false
  • Response Message: Invalid API Key

Rate Limit

Rate Limit: 30 requests per minute

Status Code: 429

Example Response
 {
    "status": false,
    "message": "Too many requests. Please try again later.",
    "retryAfter": 60
}

Additional Information

Protect your API Key: Your API Key is required to use our Email verification API. Store it in a safe place. You can change it at any time. You are responsible for the cost of all verifications processed with it.

If you have any further queries kindly contact us.

Have Questions About Our Free Email Extractor?

We're here to provide you with the anrs and support you need to make the most of this powerful tool. Explore the frequently asked questions below.

If you're looking for a reliable email verifier, consider using tools like MyEmailVerifier, ZeroBounce, NeverBounce, Hunter, and Mailgun. These services provide accurate email validation, helping you maintain a clean email list and improve deliverability rates.

Yes, many email list verifiers are designed to handle bulk email validation, making it easier to clean large lists in one go and maintain a healthy sender score.

The main benefits of a real-time email list verifier include reduced bounce rates, improved sender reputation, increased email deliverability, and higher engagement with your audience.

Yes, most email list verifiers, like MyEmailVerifier, offer bulk email validation features. This allows you to clean thousands of email addresses in one go, ensuring your list is free of invalid or risky addresses.

Email validation works by using an email checker to verify the syntax, domain, and mailbox status of an email address. It checks if the email format is correct, if the domain exists, and if the mailbox is active, ensuring only valid addresses are retained in your list.

The fastest email validation API offers bulk verification capabilities to process multiple emails simultaneously. Tools like MyEmailVerifier provide quick and efficient validation, ensuring high-speed checks for large lists.

ο»Ώ
MyEmailVerifier

Copyright Β© 2026 Β· MyEmailVerifier Β· All Rights Reserved