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

# Verify Email

> Verify if an email address is valid and deliverable.

## Example

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.groweasy.io/email/verify" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "email": "john.smith@acme.com"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.groweasy.io/email/verify', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      email: 'john.smith@acme.com',
    }),
  });

  const data = await response.json();
  console.log(data.data.status); // "valid"
  console.log(data.data.deliverable); // true
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.groweasy.io/email/verify",
      headers={
          "Authorization": "Bearer YOUR_API_KEY",
          "Content-Type": "application/json",
      },
      json={"email": "john.smith@acme.com"},
  )

  data = response.json()
  print(data["data"]["status"])  # "valid"
  print(data["data"]["deliverable"])  # True
  ```
</CodeGroup>

## Response

```json theme={null}
{
  "success": true,
  "data": {
    "email": "john.smith@acme.com",
    "status": "valid",
    "deliverable": true,
    "disposable": false,
    "freeProvider": false
  }
}
```

## Status Values

| Status      | Description                                               |
| ----------- | --------------------------------------------------------- |
| `valid`     | Email exists and is deliverable                           |
| `invalid`   | Email does not exist or is undeliverable                  |
| `catch_all` | Domain accepts all emails (can't verify specific address) |
| `unknown`   | Could not determine validity                              |

## Bulk Verification

To verify multiple emails, loop through your list:

```javascript theme={null}
async function verifyEmails(emails) {
  const results = [];

  for (const email of emails) {
    const response = await fetch('https://api.groweasy.io/email/verify', {
      method: 'POST',
      headers: {
        'Authorization': 'Bearer YOUR_API_KEY',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({ email }),
    });

    const data = await response.json();
    results.push(data.data);

    // Respect rate limits
    await new Promise(resolve => setTimeout(resolve, 100));
  }

  return results;
}
```


## OpenAPI

````yaml POST /email/verify
openapi: 3.1.0
info:
  title: GrowEasy API
  description: >-
    The GrowEasy API allows you to programmatically start scrapes, check status,
    manage credits, and find/verify emails.
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.groweasy.io
security:
  - bearerAuth: []
paths:
  /email/verify:
    post:
      summary: Verify Email
      description: Verify if an email address is valid and deliverable.
      operationId: verifyEmail
      requestBody:
        description: Email to verify
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VerifyEmailRequest'
      responses:
        '200':
          description: Email verification completed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyEmailResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Insufficient credits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    VerifyEmailRequest:
      type: object
      required:
        - email
      properties:
        email:
          type: string
          format: email
          description: Email address to verify
          example: john.smith@acme.com
    VerifyEmailResponse:
      type: object
      properties:
        success:
          type: boolean
          example: true
        data:
          type: object
          properties:
            email:
              type: string
              format: email
              example: john.smith@acme.com
            status:
              type: string
              enum:
                - valid
                - invalid
                - catch_all
                - unknown
              description: Verification status
              example: valid
            deliverable:
              type: boolean
              description: Whether the email is deliverable
              example: true
            disposable:
              type: boolean
              description: Whether the email is from a disposable domain
              example: false
            freeProvider:
              type: boolean
              description: Whether the email is from a free email provider
              example: false
    Error:
      type: object
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          properties:
            code:
              type: string
              description: Error code
              example: INVALID_REQUEST
            message:
              type: string
              description: Human-readable error message
              example: The request body is missing required fields
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key authentication. Get your API key from the GrowEasy dashboard.

````