---
title: "Validate email (POST)"
method: POST
path: "/email"
tags: ["Email"]
---

# Validate email (POST)

`POST /email`

Same as GET but accepts email in request body. Also supports bulk validation
by passing the `bulk` parameter.

## Response `200`

Validation result (single or bulk)

- union
  - EmailValidationResult
    - `format` boolean, required — Whether the email/domain has valid format
    - `domain` string — The domain part of the email
    - `disposable` boolean — Whether the domain is a known disposable email provider
    - `dns` boolean — Whether the domain has valid DNS/MX records
    - `whitelist` boolean — Whether the domain is whitelisted (trusted provider)
    - `confidence` integer — Confidence score (0-100) that the email is disposable. 50+ = disposable.
    - `signals` string[] — Detection signals that contributed to the confidence score
    - `role` boolean — Whether the local part is a role address (info@, admin@, etc.)
    - `free` boolean — Whether the domain is a free email provider (Gmail, Yahoo, etc.)
    - `typo_suggestion` string, nullable — Suggested correction if a likely typo was detected (e.g. gmial.com &rarr; gmail.com). Omitted when no suggestion is available.
    - `email_auth` object — Email authentication records (Pro tier)
      - `spf` object
        - `exists` boolean
        - `record` string, nullable
      - `dkim` object
        - `exists` boolean
      - `dmarc` object
        - `exists` boolean
        - `record` string, nullable
        - `policy` string, nullable
    - `domain_age` object — Domain age information (Pro tier)
      - `days` integer, nullable
      - `created` string, date, nullable
      - `fresh` boolean
    - `inbox_provider` object — Detected inbox provider (Pro tier)
      - `name` string, nullable
      - `type` 'personal' | 'business' | 'hosting' | 'unknown', nullable
    - `deliverability` object — Deliverability assessment (Pro tier)
      - `score` integer
      - `verdict` 'deliverable' | 'risky' | 'undeliverable' | 'unknown'
    - `requires_upgrade` string[] — Features that require a higher tier (only present when denied features were requested)
  - BulkValidationResult
    - `session` string — Session ID to retrieve results later
    - `stats` object
      - `total` integer
      - `unique` integer
      - `invalid_format` integer
      - `invalid_dns` integer
      - `disposable` integer
      - `valid` integer

## Other responses

- `422` — Bulk limit exceeded
- `429` — Rate limit or quota exceeded

---

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