---
title: "Verify email address"
method: POST
path: "/v1/verify"
tags: ["Public API"]
---

# Verify email address

`POST /v1/verify`

Verify an email address for validity, check if it's from a disposable domain or personal email provider, verify MX records, and detect potential typos with suggestions.

## Request body

- object
  - `email` string, email, required — Email address to verify

## Response `200`

Email verification completed successfully

- object
  - `success` boolean — Always true for successful requests
  - `data` object
    - `email` string, email, required — Email address that was verified
    - `valid` boolean, required — Whether the email appears to be valid overall
    - `isDisposable` boolean, required — Whether the email is from a disposable/temporary email domain
    - `isAlias` boolean, required — Whether the email is from a forwarding/alias service
    - `isTypo` boolean, required — Whether a potential typo was detected in the email address
    - `isPlusAddressed` boolean, required — Whether the email uses plus addressing (contains a + in the local part)
    - `isPersonalEmail` boolean, required — Whether the email is from a personal/free email provider (Gmail, Hotmail, Yahoo, etc.)
    - `domainExists` boolean, required — Whether the domain exists in DNS (has NS records)
    - `hasWebsite` boolean, required — Whether the domain has a website (has DNS A or AAAA records) - informational only
    - `hasMxRecords` boolean, required — Whether the domain has MX records configured for email delivery
    - `suggestedEmail` string, email, nullable — Suggested correction if a typo was detected (optional)
    - `reasons` string[], required — Array of human-readable reasons describing the verification results

## Other responses

- `401` — Missing or invalid API key.
- `422` — Request body failed schema validation. `error.errors` lists the offending fields.

## Changes

- **2026-08-09** `a13aa5345f8e` — 1 breaking, 3 warning, 11 info
  - the `error` response's property type/format changed from `string`/`` to `object`/`` for status `401`
  - removed the optional property `code` from the response with the `401` status
  - removed the optional property `message` from the response with the `401` status
  - removed the optional property `time` from the response with the `401` status
  - …11 more

[Change history](https://skmtc.dev/useplunk/apis/plunk-api/changes/v1/verify/post.md)

---

[API](https://skmtc.dev/useplunk/apis/plunk-api.md) · [All operations](https://skmtc.dev/useplunk/apis/plunk-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/useplunk/plunk-api/revisions/a13aa5345f8e/schema)
