Skip to main content
GET
/
v1
Email Validation API
curl --request GET \
  --url https://emailvalidation.cleariflow.com/v1
{
  "email": "johnsmith@gmail.com",
  "autocorrect": "",
  "deliverability": "DELIVERABLE",
  "quality_score": 0.9,
  "is_valid_format": {
    "value": true,
    "text": "TRUE"
  },
  "is_free_email": {
    "value": true,
    "text": "TRUE"
  },
  "is_disposable_email": {
    "value": false,
    "text": "FALSE"
  },
  "is_role_email": {
    "value": false,
    "text": "FALSE"
  },
  "is_catchall_email": {
    "value": false,
    "text": "FALSE"
  },
  "is_mx_found": {
    "value": true,
    "text": "TRUE"
  },
  "is_smtp_valid": {
    "value": true,
    "text": "TRUE"
  }
}

Quick Start

To make a request, provide your unique api_key and the email you want to check—nothing else is required:
https://emailvalidation.cleariflow.com/v1/
? api_key = YOUR_UNIQUE_API_KEY
& email = johnsmith@gmail.com
The request succeeds and returns all available insights for the address:
{
  "email": "johnsmith@gmail.com",
  "autocorrect": "",
  "deliverability": "DELIVERABLE",
  "quality_score": 0.9,
  "is_valid_format": {
    "value": true,
    "text": "TRUE"
  },
  "is_free_email": {
    "value": true,
    "text": "TRUE"
  },
  "is_disposable_email": {
    "value": false,
    "text": "FALSE"
  },
  "is_role_email": {
    "value": false,
    "text": "FALSE"
  },
  "is_catchall_email": {
    "value": false,
    "text": "FALSE"
  },
  "is_mx_found": {
    "value": true,
    "text": "TRUE"
  },
  "is_smtp_valid": {
    "value": true,
    "text": "TRUE"
  }
}

Request parameters

api_key
string
required
Your personal API credential. Keys are scoped per Cleariflow product, so an Email Validation key will not authorize requests to, for example, the IP Geolocation API.
email
String
required
The email address you want to verify.
auto_correct
Boolean
Optional flag to disable autocorrection. Set auto_correct=false to turn it off. It is enabled by default.

Response parameters

Responses are returned as compact, standardized JSON.
email
String
Echoes the email submitted in the request.
auto_correct
String
Suggested correction when a likely typo is detected (e.g., johnsmith@gmial.com => johnsmith@gmail.com). Empty if no suggestion.
deliverability
String
Cleariflow’s assessment of whether the address can receive mail. Possible values: DELIVERABLE, UNDELIVERABLE, UNKNOWN.
quality_score
Float
A decimal score (0.01–0.99) indicating our confidence in the address’s quality and deliverability.
is_valid_format
Boolean
True when the address matches the standard pattern local@domain.tld. Missing elements or invalid characters yield false.
is_free_email
Boolean
True if the domain belongs to a free email provider (e.g., Gmail, Yahoo).
is_disposable_email
Boolean
True if the domain is on our list of disposable/temporary inbox providers (e.g., Mailinator, Yopmail).
is_role_email
Boolean
True if the local part appears to be a role account rather than an individual, e.g., team@, sales@, info@.
is_catchall_email
Boolean
True if the domain is configured as a catch‑all. Only available on paid plans; returns null/UNKNOWN on free plans.
is_mx_found
Boolean
True when MX records exist for the domain. Only available on paid plans; returns null/UNKNOWN on free plans.
is_smtp_valid
Boolean
True if the SMTP verification succeeds. If SMTP fails but other checks pass, the result may be UNKNOWN. We advise against blocking signups or form submissions solely on SMTP failures. Only available on paid plans; returns null/UNKNOWN on free plans.

Request examples

Example: likely misspelling

This example shows a request where a probable typo is detected in the submitted address. Even when a likely misspelling is found, all other checks (e.g., free email, disposable domain) are performed against the originally submitted address—not the suggested correction.
https://emailvalidation.cleariflow.com/v1/
? api_key = YOUR_UNIQUE_API_KEY
& email = johnsmith@gmial.con
A successful response looks like:
{
  "email": "johnsmith@glmai.com",
  "autocorrect": "johnsmith@gmail.com",
  "deliverability": "UNDELIVERABLE",
  "quality_score": 0.0,
  "is_valid_format": {
    "value": true,
    "text": "TRUE"
  },
  "is_free_email": {
    "value": false,
    "text": "FALSE"
  },
  "is_disposable_email": {
    "value": false,
    "text": "FALSE"
  },
  "is_role_email": {
    "value": false,
    "text": "FALSE"
  },
  "is_catchall_email": {
    "value": false,
    "text": "FALSE"
  },
  "is_mx_found": {
    "value": false,
    "text": "FALSE"
  },
  "is_smtp_valid": {
    "value": false,
    "text": "FALSE"
  }
}

Example: invalid format

This example demonstrates an address that fails basic formatting. When is_valid_format is false, subsequent checks (e.g., is_free_email, is_role_email) are skipped and reported as false.
https://emailvalidation.cleariflow.com/v1/
? api_key = YOUR_UNIQUE_API_KEY
& email = johnsmith
A successful response looks like:
{
  "email": "johnsmith",
  "autocorrect": "",
  "deliverability": "UNDELIVERABLE",
  "quality_score": 0.0,
  "is_valid_format": {
    "value": false,
    "text": "FALSE"
  },
  "is_free_email": {
    "value": false,
    "text": "FALSE"
  },
  "is_disposable_email": {
    "value": false,
    "text": "FALSE"
  },
  "is_role_email": {
    "value": false,
    "text": "FALSE"
  },
  "is_catchall_email": {
    "value": false,
    "text": "FALSE"
  },
  "is_mx_found": {
    "value": false,
    "text": "FALSE"
  },
  "is_smtp_valid": {
    "value": false,
    "text": "FALSE"
  }
}

Bulk upload (CSV)

Prefer not to call the API directly? Use the CSV bulk uploader—the results will be emailed to you once processing finishes. When uploading a CSV, follow these guidelines:
  • Place the email addresses in the first column.
  • Delete any blank rows.
  • Use one address per row.
  • Limit files to a maximum of 50,000 rows.

Response and error codes

Errors are returned in JSON with a code and human‑readable description. Common codes are listed below.
CodeTypeDetails
200OKRequest completed successfully.
400Bad requestMalformed or invalid request.
401UnauthorizedAuthentication failed—usually a missing or invalid API key.
422Quota reachedQuota exhausted (e.g., insufficient credits on free plans).
429Too many requestsRate limit exceeded (free plans allow up to 1 request/second).
500Internal server errorUnexpected error on our side.
503Service unavailableService temporarily unavailable.

Other notes

Billing note: Each email evaluated consumes one credit per request—regardless of outcome. Submitting an invalid address (e.g., “fda3346ds”) still counts as one credit.