# Single Email Verification

> Docs index for AI agents: [https://mailvalid.io/llms.txt](https://mailvalid.io/llms.txt). Every docs page is also available as Markdown: add `.md` to its URL.

Verify a single email address in real time. The result covers syntax, domain, MX records and an SMTP mailbox check. The average response time is under 500ms.

```
POST https://mailvalid.io/api/v1/verify/single
```

## Request body

| Parameter | Type | Required | Description |
|---|---|---|---|
| `email` | string | Required | The email address to verify |

## Example request

```bash
curl -X POST https://mailvalid.io/api/v1/verify/single \
  -H "X-API-Key: mv_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"email": "john@company.com"}'
```

## Example response

```json
{
  "success": true,
  "credits_used": 1,
  "result": {
    "email": "john@company.com",
    "status": "valid",
    "is_valid": true,
    "syntax_valid": true,
    "domain": "company.com",
    "domain_valid": true,
    "has_mx": true,
    "mx_records": [
      {"priority": 10, "host": "mx1.company.com"}
    ],
    "smtp_checked": true,
    "smtp_response_code": 250,
    "is_disposable": false,
    "is_role_based": false,
    "is_catch_all": false,
    "is_free_provider": false,
    "confidence_score": 95,
    "status_reason": "mailbox_confirmed",
    "provider": "corporate",
    "verification_time_ms": 234,
    "cached": false
  }
}
```

## Response fields

| Field | Type | Description |
|---|---|---|
| `status` | string | Verification status: `valid`, `invalid`, `catch_all`, `unknown`, `do_not_mail` |
| `is_valid` | boolean | Whether the email is safe to send to |
| `confidence_score` | integer | Confidence in the result (0–100) |
| `status_reason` | string | Machine-readable sub-status reason (see [Status values](https://mailvalid.io/docs/status-values)) |
| `provider` | string | Detected email provider (google, microsoft, yahoo, apple, corporate, etc.) |
| `is_disposable` | boolean | Whether the domain is a disposable/temporary email provider |
| `is_role_based` | boolean | Whether the address is role-based (info@, support@, admin@) |
| `is_catch_all` | boolean | Whether the domain accepts all email addresses |
| `is_free_provider` | boolean | Whether the domain is a free email provider (gmail.com, yahoo.com, etc.) |
| `cached` | boolean | Whether MailValid returned a recent server-side result. `cached: true` is billed as a normal result. |

## Billing

`credits_used` is the final charge. `valid`, `invalid`, `catch_all` and `do_not_mail` results use 1 credit each, whether fresh or served from cache (`cached: true`). `unknown` results use 0 credits.

## Related

- [Bulk verification](https://mailvalid.io/docs/verify-bulk) for lists of up to 10,000 emails
- [Rate limits](https://mailvalid.io/docs/rate-limits)
- [Errors](https://mailvalid.io/docs/errors)
