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

# Prospeo

> Find a LinkedIn contact's verified work email with Prospeo's Enrich Person API, then use it in the next steps of the campaign.

> [!NOTE]
>
> **Pro plan.** Prospeo works through a connection and HTTP steps, which are part of Pro and Agency (and the free trial). Anything you already have keeps working on every plan. See [Plans and billing](/help/account/billing.md).

When someone accepts your invitation, a **Webhook / HTTP** step sends their LinkedIn profile URL to Prospeo and gets back a verified work email (and a mobile number if you ask). Your email steps, sequencer or CRM can then use it.

> [!NOTE]
>
> **How it connects:** Prospeo's API with your API key in a header. See Prospeo's [Enrich Person](https://prospeo.io/api-docs/enrich-person) docs. The request and answer below follow Prospeo's docs.

## Before you start

* **Prospeo plan:** each email or mobile found uses Prospeo credits, and the API uses the same credits as the app. A mobile costs more than an email (Prospeo's docs).
* **An API key:** in Prospeo, copy it from the API section of your dashboard.

## 1. Connect Prospeo

In Kerux, open **Integrations > Connections**, click **Connect** on **Custom API** (under **Developers**):

* **How it signs in:** **API key in a header**, **Header name** `X-KEY`, paste the key.
* **Base URL:** `https://api.prospeo.io`

Click **Save**, then **Test connection**.

## 2. Look up the email

After **Invitation accepted**, add a **Webhook / HTTP** step, pick the Prospeo connection, name it `prospeo` and paste:

```json theme={null}
{
  "method": "POST",
  "url": "/enrich-person",
  "bodyType": "json",
  "body": {
    "only_verified_email": true,
    "data": { "linkedin_url": "{{contact.linkedin_url}}" }
  }
}
```

Values you type in the JSON (like `true`) keep their type; values that come from `{{...}}` are sent as text.

Prospeo answers with the person it found (from its docs, trimmed). Pick the exact field paths from the first real answer in the contact's journey:

```json theme={null}
{
  "error": false,
  "person": {
    "first_name": "Daniel",
    "last_name": "Park",
    "email": { "email": "daniel@northwind.com", "status": "VERIFIED" }
  }
}
```

## 3. Use it safely

* Add a **Condition** on the email field: found goes on to your email step, empty stays on LinkedIn only. Kerux never sends an email to an empty address.
* Add an **Update contact** step that sets **Email** to the email from Prospeo's answer.
* To ask for a mobile too, add `"enrich_mobile": true` only where you will call or text.

## Test with one contact

In the campaign's **Builder**, click **Test** to open **Test on one contact** with a contact whose profile you know. The journey shows what Kerux sent to Prospeo and Prospeo's answer.

## Common errors

> [accordion] 401 or INVALID\_API\_KEY
>
> The key is wrong or was regenerated. Copy it again from Prospeo, edit the connection and paste it.

> [accordion] No result / NO\_MATCH
>
> Prospeo found nobody or no verified email for that profile. The step still succeeds; branch on the email being empty.

> [accordion] Not enough credits
>
> Your Prospeo credits ran out. The contact stops in **Needs attention** with Prospeo's message; add credits and click **Retry**.

Related: [Webhook steps](/help/integrations/webhook-steps.md), [Hunter](/help/integration-guides/hunter.md), [Apollo.io](/help/integration-guides/apollo.md).


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