> 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

Use Email Validation to check email syntax, split the email into user and domain parts, detect disposable email domains, and inspect common DNS records.

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.
