Skip to main content
POST
/
v1
/
api
/
enrichment
/
email
Request an email enrichment
curl --request POST \
  --url https://client-api.salesfinity.co/v1/api/enrichment/email \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "linkedin_url": "https://www.linkedin.com/in/username",
  "callback_url": "https://example.com/webhooks/enrichment",
  "external_id": "lead-42"
}
'
{
  "_id": "507f1f77bcf86cd799439011",
  "linkedin_url": "https://www.linkedin.com/in/username",
  "email": {
    "email": "[email protected]",
    "type": "work"
  },
  "external_id": "lead-42"
}
Starts an asynchronous lookup of a work or personal email address for a LinkedIn profile. The call returns immediately with a request _id and a status of pending. The actual lookup runs in the background — collect the result either by polling the returned _id, or by providing a callback_url that we POST to when the lookup finishes.
Each completed lookup costs 1 enrichment credit. Credits are charged only when an email is found (status: "completed"), never for not-found. The request is rejected with 402 if the team has no remaining credits — check your balance with Get Enrichment Credits.

Request Body

FieldTypeRequiredDescription
linkedin_urlstringYesLinkedIn profile URL. Must be a linkedin.com/in/<username> URL.
typestringYesEmail type to find — work or personal.
callback_urlstring (URL)NoWebhook POSTed when the enrichment finishes. Retried up to 3 times with backoff.
external_idstring (≤256)NoOpaque value echoed back in the callback for client-side correlation.

Example Request

{
  "linkedin_url": "https://www.linkedin.com/in/janedoe",
  "type": "work",
  "callback_url": "https://example.com/webhooks/enrichment",
  "external_id": "lead-42"
}

Response (201)

{
  "_id": "507f1f77bcf86cd799439011",
  "status": "pending",
  "linkedin_url": "https://www.linkedin.com/in/janedoe"
}
Persist the _id — it is the handle for polling and the identifier referenced in the callback.

Callback payload

If you supplied a callback_url, we POST a JSON body to it once the lookup resolves:
{
  "request_id": "507f1f77bcf86cd799439011",
  "status": "completed",
  "enrichment_type": "work_email",
  "email": { "email": "[email protected]", "type": "work" },
  "linkedin_url": "https://www.linkedin.com/in/janedoe",
  "external_id": "lead-42"
}
status is completed (with email) or not-found (email is null). Delivery is attempted up to 3 times; if every attempt fails, fall back to polling.

Errors

StatusDescription
400Validation failed — linkedin_url is not a linkedin.com/in/<username> URL, or type is not work/personal
402Insufficient enrichment credits

Authorizations

x-api-key
string
header
required

Body

application/json
linkedin_url
string
required

LinkedIn profile URL. Must be a linkedin.com/in/ URL.

Example:

"https://www.linkedin.com/in/username"

type
enum<string>
required

Which email type to find.

Available options:
work,
personal
callback_url
string<uri>

Optional. Webhook URL POSTed when the enrichment finishes. Retried up to 3 times.

Example:

"https://example.com/webhooks/enrichment"

external_id
string

Optional. Echoed back in the callback payload for client-side correlation.

Maximum string length: 256
Example:

"lead-42"

Response

Enrichment request accepted. Poll the returned _id, or wait for the callback.

_id
string

Enrichment request ID. Use this to poll GET /v1/api/enrichment/email/{id}.

Example:

"507f1f77bcf86cd799439011"

status
enum<string>

Current state of the request. completed means an email was found; not-found means none was available.

Available options:
pending,
processing,
completed,
not-found,
failed
linkedin_url
string
Example:

"https://www.linkedin.com/in/username"

enrichment_type
enum<string>

Present once the lookup resolves. Reflects the requested email type.

Available options:
work_email,
personal_email
email
object

Populated when status is completed. Null when status is not-found.

external_id
string

The external_id supplied on the original request, if any.

Example:

"lead-42"