Validate email addresses in real-time with MX record checking, disposable domain detection, and role account identification.
https://emailvalidation.ewabeachwebcreations.com
All API requests (except free tier) require an API key passed in the X-API-Key header:
curl -X POST https://emailvalidation.ewabeachwebcreations.com/api/validate \\
-H "X-API-Key: your_a...ere" \\
-H "Content-Type: application/json" \\
-d '{"email": "user@gmail.com"}'
Validate a single email address. Requires X-API-Key header.
Request Body
{
"email": "test@example.com"
}
Response
{
"email": "test@example.com",
"is_valid": true,
"reason": null,
"mx_record": "mail.example.com",
"is_disposable": false,
"is_role_account": false,
"score": 95
}
Upload a CSV file with one email per line (first column) for bulk validation. Requires X-API-Key header.
Request — multipart form with field name file
curl -X POST https://emailvalidation.ewabeachwebcreations.com/api/validate/bulk \
-H "X-API-Key: YOUR_API_KEY" \
-F "file=@emails.csv"
Response
{
"total": 150,
"valid_count": 142,
"invalid_count": 8,
"processing_time_ms": 234,
"results": [...]
}
Free demo validation — no API key required. Rate limited to 3 requests/minute/IP.
Get the Stripe publishable key and pricing plans.
Create a Stripe Checkout Session for subscription.
Request Body
{
"plan": "pro"
}
Response
{
"session_id": "cs_test_...",
"url": "https://checkout.stripe.com/..."
}
Create a sandbox API key (no payment required).
Request Body
{
"name": "My App Key",
"plan": "pro"
}
Regenerate an API key. Old key is invalidated.
Request Body
{
"api_key": "ev_..."
}
Usage dashboard showing API key stats and recent validations.
Get recent usage data for a specific API key prefix.
Landing page with pricing info.
This documentation page.
| Field | Type | Description |
|---|---|---|
| string | The email address that was validated | |
| is_valid | boolean | true if the email passes all checks |
| reason | string|null | Failure reason if not valid, otherwise null |
| mx_record | string|null | The domain's MX server hostname, or null |
| is_disposable | boolean | Whether the domain is a known disposable/temp email provider |
| is_role_account | boolean | Whether the local part is a role account (admin, info, etc.) |
| score | integer | Confidence score 0-100 |
| Code | Meaning |
|---|---|
| 402 | Payment Required - valid API key required |
| 422 | Validation error - email field is required |
| 400 | Bad request - invalid JSON or missing email field |
curl -X POST https://emailvalidation.ewabeachwebcreations.com/api/validate \\
-H "X-API-Key: *** \\
-H "Content-Type: application/json" \\
-d '{"email": "user@gmail.com"}'
import requests
resp = requests.post(
"https://emailvalidation.ewabeachwebcreations.com/api/validate",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"email": "user@gmail.com"}
)
print(resp.json())
fetch("https://emailvalidation.ewabeachwebcreations.com/api/validate", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({ email: "user@gmail.com" })
})
.then(r => r.json())
.then(console.log);
| Tier | Rate | Price |
|---|---|---|
| Free | 100 validations/month | $0 |
| Starter | 5,000 validations/month | $29/mo |
| Pro | 50,000 validations/month | $99/mo |
| Enterprise | Unlimited validations | $299/mo |
| Pay As You Go | Per-validation credits | 0.5¢/validation |
Contact support@ewabeachwebcreations.com for questions or custom plans.