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

# Email verifier

> Verify the deliverability of one email address. Rate limit: No endpoint-specific throttle.

Verify one email address using your workspace API key. Send exactly one `email` field in a JSON body of at most **16 KiB**. Surrounding whitespace is trimmed, and the trimmed address must be at most 320 characters. The legacy `/email-verifier` route remains available.

## Usage and credits

The cost is **0.5 credits per request**, reserved before verification. There is no endpoint-specific throttle.

Allow at least **135 seconds**, plus a network margin, in your client timeout. If verification remains inconclusive, the result is `risky`; waiting for that result does not add another charge.

## Reading the response

Read the result from `body` when that object is present; otherwise read it from the top level. JSON object results include `credits_consumed: 0.5` alongside the result. Wrapped results also include `returned_an_error: false` at the top level.

Fields such as `email`, `status`, and `result` may be absent or have different types. Check the response content type before parsing: successful responses can also contain non-object JSON or non-JSON content without a `credits_consumed` field.

## Errors and retries

An unsuccessful verification can return an error such as `422`; error bodies can vary. Failed verification requests are eligible for a refund. A `503` can mean the charge or refund could not be confirmed, so do not assume the credits have been returned.

This endpoint does not support caller idempotency keys. Retrying creates another verification request and can incur another charge. Use bounded backoff for temporary failures and avoid treating a timeout as proof that no credits were charged.

## Next step

Use [Email finder](/api-reference/email-finder) to find a work email, or check your [credit balance](/api-reference/credit-count).


## OpenAPI

````yaml openapi.json POST /v1/email-verifier
openapi: 3.1.0
info:
  title: Airscale Public API
  version: '2026-09-11'
  description: Search, enrich, and resolve public business data with Airscale.
  x-airscale-source-repository: ViceScale/airscale-code
  x-airscale-source-sha: 1de19e1b70a052a4b8d9c2075021a7e5e7a94d51
servers:
  - url: https://api.airscale.io
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Search and discovery
    description: Search people, companies, and the web.
  - name: Contact data
    description: Find professional and personal contact data.
  - name: Profiles and reverse lookup
    description: Extract profiles or resolve a person from known contact data.
  - name: Post engagement
    description: Retrieve and enrich people who liked or commented on LinkedIn posts.
  - name: Account
    description: Inspect workspace account state.
  - name: Miscellaneous
    description: Check WhatsApp availability, Meta ads, and email deliverability.
paths:
  /v1/email-verifier:
    post:
      tags:
        - Miscellaneous
      summary: Verify an email address
      description: >-
        Verify one email address for 0.5 credits. Allow at least 135 seconds
        plus a network margin for the response. Inconclusive verification
        returns risky without another charge. Read the result from body when
        present, otherwise from the top level. The legacy /email-verifier route
        is also available. No caller idempotency key is supported.
      operationId: verifyEmail
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  pattern: ^\s*[^\s@]+@[^\s@]+\.[^\s@]+\s*$
                  description: >-
                    One email address. Surrounding whitespace is trimmed; the
                    trimmed value must be at most 320 characters. Maximum JSON
                    body size: 16 KiB.
              required:
                - email
              additionalProperties: false
            examples:
              request:
                value:
                  email: person@example.com
      responses:
        '200':
          description: >-
            A verification result, either at the top level or inside body. JSON
            object results include credits_consumed; other fields are optional
            and their types can vary. Successful responses can also contain
            non-object JSON or non-JSON content without a credits_consumed
            field.
          content:
            application/json:
              schema:
                anyOf:
                  - not:
                      type: object
                  - type: object
                    properties:
                      email:
                        description: >-
                          Email address, when present. Validate the value type
                          before using it.
                      status:
                        description: Verification status, when present.
                      result:
                        description: >-
                          Deliverability result, when present; risky means
                          verification remained inconclusive.
                      credits_consumed:
                        type: number
                        const: 0.5
                      score:
                        description: Deliverability score from 0 to 100, when present.
                      is_accept_all:
                        description: >-
                          Whether the domain accepts all addresses (catch-all),
                          when present.
                      is_disposable:
                        description: Whether the address is disposable, when present.
                      is_free:
                        description: >-
                          Whether the address uses a free email provider, when
                          present.
                      is_role:
                        description: >-
                          Whether the address is a role address such as sales@,
                          when present.
                      mx_records:
                        description: Mail servers for the domain, when present.
                      smtp_provider:
                        description: Mail hosting service for the domain, when present.
                      mode:
                        description: Verification mode, when present.
                      id:
                        description: Verification identifier, when present.
                      verify_at:
                        description: Verification time, when present.
                      credits_remaining:
                        description: >-
                          Balance reported by the verification service, when
                          present. This is not your Airscale credit balance; use
                          POST /v1/credits for that.
                    required:
                      - credits_consumed
                    additionalProperties: true
                  - type: object
                    properties:
                      body:
                        type: object
                        properties:
                          email:
                            description: >-
                              Email address, when present. Validate the value
                              type before using it.
                          status:
                            description: Verification status, when present.
                          result:
                            description: >-
                              Deliverability result, when present; risky means
                              verification remained inconclusive.
                          credits_consumed:
                            type: number
                            const: 0.5
                          score:
                            description: Deliverability score from 0 to 100, when present.
                          is_accept_all:
                            description: >-
                              Whether the domain accepts all addresses
                              (catch-all), when present.
                          is_disposable:
                            description: Whether the address is disposable, when present.
                          is_free:
                            description: >-
                              Whether the address uses a free email provider,
                              when present.
                          is_role:
                            description: >-
                              Whether the address is a role address such as
                              sales@, when present.
                          mx_records:
                            description: Mail servers for the domain, when present.
                          smtp_provider:
                            description: Mail hosting service for the domain, when present.
                          mode:
                            description: Verification mode, when present.
                          id:
                            description: Verification identifier, when present.
                          verify_at:
                            description: Verification time, when present.
                          credits_remaining:
                            description: >-
                              Balance reported by the verification service, when
                              present. This is not your Airscale credit balance;
                              use POST /v1/credits for that.
                        required:
                          - credits_consumed
                        additionalProperties: true
                      returned_an_error:
                        type: boolean
                        const: false
                    required:
                      - body
                      - returned_an_error
                    additionalProperties: true
              examples:
                direct:
                  value:
                    email: person@example.com
                    status: success
                    result: deliverable
                    score: 100
                    is_accept_all: false
                    is_disposable: false
                    is_free: false
                    is_role: false
                    mx_records:
                      - mx1.example.com
                    smtp_provider: Example Mail
                    mode: regular
                    id: example-verification-000001
                    verify_at: '2026-01-01T00:00:00Z'
                    credits_remaining: 1000
                    credits_consumed: 0.5
                wrapped:
                  value:
                    body:
                      email: person@example.com
                      status: success
                      result: risky
                      credits_consumed: 0.5
                    returned_an_error: false
            '*/*':
              schema: {}
        '201':
          description: >-
            The same result as 200. The success status code and Content-Type are
            passed through from the verification service, so a successful
            verification can also arrive as 201.
          content:
            application/json:
              schema:
                anyOf:
                  - not:
                      type: object
                  - type: object
                    properties:
                      email:
                        description: >-
                          Email address, when present. Validate the value type
                          before using it.
                      status:
                        description: Verification status, when present.
                      result:
                        description: >-
                          Deliverability result, when present; risky means
                          verification remained inconclusive.
                      credits_consumed:
                        type: number
                        const: 0.5
                      score:
                        description: Deliverability score from 0 to 100, when present.
                      is_accept_all:
                        description: >-
                          Whether the domain accepts all addresses (catch-all),
                          when present.
                      is_disposable:
                        description: Whether the address is disposable, when present.
                      is_free:
                        description: >-
                          Whether the address uses a free email provider, when
                          present.
                      is_role:
                        description: >-
                          Whether the address is a role address such as sales@,
                          when present.
                      mx_records:
                        description: Mail servers for the domain, when present.
                      smtp_provider:
                        description: Mail hosting service for the domain, when present.
                      mode:
                        description: Verification mode, when present.
                      id:
                        description: Verification identifier, when present.
                      verify_at:
                        description: Verification time, when present.
                      credits_remaining:
                        description: >-
                          Balance reported by the verification service, when
                          present. This is not your Airscale credit balance; use
                          POST /v1/credits for that.
                    required:
                      - credits_consumed
                    additionalProperties: true
                  - type: object
                    properties:
                      body:
                        type: object
                        properties:
                          email:
                            description: >-
                              Email address, when present. Validate the value
                              type before using it.
                          status:
                            description: Verification status, when present.
                          result:
                            description: >-
                              Deliverability result, when present; risky means
                              verification remained inconclusive.
                          credits_consumed:
                            type: number
                            const: 0.5
                          score:
                            description: Deliverability score from 0 to 100, when present.
                          is_accept_all:
                            description: >-
                              Whether the domain accepts all addresses
                              (catch-all), when present.
                          is_disposable:
                            description: Whether the address is disposable, when present.
                          is_free:
                            description: >-
                              Whether the address uses a free email provider,
                              when present.
                          is_role:
                            description: >-
                              Whether the address is a role address such as
                              sales@, when present.
                          mx_records:
                            description: Mail servers for the domain, when present.
                          smtp_provider:
                            description: Mail hosting service for the domain, when present.
                          mode:
                            description: Verification mode, when present.
                          id:
                            description: Verification identifier, when present.
                          verify_at:
                            description: Verification time, when present.
                          credits_remaining:
                            description: >-
                              Balance reported by the verification service, when
                              present. This is not your Airscale credit balance;
                              use POST /v1/credits for that.
                        required:
                          - credits_consumed
                        additionalProperties: true
                      returned_an_error:
                        type: boolean
                        const: false
                    required:
                      - body
                      - returned_an_error
                    additionalProperties: true
              examples:
                direct:
                  value:
                    email: person@example.com
                    status: success
                    result: deliverable
                    score: 100
                    is_accept_all: false
                    is_disposable: false
                    is_free: false
                    is_role: false
                    mx_records:
                      - mx1.example.com
                    smtp_provider: Example Mail
                    mode: regular
                    id: example-verification-000001
                    verify_at: '2026-01-01T00:00:00Z'
                    credits_remaining: 1000
                    credits_consumed: 0.5
                wrapped:
                  value:
                    body:
                      email: person@example.com
                      status: success
                      result: risky
                      credits_consumed: 0.5
                    returned_an_error: false
            '*/*':
              schema: {}
        '400':
          description: >-
            Invalid JSON or body does not contain exactly one valid email field.
            Error bodies may vary. A failed verification is eligible for a
            refund; a 503 can mean the charge or refund could not be confirmed.
          content:
            application/json:
              schema: {}
            '*/*':
              schema: {}
        '401':
          description: >-
            Missing or invalid bearer API key. Error bodies may vary. A failed
            verification is eligible for a refund; a 503 can mean the charge or
            refund could not be confirmed.
          content:
            application/json:
              schema: {}
            '*/*':
              schema: {}
        '403':
          description: >-
            Insufficient credits. Error bodies may vary. A failed verification
            is eligible for a refund; a 503 can mean the charge or refund could
            not be confirmed.
          content:
            application/json:
              schema: {}
            '*/*':
              schema: {}
        '413':
          description: >-
            JSON body exceeds 16 KiB. Error bodies may vary. A failed
            verification is eligible for a refund; a 503 can mean the charge or
            refund could not be confirmed.
          content:
            application/json:
              schema: {}
            '*/*':
              schema: {}
        '500':
          description: >-
            An unexpected server error occurred. Error bodies may vary. A failed
            verification is eligible for a refund; a 503 can mean the charge or
            refund could not be confirmed.
          content:
            application/json:
              schema: {}
            '*/*':
              schema: {}
        '502':
          description: >-
            The verification request could not be completed. Error bodies may
            vary. A failed verification is eligible for a refund; a 503 can mean
            the charge or refund could not be confirmed.
          content:
            application/json:
              schema: {}
            '*/*':
              schema: {}
        '503':
          description: >-
            The charge or refund could not be confirmed. Do not assume credits
            have been returned. Error bodies may vary. A failed verification is
            eligible for a refund; a 503 can mean the charge or refund could not
            be confirmed.
          content:
            application/json:
              schema: {}
            '*/*':
              schema: {}
        default:
          description: >-
            Other errors, such as 422, can have varying bodies. Failed
            verification requests are eligible for a refund. Successful
            responses can also contain non-object JSON or non-JSON content
            without a credits_consumed field.
          content:
            application/json:
              schema: {}
            '*/*':
              schema: {}
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: >-
        Use an Airscale workspace API key. Never expose the key in client-side
        code.

````