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

# Icypeas Integration for AI Agents & Workflows

> Find a professional email address from a name and company domain, or verify whether an existing email is valid and deliverable. Results are returned asynchronously via polling.

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/df8MOr-hXotYLTh5/logos/placeholder.svg?fit=max&auto=format&n=df8MOr-hXotYLTh5&q=85&s=a4046f9cd6d738c81259050e9833913c" alt="Icypeas logo" width="72" height="72" data-path="logos/placeholder.svg" />

## Overview

Add **Icypeas** to any ModuleX agent or workflow. Find and verify professional email addresses against the Icypeas REST API (`app.icypeas.com`). Resolve a likely professional email from a person's name and company domain, or check whether an existing address is valid and deliverable. Both operations run asynchronously: a job is submitted, then the result is fetched by polling.

<Info>
  **Categories**: Sales · Enrichment · Sales Engagement · **Auth**: API Key · **Actions**: 2
</Info>

## Authentication

### API Key Authentication

Authenticate using your Icypeas API key

<Steps>
  <Step title="Step 1">
    Go to [https://app.icypeas.com](https://app.icypeas.com) and sign up or log in
  </Step>

  <Step title="Step 2">
    Open the API settings / API access section in your account
  </Step>

  <Step title="Step 3">
    Create a new API key or copy your existing one
  </Step>

  <Step title="Step 4">
    Paste the API key below
  </Step>
</Steps>

#### Required Credentials

| Field           | Description                               | Required | Format |
| --------------- | ----------------------------------------- | -------- | ------ |
| Icypeas API Key | Your Icypeas API key from app.icypeas.com | Yes      | `-`    |

## Available Actions

<AccordionGroup>
  <Accordion title="find_email — Find a professional email address from a first name, last name, and company domain or name. Submits the search and polls until a result is available.">
    ### Parameters

    <ResponseField name="domain_or_company" type="string" required>
      Target company domain (e.g. stripe.com) or company name (e.g. Stripe)
    </ResponseField>

    <ResponseField name="firstname" type="string">
      Target person's first name
    </ResponseField>

    <ResponseField name="lastname" type="string">
      Target person's last name
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "search_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Search Id"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "email": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Email"
        },
        "firstname": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Firstname"
        },
        "lastname": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Lastname"
        },
        "item": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Item"
        }
      },
      "required": [
        "success"
      ],
      "title": "FindEmailOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="verify_email — Verify whether an email address is valid and deliverable. Submits the verification and polls until a result is available.">
    ### Parameters

    <ResponseField name="email" type="string" required>
      Email address to verify (e.g. [john@stripe.com](mailto:john@stripe.com))
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "search_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Search Id"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "email": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Email"
        },
        "valid": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Valid"
        },
        "item": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Item"
        }
      },
      "required": [
        "success"
      ],
      "title": "VerifyEmailOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* **Async polling**: each call submits a job, then polls the read
  endpoint roughly every 3 seconds for up to 120 seconds. If the job
  does not reach a terminal status in that window, the call returns
  `success=False` with an explanatory error.
* **Terminal statuses**: `FOUND`, `DEBITED`, `NOT_FOUND`,
  `DEBITED_NOT_FOUND`, `BAD_INPUT`, `INSUFFICIENT_FUNDS`, `ABORTED`. A
  clean no-match (`NOT_FOUND`) is still a successful run — `email` is
  simply `null` and, for verification, `valid` is `false`.
* **Rate limits**: approximately 60 requests/minute.
* **Pricing** (approx., per vendor pricing page): email finding \~1
  credit per found email; email verification \~0.1 credit per check.
* **Error model**: non-2xx responses and timeouts are caught and
  returned as `success=False` + `error` rather than raising. Plan for
  retries on the agent side based on the error string.

## Related integrations

<CardGroup cols={3}>
  <Card title="Enrow" href="/integrations/tools/enrow" />

  <Card title="Findymail" href="/integrations/tools/findymail" />

  <Card title="NeverBounce" href="/integrations/tools/neverbounce" />
</CardGroup>

## Links

* [Icypeas](https://www.icypeas.com)
