---
title: "Production-ready email validation with tiered approach and classification"
method: POST
path: "/api/email/email-validation-enhanced"
tags: ["Email"]
---

# Production-ready email validation with tiered approach and classification

`POST /api/email/email-validation-enhanced`

## Request

- Base URL: `https://api.kolect.com`
- URL: `https://api.kolect.com/api/email/email-validation-enhanced`
- Auth: HTTP bearer

Validates email addresses using a multi-tier approach for cost optimization:
1. Format validation (free)
2. DNS MX record validation (nearly free)
3. Disposable email detection (free)
4. SMTP validation via MailTester Ninja (paid)
5. Email classification as organizational vs personal (free)

The classification uses domain parsing, MX fingerprinting, RDAP lookups,
and free-email domain detection to determine if an email is likely
organizational (business/company) or personal (individual).

Returns clear validation status with detailed reasoning and classification.

## Request body

- object
  - `email` string, email, required: The email address to validate
  - `skipExpensiveValidation` boolean: Skip SMTP validation to reduce costs (stops at DNS/disposable checks)

## Response `200`

Email validation completed

- object
  - `valid` boolean: True if email is safe to send to, false otherwise
  - `confidence` 'high' | 'medium' | 'low': Confidence level in the validation result
  - `result` 'valid' | 'invalid' | 'risky' | 'unknown': Detailed validation result
  - `reasons` string[]: List of reasons for the validation result
  - `email` string: The normalized email address
  - `domain` string: The domain part of the email
  - `isDisposable` boolean: Whether the email uses a disposable domain
  - `is_organizational` boolean: Simple boolean indicating if the email is organizational (true) or personal/unknown (false)
  - `classification` object: Email classification as organizational or personal
    - `classification` 'organizational' | 'personal' | 'unknown': Whether the email is organizational or personal
    - `confidence` number: Confidence score (0-1) for the classification
    - `reasons` string[]: Reasons for the classification
    - `signals` object: Technical signals used for classification
      - `domain` string, nullable: Parsed domain name
      - `mx` object[]: MX records for the domain
        - `exchange` string
        - `priority` number
      - `rdapOrg` string, nullable: Organization name from RDAP lookup
      - `isFreeEmail` boolean: Whether the domain is a free email provider
      - `hostedBy` string[]: Detected email hosting providers
  - `validationSteps` object: Details of each validation step performed
    - `format` boolean
    - `mxRecord` boolean
    - `disposable` boolean
    - `smtp` boolean
  - `cost` object: Cost information for the validation
    - `tier` 'free' | 'low' | 'medium' | 'high'
    - `estimated` number: Estimated cost in USD
  - `timestamp` string, date-time

## Other responses

- `400`: Bad request
- `500`: Internal server error

---

[API](https://skmtc.dev/kolect/apis/kolect-api.md) · [All operations](https://skmtc.dev/kolect/apis/kolect-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kolect/apis/kolect-api/revisions/fe54528e8f54?raw)
