Email Validator
Full email validation in one call. Checks RFC 5322 syntax, performs a live MX record lookup to confirm the domain can receive mail, detects disposable addresses, returns the normalized canonical form, and suggests a correction when the domain looks like a common typo.
Overview
Use Cases
- Block undeliverable addresses at signup before they reach your mailing list
- Catch typos like gmial.com and prompt users to correct them inline
- Flag disposable addresses during registration to prevent throwaway accounts
- Store the normalized canonical address alongside the original for deduplication
Features
RFC 5322 syntax validation
Live MX DNS record lookup
Disposable domain detection (90,000+ domains)
Email normalization (lowercase, plus-tag removal, alias resolution)
Typo suggestion for common provider domains (gmail.com, yahoo.com, outlook.com, and more)
API Endpoints
Validate Email
Validates a single email address and returns a full breakdown of syntax validity, MX record status, disposable domain check, normalized form, and any typo suggestion.
POST
https://api.requiems.xyz/v1/email/validate
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
string |
Required | The email address to validate. |
Try it out
Live DemoRequest
The email address to validate.
Sending request...
Response Fields
| Field | Type | Description |
|---|---|---|
string|null |
The email address exactly as supplied in the request body; null when syntax is invalid | |
| valid | boolean |
Overall validity. True only when the address passes syntax validation and the domain has at least one MX record |
| syntax_valid | boolean |
Whether the address is syntactically valid according to RFC 5322 |
| mx_valid | boolean |
Whether the domain has at least one MX record, meaning it can receive email |
| disposable | boolean |
Whether the address uses a known disposable or temporary email domain |
| normalized | string|null |
The canonical form of the address after normalization (lowercase, plus-tag removal, alias-domain resolution). Null when syntax is invalid |
| domain | string|null |
The domain part of the address (after @). Null when syntax is invalid |
| suggestion | string |
A corrected domain name when the supplied domain looks like a typo of a well-known provider (e.g. gmial.com β gmail.com). Null when no close match is found or the domain is already correct |
Code Examples
curl -X POST https://api.requiems.xyz/v1/email/validate \
-H "requiems-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]"}'
import requests
url = "https://api.requiems.xyz/v1/email/validate"
headers = {
"requiems-api-key": "YOUR_API_KEY",
"Content-Type": "application/json"
}
payload = {"email": "[email protected]"}
response = requests.post(url, headers=headers, json=payload)
data = response.json()
result = data["data"]
print(result["valid"]) # False
print(result["suggestion"]) # "gmail.com"
const response = await fetch('https://api.requiems.xyz/v1/email/validate', {
method: 'POST',
headers: {
'requiems-api-key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({ email: '[email protected]' })
});
const { data } = await response.json();
console.log(data.valid); // false
console.log(data.suggestion); // "gmail.com"
require 'net/http'
require 'json'
uri = URI('https://api.requiems.xyz/v1/email/validate')
request = Net::HTTP::Post.new(uri)
request['requiems-api-key'] = 'YOUR_API_KEY'
request['Content-Type'] = 'application/json'
request.body = { email: '[email protected]' }.to_json
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
data = JSON.parse(response.body)['data']
puts data['valid'] # false
puts data['suggestion'] # gmail.com
Error Responses
validation_failed
The email field is missing from the request body.
bad_request
The request body is missing, not valid JSON, or contains unknown fields.
internal_error
Unexpected server error.
Frequently Asked Questions
valid is true only when both syntax_valid and mx_valid are true. An address can be syntactically correct but still return valid: false if the domain has no MX records and cannot receive mail.
No. MX record lookup confirms that the domain is configured to receive email, but it cannot verify that the specific mailbox exists without attempting delivery. For most signup and data-quality use cases, MX validation is sufficient.
The suggestion field uses Levenshtein edit distance to compare the supplied domain against a curated list of well-known providers (Gmail, Yahoo, Outlook, iCloud, ProtonMail, and others). A suggestion is returned only when the edit distance is 2 or fewer. If the domain is already in the known list, suggestion is null.
The Disposable Email API is purpose-built for high-volume disposable checking and includes batch endpoints, domain-level lookups, and a paginated list of all known disposable domains. This endpoint performs a broader single-address validation that includes disposable detection as one of several checks alongside syntax, MX, normalization, and typo suggestion.
DNS lookups typically resolve in under 100ms for well-known domains. Obscure or misconfigured domains may take longer or time out, in which case mx_valid is false.