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

# Email Verification

> Verify email syntax and mailbox deliverability in real time without sending an email.

## Overview

The Email Verification API validates email syntax, queries receiving mail exchangers, and returns detailed deliverability signals—including mailbox existence, deliverable/undeliverable verdicts, catch-all server detection, and reason codes.

This endpoint supports `GET` requests authenticated with your ProWebLook API key.

## Request Parameters

<ParamField query="api_key" type="string" required>
  Your ProWebLook API key. See [Authentication](/authentication).
</ParamField>

<ParamField query="email" type="string" required>
  The email address to verify (e.g. `user@example.com`).
</ParamField>

## Response Fields

<ResponseField name="balance" type="integer">
  Current remaining email credits after the check or refund attempt. Omitted when API authentication fails.
</ResponseField>

<ResponseField name="status" type="boolean">
  `true` for a completed check; `false` for authentication, credit, or provider lookup failure.
</ResponseField>

<ResponseField name="email" type="string">
  The email address that was checked.
</ResponseField>

<ResponseField name="emailformat" type="boolean">
  `true` if the email address follows valid RFC syntax; `false` if malformed.
</ResponseField>

<ResponseField name="emailexist" type="boolean">
  `true` if the mailbox exists (deliverable or catch-all server); `false` if undeliverable.
</ResponseField>

<ResponseField name="verdict" type="string">
  Deliverability verdict: `deliverable`, `undeliverable`, `unknown`, or `invalid_format`.
</ResponseField>

<ResponseField name="reason_code" type="string">
  Specific reason code: `mailbox_accepted`, `mailbox_not_found`, `catch_all`, `invalid_syntax`, `network_timeout`, etc.
</ResponseField>

<ResponseField name="error" type="string">
  Human-readable error description when `status` is `false`.
</ResponseField>

## Credit Cost & Refunds

* **1 email credit** is deducted for each completed check (including invalid syntax or undeliverable addresses).
* If upstream verification times out or fails to return a conclusive answer, the API returns HTTP 200 with `status: false`, and **automatically refunds the reserved credit** to your balance.

<RequestExample>
  ```bash cURL theme={null}
  curl "https://proweblook.com/api/v1/checkemail?api_key=YOUR_API_KEY&email=user@example.com"
  ```

  ```javascript JavaScript (Fetch) theme={null}
  const response = await fetch(
    "https://proweblook.com/api/v1/checkemail?" +
    new URLSearchParams({
      api_key: "YOUR_API_KEY",
      email: "user@example.com"
    })
  );
  const data = await response.json();
  console.log(data);
  ```

  ```php PHP theme={null}
  $params = http_build_query([
      'api_key' => 'YOUR_API_KEY',
      'email'   => 'user@example.com',
  ]);
  $response = file_get_contents("https://proweblook.com/api/v1/checkemail?$params");
  $data = json_decode($response, true);
  print_r($data);
  ```

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

  response = requests.get(
      "https://proweblook.com/api/v1/checkemail",
      params={
          "api_key": "YOUR_API_KEY",
          "email": "user@example.com"
      }
  )
  print(response.json())
  ```
</RequestExample>

<ResponseExample>
  ```json 200 - Deliverable theme={null}
  {
    "balance": 9992,
    "status": true,
    "email": "user@example.com",
    "emailformat": true,
    "emailexist": true,
    "verdict": "deliverable",
    "reason_code": "mailbox_accepted"
  }
  ```

  ```json 200 - Undeliverable theme={null}
  {
    "balance": 9991,
    "status": true,
    "email": "invalid-user@example.com",
    "emailformat": true,
    "emailexist": false,
    "verdict": "undeliverable",
    "reason_code": "mailbox_not_found"
  }
  ```

  ```json 200 - Catch-All Domain theme={null}
  {
    "balance": 9990,
    "status": true,
    "email": "support@github.com",
    "emailformat": true,
    "emailexist": true,
    "verdict": "unknown",
    "reason_code": "catch_all"
  }
  ```

  ```json 200 - Provider Error (Credit Refunded) theme={null}
  {
    "balance": 9990,
    "status": false,
    "error": "Service temporarily unavailable, please try again.",
    "reason_code": "network_timeout"
  }
  ```

  ```json 401 - Unauthorized theme={null}
  {
    "status": false,
    "error": "Invalid API key."
  }
  ```

  ```json 402 - Insufficient Credits theme={null}
  {
    "balance": 0,
    "status": false,
    "error": "Please recharge"
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.