> ## Documentation Index
> Fetch the complete documentation index at: https://developer.moltsets.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Validate Emails

> > **Coming soon.** This endpoint isn't available yet. Calls to it won't work until it launches.

The Email Validation API checks a list of up to 1,000 email addresses against MoltSets' validation data and returns a verdict for each.

Pass plaintext addresses in `emails`. Case and surrounding whitespace are ignored, and duplicates are collapsed, so you get one result per unique address.

**Verdicts:**
- `valid`
- `invalid`
- `catch-all`
- `spamtrap`
- `abuse`, with `sub_status` `spam_complainer` when the address was recently seen complaining about mail
- `do_not_mail`
- `unknown` when MoltSets holds no signal: no spam sighting in the last 6 months and no validation in the last 60 days

**Use this endpoint to:**
- Clean a list before you send
- Suppress spam traps, complainers, and invalid addresses
- Check addresses that came from outside MoltSets

**Cost:**
Each verdict costs 1 **validation token**. Validation tokens are a separate balance from regular and phone tokens. See `get_billing`. `unknown` results and malformed addresses are free. No regular token is charged.

> [!WARNING]
>
> **Coming soon — not available yet.** This endpoint is documented ahead of launch. Calls to it will fail until it's released.


## OpenAPI

````yaml /openapi.json post /validate_emails
openapi: 3.1.0
info:
  title: MoltSets API
  version: 1.0.0
  description: >-
    MoltSets is an identity resolution API. Use it to resolve emails, LinkedIn
    profiles, and IP addresses into enriched contact and company data, including
    business and personal emails, mobile phone numbers, and firmographic
    details.
servers:
  - url: https://api.moltsets.com/api/v1/tools
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Search
    description: >-
      Search and filter company and business profiles by name, domain, industry,
      size, or revenue.
  - name: Get Valid Emails
    description: Resolve and enrich valid business and personal email addresses.
  - name: Get Carrier-Verified Mobile Phones
    description: Enrich carrier-verified mobile phone numbers.
  - name: Reverse Lookups
    description: Resolve an email address or LinkedIn URL to a full business profile.
  - name: Get Ad Audience
    description: >-
      Resolve identifiers to hashed email (HEM) and mobile advertising IDs
      (MAIDs) for audience matching.
  - name: Get LinkedIn
    description: Resolve an email address to its LinkedIn profile URL.
  - name: Get Company
    description: Resolve IP addresses and domains to company data.
  - name: Account
    description: Account management tools. Free — do not consume credits.
paths:
  /validate_emails:
    post:
      tags:
        - Get Valid Emails
      summary: Validate Emails
      description: >-
        > **Coming soon.** This endpoint isn't available yet. Calls to it won't
        work until it launches.


        The Email Validation API checks a list of up to 1,000 email addresses
        against MoltSets' validation data and returns a verdict for each.


        Pass plaintext addresses in `emails`. Case and surrounding whitespace
        are ignored, and duplicates are collapsed, so you get one result per
        unique address.


        **Verdicts:**

        - `valid`

        - `invalid`

        - `catch-all`

        - `spamtrap`

        - `abuse`, with `sub_status` `spam_complainer` when the address was
        recently seen complaining about mail

        - `do_not_mail`

        - `unknown` when MoltSets holds no signal: no spam sighting in the last
        6 months and no validation in the last 60 days


        **Use this endpoint to:**

        - Clean a list before you send

        - Suppress spam traps, complainers, and invalid addresses

        - Check addresses that came from outside MoltSets


        **Cost:**

        Each verdict costs 1 **validation token**. Validation tokens are a
        separate balance from regular and phone tokens. See `get_billing`.
        `unknown` results and malformed addresses are free. No regular token is
        charged.
      operationId: validateEmails
      parameters:
        - $ref: '#/components/parameters/UserAgentHeader'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - emails
              properties:
                emails:
                  type: array
                  items:
                    type: string
                  minItems: 1
                  maxItems: 1000
                  description: >-
                    Plaintext email addresses to validate, 1–1,000 per call.
                    Case and surrounding whitespace are ignored, and duplicates
                    are collapsed.
                  example:
                    - john.smith@example.com
                    - jane.doe@example.com
      responses:
        '200':
          description: >-
            Success — one verdict per unique address. The full response schema
            will be published at launch.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorUnauthorized'
        '402':
          description: Payment Required — insufficient tokens
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInsufficientTokens'
        '403':
          description: >-
            Forbidden — missing `User-Agent` header, tool not on the plan, or
            account inactive
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorPlanRestricted'
        '422':
          description: >-
            Invalid Input — malformed body, or a parameter is missing,
            malformed, or outside its allowed values
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInvalidInput'
        '429':
          description: Too Many Requests — rate limit or Fair Use window exhausted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRateLimit'
        '500':
          description: >-
            Internal Server Error — the call could not complete. Usually the
            endpoint is temporarily unavailable, but an oversized request can
            also cause it. Retry with a smaller request first; the MoltSets team
            is alerted automatically.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInternal'
components:
  parameters:
    UserAgentHeader:
      name: User-Agent
      in: header
      required: true
      description: >-
        Identifies the calling client. Any non-empty value is accepted —
        MoltSets does not validate its contents. Requests without this header
        are rejected with `403 Forbidden` (`error.code`: `forbidden`).
      schema:
        type: string
      example: YOUR_APP_NAME/1.0
  schemas:
    ErrorUnauthorized:
      type: object
      description: The API key or OAuth token is missing, invalid, or revoked.
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: unauthorized
            message:
              type: string
              example: Invalid API key.
    ErrorInsufficientTokens:
      type: object
      description: >-
        Out of credit. `insufficient_tokens` means the token balance cannot
        cover the call; `insufficient_phone_tokens` means the phone token
        balance (from the separate phone token subscription) cannot cover a
        mobile-phone result. On a batch, unaffordable items are dropped and the
        response returns partial results with this error block rather than
        failing the whole call.
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: insufficient_tokens
            message:
              type: string
              example: You have 0 tokens remaining.
    ErrorPlanRestricted:
      type: object
      description: >-
        The request is refused. `forbidden` means the request has no
        `User-Agent` header — add one (any non-empty value). `plan_restricted`
        means the tool is not part of the account's plan — today, the
        ad-audience tools (`email_to_maid`, `business_email_to_sha256`,
        `linkedin_to_sha256`) on the \$397 and \$997 plans. It is a plan
        condition, so there is no `Retry-After` and topping up tokens does not
        clear it. `account_inactive` means the account itself is not active —
        log in and subscribe to a plan.
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: plan_restricted
            message:
              type: string
              example: >-
                Personal email lookups are not available on your plan. Contact
                support@moltsets.com to request access.
    ErrorInvalidInput:
      type: object
      description: >-
        The request body is malformed, or a parameter is missing, malformed, or
        outside its allowed values.
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: invalid_input
            message:
              type: string
              example: Message describing the nature of the invalid input.
    ErrorRateLimit:
      type: object
      description: >-
        Rate or Fair Use limit. `rate_limited` is the burst/IP guard;
        `fair_use_limit_exceeded` means a Fair Use **record** window is
        exhausted (or, on the free tier, the one-time search trial);
        `fair_use_requests_exceeded` means the 5-hour **request** window is
        exhausted; `search_concurrency_exceeded` means too many `search_people`
        / `search_companies` calls are running at the same time for the plan
        (Free and $27: 3, $97: 5, $397 and $997: 8). The Fair Use codes carry
        `metadata.retry_after` and a `Retry-After` header.
        `search_concurrency_exceeded` carries `Retry-After: 1` — retry after 1
        second and run fewer searches in parallel.
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: fair_use_limit_exceeded
            message:
              type: string
              example: Fair use record limit reached. Retry after the window resets.
        metadata:
          type: object
          properties:
            retry_after:
              type: integer
              description: >-
                Seconds until the binding window unlocks. Also sent as a
                `Retry-After` header. Absent when the limit is a plan condition
                rather than a window (free-tier search trial exhausted).
    ErrorInternal:
      type: object
      description: >-
        Returned when the call could not complete — usually because the endpoint
        is unavailable, though an oversized request can also cause it. Retry
        with a smaller request first. Never charged.
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: internal_error
            message:
              type: string
              example: Unexpected connection error.
        metadata:
          type: object
          example: {}
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Pass your API key as a Bearer token. Keys follow the format
        `ms_XXXXXXXXXXX`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.