> ## Documentation Index
> Fetch the complete documentation index at: https://docs.loqate.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Email Validation Quick Start Guide for Individual Validation

> Get started with Email Validation. Verify email addresses by checking syntax, domain validity, and mailbox existence to reduce bounce rates.

**Email Validation verifies email addresses by checking syntax, domain validity, and mailbox existence to ensure emails reach real recipients.**

***

## Coverage

* **Global:** Validates email addresses worldwide with 97% accuracy for mailbox verification
* **Domain verification:** Checks if domains can send and receive emails
* **Mailbox validation:** Pings mailboxes to verify they accept emails at the specified account
* **Risk assessment:** Identifies disposable, temporary, role-based, and high-risk email addresses

## Available Endpoints

Email Validation provides two primary API endpoints:

* [**Individual Validate**](/api-reference/email-validation/individual) - Validate a single email address in real-time
* [**Batch Validate**](/api-reference/email-validation/batch-validate) - Validate multiple email addresses in a single request

## Getting Started

1. [Create an API key](https://docs.loqate.com/loqate-basics/create-an-api-key) if you don't have one
2. Choose the appropriate endpoint for your use case
3. Make your first request using the endpoint documentation above

Here's a simple example request for the **Individual Validate** endpoint:

<CodeGroup>
  ```shell cURL theme={null}
  curl --request GET \
    --url https://api.addressy.com/EmailValidation/Interactive/Validate/v2.00/json6.ws
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.addressy.com/EmailValidation/Interactive/Validate/v2.00/json6.ws"

  response = requests.get(url)

  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const url = 'https://api.addressy.com/EmailValidation/Interactive/Validate/v2.00/json6.ws';
  const options = {method: 'GET', body: undefined};

  try {
    const response = await fetch(url, options);
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error(error);
  }
  ```

  ```php PHP theme={null}
  <?php

  $curl = curl_init();

  curl_setopt_array($curl, [
    CURLOPT_URL => "https://api.addressy.com/EmailValidation/Interactive/Validate/v2.00/json6.ws",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
  ]);

  $response = curl_exec($curl);
  $err = curl_error($curl);

  curl_close($curl);

  if ($err) {
    echo "cURL Error #:" . $err;
  } else {
    echo $response;
  }
  ```

  ```go Go theme={null}
  package main

  import (
  	"fmt"
  	"net/http"
  	"io"
  )

  func main() {

  	url := "https://api.addressy.com/EmailValidation/Interactive/Validate/v2.00/json6.ws"

  	req, _ := http.NewRequest("GET", url, nil)

  	res, _ := http.DefaultClient.Do(req)

  	defer res.Body.Close()
  	body, _ := io.ReadAll(res.Body)

  	fmt.Println(res)
  	fmt.Println(string(body))

  }
  ```

  ```java Java theme={null}
  HttpResponse<String> response = Unirest.get("https://api.addressy.com/EmailValidation/Interactive/Validate/v2.00/json6.ws")
    .asString();
  ```

  ```ruby Ruby theme={null}
  require 'uri'
  require 'net/http'

  url = URI("https://api.addressy.com/EmailValidation/Interactive/Validate/v2.00/json6.ws")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true

  request = Net::HTTP::Get.new(url)

  response = http.request(request)
  puts response.read_body
  ```
</CodeGroup>

## What Email Validation Returns

Email Validation provides:

* Validation status indicating whether the email address is valid, catch-all, invalid, or timed out
* Email components (user account and domain) separated for analysis
* Risk assessment score (High, Medium, Low, or Unknown)
* Flags for disposable/temporary addresses and fraud risk indicators
* Validation duration for performance monitoring

Response should be in the following format:

```json theme={null}
{
  "Items": [
    {
      "ResponseCode": "Valid",
      "ResponseMessage": "Email address was fully validated",
      "EmailAddress": "enquiries@gbgplc.com",
      "UserAccount": "enquiries",
      "Domain": "gbgplc.com",
      "IsDisposableOrTemporary": false,
      "IsComplainerOrFraudRisk": false,
      "Duration": 0.245,
      "Reason": "",
      "Risk": "Low"
    }
  ]
}
```

And you can use this information below to interpret the response fields:

<AccordionGroup>
  <Accordion title="Response Fields">
    ### Validation Results

    | Field             | Type   | Description                                                                                                                                                                                                                                |
    | ----------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
    | `ResponseCode`    | string | Validation outcome: **Valid** (fully validated including mailbox), **Valid\_CatchAll** (domain validated but mailbox couldn't be verified), **Invalid** (address is invalid), or **Timeout** (validation couldn't complete within timeout) |
    | `ResponseMessage` | string | Textual description of the ResponseCode returned                                                                                                                                                                                           |
    | `Reason`          | string | Explanation for why the email wasn't valid (populated when ResponseCode is Invalid)                                                                                                                                                        |
    | `Risk`            | string | Risk score: **High**, **Medium**, **Low**, or **Unknown**. Aggregated analysis indicating likelihood of email bounce. Higher risk means greater bounce probability                                                                         |

    ### Email Components

    | Field          | Type   | Description                                                    |
    | -------------- | ------ | -------------------------------------------------------------- |
    | `EmailAddress` | string | The complete email address that verification was attempted on  |
    | `UserAccount`  | string | The account portion of the email address (before the @ symbol) |
    | `Domain`       | string | The domain portion of the email address (after the @ symbol)   |

    ### Quality Indicators

    | Field                     | Type    | Description                                                                                                                        |
    | ------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------- |
    | `IsDisposableOrTemporary` | boolean | Whether the email is a disposable/temporary mailbox (shouldn't be used for marketing communications)                               |
    | `IsComplainerOrFraudRisk` | boolean | This field is no longer valid and will always return false                                                                         |
    | `Duration`                | number  | Time taken for validation in seconds (maximum 15 seconds). Recommended timeout is at least 5 seconds to minimize Timeout responses |
  </Accordion>

  <Accordion title="Request Parameters">
    ### Required Parameters

    | Parameter | Type   | Description                                 |
    | --------- | ------ | ------------------------------------------- |
    | `Key`     | string | Your API key to authenticate to the service |
    | `Email`   | string | The email address to verify                 |

    ### Optional Parameters

    | Parameter          | Type    | Description                                                                                                                                                 |
    | ------------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `Timeout`          | integer | Time in milliseconds for validation attempt (1-15000). Values outside this range default to 15000. Recommended: at least 5000ms to reduce Timeout responses |
    | `AdditionalFields` | string  | Option to return additional fields beyond the standard response                                                                                             |
  </Accordion>

  <Accordion title="Error Response Fields">
    When an error occurs, the API returns an error response with the following structure:

    | Field         | Type   | Description                  |
    | ------------- | ------ | ---------------------------- |
    | `Error`       | string | The error ID                 |
    | `Description` | string | A description of the error   |
    | `Cause`       | string | The cause of the error       |
    | `Resolution`  | string | Actions to resolve the error |

    ### Common Error Codes

    | Status Code | Meaning               | Common Causes                                                                 |
    | ----------- | --------------------- | ----------------------------------------------------------------------------- |
    | **400**     | Bad Request           | Invalid parameters, malformed request, missing required Email parameter       |
    | **401**     | Unauthorized          | Invalid or missing API key                                                    |
    | **403**     | Forbidden             | API key doesn't have permission for Email Validation, or daily limit exceeded |
    | **500**     | Internal Server Error | Server-side issue, temporary service disruption                               |

    **Tip:** Check the `Resolution` field for specific steps to fix the error. For more details on error responses, see [Individual Validate](/api-reference/email-validation/individual) in API documentation.
  </Accordion>
</AccordionGroup>

**Note:** Email Validation checks if an email address can receive messages but does not link to individual identities. Privacy is maintained throughout the validation process.

## Try Email Validation

Test Email Validation using the [Individual Validate Playground](/api-reference/email-validation/individual?playground=open) to make your first request.

## FAQ

<AccordionGroup>
  <Accordion title="How does Email Validation work - are addresses checked against a database?">
    Email Validation follows a multi-step verification process:

    * **Syntax check:** Ensures the address format is valid (contains @ symbol, proper domain structure)
    * **Domain verification:** Confirms the domain can send and receive emails
    * **Mailbox ping:** Tests whether the mailbox accepts emails at the specified account (97% accuracy)
    * **Proprietary integrations:** Verifies catch-all status, disposable/temporary domains, and other mailbox characteristics through direct provider integrations

    This process doesn't rely on a static database but performs real-time verification against live email infrastructure.
  </Accordion>

  <Accordion title="What does a 'catch all' response code mean?">
    A **Valid\_CatchAll** ResponseCode indicates the email domain accepts emails to ANY email account, making it impossible to fully validate the specific mailbox. This occurs due to:

    * Firewall restrictions on the mail server
    * Domain configuration that accepts all incoming mail

    You'll need to decide whether to send emails to these addresses based on your use case. While the domain is verified, the specific mailbox existence cannot be confirmed.
  </Accordion>

  <Accordion title="How does the Risk field work?">
    The **Risk** field provides an aggregated assessment of bounce likelihood:

    * **High:** Greater likelihood that emails will bounce
    * **Medium:** Moderate bounce risk
    * **Low:** Low bounce probability
    * **Unknown:** Insufficient data to assess risk

    This score analyzes all returned email fields to help you decide whether to send to a particular address. Use it alongside other fields like IsDisposableOrTemporary for informed decision-making.
  </Accordion>

  <Accordion title="What types of information are returned in Email Validation results?">
    Beyond validation status, Email Validation returns:

    * Whether an email is disposable or temporary
    * If the domain is high-risk for sending email
    * Risk score (High, Medium, Low, Unknown)
    * Validation duration for performance monitoring
    * Email components (user account and domain separated)

    Note: The ability to detect role-based addresses (support@, marketing@) and mailbox full status may vary by endpoint. See the [Individual Validate API documentation](/api-reference/email-validation/individual) for complete field details.
  </Accordion>
</AccordionGroup>
