Loading…
Integrate our powerful email validation service into your applications with our RESTful API. Get real-time validation results with comprehensive data from multiple providers.
Our Email Validation API provides real-time email verification using multiple premium providers including CatchAll, MillionVerifier, and REOON. Get started in minutes with our simple REST API.
API key authentication with HTTPS encryption
Average response time under 2 seconds
Multiple providers for maximum accuracy
https://clearmiq.com/apiAll API requests require authentication using an API key. Include your API key in the Authorization header:
Authorization: Bearer YOUR_API_KEYNote: Keep your API key secure and never expose it in client-side code. API keys should only be used in server-to-server communications.
/api/validateValidate a single email address and get comprehensive validation results.
{
"email": "test@example.com"
}curl -X POST "https://clearmiq.com/api/validate" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"email": "test@example.com"
}'/api/validate/bulkValidate multiple email addresses in a single request. Supports up to 1000 emails per request.
{
"emails": [
"user1@example.com",
"user2@test.com",
"user3@domain.org"
]
}curl -X POST "https://clearmiq.com/api/validate/bulk" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"emails": [
"user1@example.com",
"user2@test.com",
"user3@domain.org"
]
}'// Using fetch API
const validateEmail = async (email) => {
try {
const response = await fetch('https://clearmiq.com/api/validate', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({ email })
});
const result = await response.json();
console.log('Validation result:', result);
return result;
} catch (error) {
console.error('Validation failed:', error);
}
};
// Validate single email
validateEmail('test@example.com');import requests
import json
def validate_email(email, api_key):
url = "https://clearmiq.com/api/validate"
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
data = {'email': email}
try:
response = requests.post(url, headers=headers, json=data)
response.raise_for_status()
return response.json()
except requests.RequestException as e:
print(f'Validation failed: {e}')
return None
# Example usage
result = validate_email('test@example.com', 'YOUR_API_KEY')
print(json.dumps(result, indent=2))<?php
function validateEmail($email, $apiKey) {
$url = "https://clearmiq.com/api/validate";
$data = json_encode(['email' => $email]);
$options = [
'http' => [
'header' => [
'Content-Type: application/json',
'Authorization: Bearer ' . $apiKey
],
'method' => 'POST',
'content' => $data
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
return json_decode($result, true);
}
// Example usage
$result = validateEmail('test@example.com', 'YOUR_API_KEY');
echo json_encode($result, JSON_PRETTY_PRINT);
?>const axios = require('axios');
class EmailValidator {
constructor(apiKey) {
this.apiKey = apiKey;
this.baseUrl = 'https://clearmiq.com';
}
async validateSingle(email) {
try {
const response = await axios.post(`${this.baseUrl}/api/validate`, {
email: email
}, {
headers: {
'Authorization': `Bearer ${this.apiKey}`,
'Content-Type': 'application/json'
}
});
return response.data;
} catch (error) {
throw new Error(`Validation failed: ${error.message}`);
}
}
async validateBulk(emails) {
try {
const response = await axios.post(`${this.baseUrl}/api/validate/bulk`, {
emails: emails
}, {
headers: {
'Authorization': `Bearer ${this.apiKey}`,
'Content-Type': 'application/json'
}
});
return response.data;
} catch (error) {
throw new Error(`Bulk validation failed: ${error.message}`);
}
}
}
// Example usage
const validator = new EmailValidator('YOUR_API_KEY');
// Single email validation
validator.validateSingle('test@example.com')
.then(result => console.log(result))
.catch(error => console.error(error));
// Bulk email validation
validator.validateBulk(['email1@test.com', 'email2@test.com'])
.then(results => console.log(results))
.catch(error => console.error(error));{
"success": true,
"email": "test@example.com",
"isValid": true,
"status": "valid",
"confidence": 0.95,
"provider": "millionverifier",
"responseTime": 1250,
"details": {
"syntax": true,
"domain": "example.com",
"mx": true,
"disposable": false,
"role": false
},
"rawResponse": {
"result_code": 1,
"quality_score": 95,
"syntax_check": true,
"domain_check": true,
"mx_check": true,
"smtp_check": true,
"deliverable": true,
"disposable_domains": false,
"free_email": false,
"catch_all": false,
"accept_all": false,
"honeypot": false,
"blacklisted": false
}
}successBoolean indicating if the validation was successfulisValidBoolean indicating if the email is valid and deliverablestatusOverall status: "valid", "invalid", "risky", or "unknown"confidenceConfidence score between 0 and 1providerWhich validation provider was useddetailsDetailed validation checks and domain informationrawResponseRaw response data from the validation provider{
"success": true,
"results": [
{
"email": "valid@example.com",
"isValid": true,
"status": "valid",
"confidence": 0.95,
"provider": "catchall",
"details": {
"syntax": true,
"domain": "example.com",
"mx": true,
"disposable": false,
"role": false
}
},
{
"email": "invalid@fake-domain.xyz",
"isValid": false,
"status": "invalid",
"confidence": 0.1,
"provider": "reoon",
"details": {
"syntax": true,
"domain": "fake-domain.xyz",
"mx": false,
"disposable": true,
"role": false
}
}
],
"summary": {
"total": 2,
"valid": 1,
"invalid": 1,
"risky": 0
}
}The API uses conventional HTTP status codes to indicate success or failure of requests.
The request was successful
The request was invalid or missing required parameters
Invalid or missing API key
Rate limit exceeded
An error occurred on our servers
{
"success": false,
"error": {
"code": "INVALID_EMAIL",
"message": "The provided email address is not valid",
"details": "Email format validation failed"
}
}API requests are rate limited to ensure fair usage and system stability.
Rate Limit Headers: Each response includes rate limit information in the headers:
X-RateLimit-Limit - The rate limit ceilingX-RateLimit-Remaining - Requests remaining in current windowX-RateLimit-Reset - Time when the rate limit resetsHave questions about our API? We're here to help you get started.