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

# Verify Email

> Verify a single email address in real time.

Verify one email address. Uses MX, SMTP, disposable, and role-based checks. Results are cached for 90 days unless `noCache` is true.

## Request

<ParamField body="email" type="string" required>
  Email address to verify
</ParamField>

<ParamField body="noCache" type="boolean">
  If `true`, always run verification and ignore cache. Default `false`.
</ParamField>

## Response

<ResponseField name="email" type="string">
  Verified email address
</ResponseField>

<ResponseField name="valid" type="boolean">
  Passes syntax and basic checks
</ResponseField>

<ResponseField name="deliverable" type="boolean">
  Mailbox appears deliverable
</ResponseField>

<ResponseField name="acceptAll" type="boolean">
  Domain accepts all addresses
</ResponseField>

<ResponseField name="role" type="boolean">
  Role-based address (e.g. info@, support@)
</ResponseField>

<ResponseField name="temporary" type="boolean">
  Disposable/temporary email
</ResponseField>

<ResponseField name="mx" type="boolean">
  Has valid MX records
</ResponseField>

<ResponseField name="smtp" type="boolean">
  SMTP check succeeded
</ResponseField>

<ResponseField name="score" type="number">
  0–100 deliverability score
</ResponseField>

<RequestExample>
  ```bash Request theme={null}
  curl -X POST "https://api.bouncedetector.com/api/v1/verify" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"email": "user@example.com"}'
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "email": "user@example.com",
    "valid": true,
    "deliverable": true,
    "acceptAll": false,
    "role": false,
    "temporary": false,
    "mx": true,
    "smtp": true,
    "score": 100
  }
  ```
</ResponseExample>


## OpenAPI

````yaml POST /api/v1/verify
openapi: 3.1.0
info:
  title: BounceDetector API
  description: >-
    Email verification API. All endpoints require API key authentication via
    Bearer token.
  version: 1.0.0
servers:
  - url: https://api.bouncedetector.com
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Verification
    description: Single and bulk email verification
  - name: Batch
    description: Batch job management
paths:
  /api/v1/verify:
    post:
      tags:
        - Verification
      summary: Verify single email
      description: >-
        Verify one email address in real time. Uses MX, SMTP, disposable, and
        role-based checks. Results are cached for 90 days unless `noCache` is
        true.
      operationId: verifyEmail
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - email
              properties:
                email:
                  type: string
                  format: email
                  example: user@example.com
                noCache:
                  type: boolean
                  default: false
                  description: If true, always run verification and ignore cache.
            examples:
              basic:
                summary: Basic verification
                value:
                  email: user@example.com
              noCache:
                summary: Force fresh verification (ignore cache)
                value:
                  email: user@example.com
                  noCache: true
      responses:
        '200':
          description: Verification result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResult'
              examples:
                valid:
                  summary: Valid deliverable email
                  value:
                    email: user@example.com
                    valid: true
                    deliverable: true
                    acceptAll: false
                    role: false
                    temporary: false
                    mx: true
                    smtp: true
                    score: 100
                invalid:
                  summary: Invalid or undeliverable email
                  value:
                    email: invalid@example.com
                    valid: false
                    deliverable: false
                    acceptAll: false
                    role: false
                    temporary: false
                    mx: false
                    smtp: false
                    score: 0
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          description: Plan limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                statusCode: 402
                message: Plan limit exceeded
components:
  schemas:
    VerificationResult:
      type: object
      properties:
        email:
          type: string
        valid:
          type: boolean
        deliverable:
          type: boolean
        acceptAll:
          type: boolean
        role:
          type: boolean
        temporary:
          type: boolean
        mx:
          type: boolean
        smtp:
          type: boolean
        score:
          type: number
    Error:
      type: object
      properties:
        statusCode:
          type: integer
        message:
          type: string
  responses:
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: Your API key (e.g. bdt_abc123...). Obtain from the dashboard.

````