> For the complete documentation index, see [llms.txt](https://docs.stopbot.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.stopbot.net/v2/api-v2-documentation/email-validation.md).

# Email Validation

Email Validation returns validation data only. It does not send an email, verify inbox ownership, or confirm that a mailbox can receive messages.

### Endpoint

```
GET https://api.stopbot.net/services/email-validation
```

### Parameters

| Parameter | Required | Description               |
| --------- | -------- | ------------------------- |
| `apikey`  | Yes      | Your STOPBOT API key      |
| `email`   | Yes      | Email address to validate |

### Parameter Rules

| Parameter | Rule                                              |
| --------- | ------------------------------------------------- |
| `email`   | Must use a valid email format accepted by STOPBOT |

Accepted email format:

* local part must start and end with a lowercase alphanumeric character after normalization
* local part may contain lowercase letters, numbers, hyphen, dot, and underscore
* domain must start and end with a lowercase alphanumeric character after normalization
* domain may contain lowercase letters, numbers, hyphen, and dot
* local part length is 3-62 characters
* domain length is 3-102 characters

STOPBOT validates the email format case-insensitively by normalizing the submitted value to lowercase before checking it.

### Example Request

```bash
curl "https://api.stopbot.net/services/email-validation?apikey={API_KEY}&email=test%40gmail.com"
```

### Valid Email Response

```json
{
  "isEmail": true,
  "info": {
    "user": "test",
    "domain": "gmail.com",
    "isDisposableEmail": 0,
    "mx": "configured",
    "spf": "configured",
    "dmarc": "configured"
  },
  "status": "success",
  "executionTime": "11.32ms",
  "timeResponse": "2026-07-07 12:00:00"
}
```

### Invalid Format Response

Invalid email format is not returned as an HTTP error. STOPBOT returns `status: success` with `isEmail: false`.

```bash
curl "https://api.stopbot.net/services/email-validation?apikey={API_KEY}&email=not-an-email"
```

Example response:

```json
{
  "isEmail": false,
  "status": "success",
  "executionTime": "1.19ms",
  "timeResponse": "2026-07-07 12:00:00"
}
```

### Disposable Email Example

When the domain is listed as disposable, `isDisposableEmail` returns `1`.

```json
{
  "isEmail": true,
  "info": {
    "user": "test",
    "domain": "yopmail.com",
    "isDisposableEmail": 1,
    "mx": "configured",
    "spf": "configured",
    "dmarc": "configured"
  },
  "status": "success",
  "executionTime": "146.23ms",
  "timeResponse": "2026-07-07 12:00:00"
}
```

### Response Fields

| Field           | Description                                                                           |
| --------------- | ------------------------------------------------------------------------------------- |
| `isEmail`       | `true` when the submitted value matches the accepted email format; otherwise `false`  |
| `info`          | Email detail object. This field is returned only when `isEmail` is `true`             |
| `status`        | API result status. Format-valid and format-invalid email checks both return `success` |
| `executionTime` | Server-side execution time for the request                                            |
| `timeResponse`  | Response timestamp in `YYYY-MM-DD HH:mm:ss` format                                    |

### Info Fields

| Field               | Description                                                                          |
| ------------------- | ------------------------------------------------------------------------------------ |
| `user`              | Local part before `@`                                                                |
| `domain`            | Email domain after `@`                                                               |
| `isDisposableEmail` | `1` when the domain is listed as disposable; `0` when it is not listed as disposable |
| `mx`                | MX DNS status. Possible values: `configured`, `not configured`                       |
| `spf`               | SPF DNS status. Possible values: `configured`, `not configured`                      |
| `dmarc`             | DMARC DNS status. Possible values: `configured`, `not configured`                    |

### DNS Checks

Email Validation checks common DNS records for the domain:

| Check | How STOPBOT Reports It                                                     |
| ----- | -------------------------------------------------------------------------- |
| MX    | `configured` when the domain has MX records                                |
| SPF   | `configured` when the domain has a TXT record containing `v=spf1`          |
| DMARC | `configured` when `_dmarc.{domain}` has a TXT record containing `v=DMARC1` |

If a DNS record is missing or cannot be confirmed during the check, the field returns `not configured`.

### Error Response Fields

Failed Email Validation responses may include:

| Field           | Description                                                     |
| --------------- | --------------------------------------------------------------- |
| `errorMessage`  | Human-readable error message                                    |
| `status`        | Failed authentication, quota, or service errors return `failed` |
| `executionTime` | Server-side execution time for the request                      |
| `timeResponse`  | Response timestamp in `YYYY-MM-DD HH:mm:ss` format              |

### Quota Note

A successful format-valid Email Validation request may use additional credits because STOPBOT performs disposable email and DNS checks.
