Logo API Documentation

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.

💡
Quick Start

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

GET https://api.emails-checker.net/time

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.

Syntax Check

Validates email format and structure

MX Records

Verifies domain mail server records

SMTP Check

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
email 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

JSON
{
    "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.

JSON
{
    "success": false,
    "response": {
        "code": 400,
        "type": "bad_request",
        "error": "Missing required parameter: email"
    }
}

401Unauthorized

Invalid or missing API key.

JSON
{
    "success": false,
    "response": {
        "code": 401,
        "type": "unauthorized",
        "error": "Invalid or missing API key."
    }
}

402Payment Required

Insufficient credits.

JSON
{
    "success": false,
    "response": {
        "code": 402,
        "type": "payment_required",
        "error": "Insufficient credits. Please upgrade your plan."
    }
}

429Too Many Requests

Rate limit exceeded.

JSON
{
    "success": false,
    "response": {
        "code": 429,
        "type": "too_many_requests",
        "error": "Rate limit exceeded. Please retry after 60 seconds."
    }
}

Check Credits

GET https://api.emails-checker.net/credits?access_key=access_key

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

Java
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

JSONHTTP 200
{
    "success": true,
    "response": {
        "credits": "100"
    }
}

Server Time

GET https://api.emails-checker.net/time?access_key=access_key

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

Java
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

JSONHTTP 200
{
    "success": true,
    "response": {
        "time": "2024-01-15T10:30:00+00:00"
    }
}

Single Validation

GET https://api.emails-checker.net/check?email=email&access_key=access_key

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.

🚧
Important Note

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.
Try It Out
Simulate an API call to see how the response looks. No actual request is made.

Code Examples

Java
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

JSONHTTP 200
{
    "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
    }
}