Emails Checker API
A REST-based JSON API for real-time email verification. Validate addresses at the point of entry, before bad data reaches your database.
Getting Started
The Emails Checker API is a REST-based JSON API for verifying and validating email addresses as they enter your system. Integration is straightforward, and every address you submit gets a clear, detailed verdict.
Checks go beyond basic syntax validation. The API confirms the existence of email addresses using MX-Records and the Simple Mail Transfer Protocol (SMTP), and it determines whether a mailbox is set up to catch all incoming mail traffic.
Create a free account at emails-checker.net to obtain your API key. From there, a single GET request verifies an address from any application.
Base Endpoint
Overview
The Emails Checker API verifies email addresses through multiple layers of validation. Beyond basic syntax checks, it uses MX-Records and the Simple Mail Transfer Protocol (SMTP) to confirm that an address exists.
The API is integrated with a suite of regularly updated databases that categorize email providers into disposable (e.g., "Mailinator"), free (e.g., "Gmail", "Yahoo"), and individual domains. This categorization facilitates efficient separation and management of various types of email addresses.
Validates email format and structure
Verifies domain mail server records
Confirms mailbox existence via SMTP
API Response Objects
The API returns a consistent JSON structure across all endpoints. Below is a detailed reference of all response fields.
| Object | Description |
|---|---|
| success | Returns boolean representing API success or error |
| response | Object containing complete email details and metadata |
| Contains the exact email address requested | |
| result | Returns one of: deliverable, undeliverable, risky, unknown. Only deliverable is safe to send. |
| syntax | Returns boolean depending on whether email syntax is valid |
| mx_records | Returns boolean depending on whether MX-Records for the requested domain could be found |
| smtp_code | Returns SMTP result codes (e.g., 250) |
| catch_all | Returns boolean if the email is part of a catch-all mailbox |
| disposable | Returns boolean if the email is from a disposable provider |
| description | Human-readable reason for the email delivery status |
| user | The local part of the email (e.g., "jarvis" in
"[email protected]") |
| domain | The domain of the email (e.g., "company.com") |
| free_email | Returns boolean if the provider is free (Gmail, Yahoo) vs private domain |
| role | Returns boolean if the email is a role address
(e.g., support@, postmaster@) |
Example Response
{
"success": true,
"response": {
"email": "[email protected]",
"result": "deliverable",
"syntax": false,
"mx_records": true,
"smtp_code": "250",
"catch_all": false,
"disposable": false,
"description": "Valid Email Address.",
"user": "support",
"domain": "emails-checker.net",
"free_email": true,
"role": true
}
}
Error Codes
The API uses standard HTTP status codes to indicate the success or failure of a request. All error responses include a JSON body with details about the error.
| Status | Error Type | Description |
|---|---|---|
| 400 | bad_request |
The request was malformed or missing required parameters. Verify that all required query parameters are provided and correctly formatted. |
| 401 | unauthorized |
Authentication failed. The provided API key is missing, invalid, or has been revoked. |
| 402 | payment_required |
Your account has insufficient credits to complete this request. Upgrade your plan or purchase additional credits. |
| 403 | forbidden |
Your account is inactive or suspended. Contact support to resolve account status issues. |
| 404 | not_found |
The requested endpoint or resource does not exist. Verify the API endpoint URL. |
| 422 | unprocessable_entity |
The request was well-formed but contains semantically invalid data (e.g., missing email parameter). |
| 429 | too_many_requests |
Rate limit exceeded. Implement exponential backoff and retry after the specified interval. |
| 500 | internal_server_error |
An unexpected error occurred on the server. Contact support with the request details. |
400Bad Request
Missing required parameters or invalid data.
{
"success": false,
"response": {
"code": 400,
"type": "bad_request",
"error": "Missing required parameter: email"
}
}
401Unauthorized
Invalid or missing API key.
{
"success": false,
"response": {
"code": 401,
"type": "unauthorized",
"error": "Invalid or missing API key."
}
}
402Payment Required
Insufficient credits.
{
"success": false,
"response": {
"code": 402,
"type": "payment_required",
"error": "Insufficient credits. Please upgrade your plan."
}
}
429Too Many Requests
Rate limit exceeded.
{
"success": false,
"response": {
"code": 429,
"type": "too_many_requests",
"error": "Rate limit exceeded. Please retry after 60 seconds."
}
}
Check Credits
The /credits endpoint returns
the current available balance of your account.
Query Parameters
| Parameter | Description |
|---|---|
| access_keystringrequired | The API access key from Emails Checker dashboard. |
Response Parameters
| Parameter | Description |
|---|---|
| success | boolean True if request succeeded, false otherwise. |
| response | Object containing request details. |
| credits | Your current available credit balance. |
Code Examples
HttpURLConnection conn = (HttpURLConnection) new URL(
"https://api.emails-checker.net/credits?access_key=" + accessKey
).openConnection();
conn.setRequestMethod("GET");
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
String response = new BufferedReader(
new InputStreamReader(conn.getInputStream())
).lines().reduce("", String::concat);
return new JSONObject(response).getJSONObject("response");
}
Example Response
{
"success": true,
"response": {
"credits": "100"
}
}
Server Time
The /time endpoint returns the
current server time. Useful for verifying that your API key is valid and that the service is
operational. It can also be used to synchronize your application's clock with the server.
Query Parameters
| Parameter | Description |
|---|---|
| access_keystringrequired | The API access key from Emails Checker dashboard. |
Response Parameters
| Parameter | Description |
|---|---|
| success | boolean True if request succeeded, false otherwise. |
| response | Object containing request details. |
| time | The current server time in ISO 8601 format. |
Code Examples
HttpURLConnection conn = (HttpURLConnection) new URL(
"https://api.emails-checker.net/time?access_key=" + accessKey
).openConnection();
conn.setRequestMethod("GET");
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
String response = new BufferedReader(
new InputStreamReader(conn.getInputStream())
).lines().reduce("", String::concat);
return new JSONObject(response).getJSONObject("response");
}
Example Response
{
"success": true,
"response": {
"time": "2024-01-15T10:30:00+00:00"
}
}
Single Validation
Perform a single email validation request.
The /check endpoint helps you verify if an email address is valid. When you use
this endpoint, it performs a series of checks to make sure the email address is formatted
correctly, actually exists, and can receive emails.
If you are going to use this API within a sign-up form, you must consider Deliverable, Accept-all and Unknown statuses as valid, so you do not miss out on any sign-ups.
Query Parameters
| Parameter | Description |
|---|---|
| emailstringrequired | The email address you want to verify. |
| access_keystringrequired | The API access key from Emails Checker dashboard. |
Response Parameters
| Parameter | Description |
|---|---|
| success | boolean True if request succeeded, false otherwise. |
| response | Object containing all email validation details. Check Response Objects for field details. |
Code Examples
HttpURLConnection conn = (HttpURLConnection) new URL(
"https://api.emails-checker.net/check?access_key=" + accessKey + "&email=" + email
).openConnection();
conn.setRequestMethod("GET");
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
String response = new BufferedReader(
new InputStreamReader(conn.getInputStream())
).lines().reduce("", String::concat);
return new JSONObject(response).getJSONObject("response");
}
Example Response
{
"success": true,
"response": {
"email": "[email protected]",
"result": "deliverable",
"syntax": false,
"mx_records": true,
"smtp_code": "250",
"catch_all": false,
"disposable": false,
"description": "Valid Email Address.",
"user": "support",
"domain": "emails-checker.net",
"free_email": true,
"role": true
}
}