curl --request GET \
--url https://client-api.salesfinity.co/v1/api/enrichment/email/{id} \
--header 'x-api-key: <api-key>'import requests
url = "https://client-api.salesfinity.co/v1/api/enrichment/email/{id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://client-api.salesfinity.co/v1/api/enrichment/email/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://client-api.salesfinity.co/v1/api/enrichment/email/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://client-api.salesfinity.co/v1/api/enrichment/email/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://client-api.salesfinity.co/v1/api/enrichment/email/{id}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-api.salesfinity.co/v1/api/enrichment/email/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"_id": "507f1f77bcf86cd799439011",
"status": "pending",
"linkedin_url": "https://www.linkedin.com/in/username",
"enrichment_type": "work_email",
"email": {
"email": "[email protected]",
"type": "work"
},
"external_id": "lead-42"
}{
"message": "Forbidden resource",
"error": "Forbidden",
"statusCode": 403
}{
"message": "Cannot GET /v1/unknown-route",
"error": "Not Found",
"statusCode": 404
}{
"message": "Too many requests",
"error": "Too Many Requests",
"statusCode": 429
}{
"message": "Internal server error",
"error": "Internal Server Error",
"statusCode": 500
}Poll an Email Enrichment
Returns the current state of an email enrichment request. While the lookup is in progress status is pending or processing. When finished status is completed (with the found email) or not-found (no email available). Polling is a fallback for the callback and is safe to call repeatedly — a request is never charged twice.
curl --request GET \
--url https://client-api.salesfinity.co/v1/api/enrichment/email/{id} \
--header 'x-api-key: <api-key>'import requests
url = "https://client-api.salesfinity.co/v1/api/enrichment/email/{id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://client-api.salesfinity.co/v1/api/enrichment/email/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://client-api.salesfinity.co/v1/api/enrichment/email/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://client-api.salesfinity.co/v1/api/enrichment/email/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://client-api.salesfinity.co/v1/api/enrichment/email/{id}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-api.salesfinity.co/v1/api/enrichment/email/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"_id": "507f1f77bcf86cd799439011",
"status": "pending",
"linkedin_url": "https://www.linkedin.com/in/username",
"enrichment_type": "work_email",
"email": {
"email": "[email protected]",
"type": "work"
},
"external_id": "lead-42"
}{
"message": "Forbidden resource",
"error": "Forbidden",
"statusCode": 403
}{
"message": "Cannot GET /v1/unknown-route",
"error": "Not Found",
"statusCode": 404
}{
"message": "Too many requests",
"error": "Too Many Requests",
"statusCode": 429
}{
"message": "Internal server error",
"error": "Internal Server Error",
"statusCode": 500
}callback_url webhook — it is safe to call repeatedly, and a request is never charged twice regardless of how often you poll.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id | string | The enrichment request _id returned when the request was created. |
Status lifecycle
| Status | Meaning |
|---|---|
pending | Accepted, not yet started. |
processing | Lookup in progress. |
completed | An email was found — see the email field. (1 credit charged.) |
not-found | Lookup finished, no email available. email is null. No credit charged. |
failed | The lookup could not be completed. |
Response (200) — completed
{
"_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"
}
Response (200) — still running
{
"_id": "507f1f77bcf86cd799439011",
"status": "processing",
"linkedin_url": "https://www.linkedin.com/in/janedoe"
}
Errors
| Status | Description |
|---|---|
| 404 | No enrichment request found for the given id |
Authorizations
Team-scoped API key generated in the Salesfinity dashboard under Settings -> Connections & API. A missing or invalid key returns HTTP 403.
Path Parameters
The enrichment request _id returned by POST /v1/api/enrichment/email.
Response
Current state of the enrichment request.
Enrichment request ID. Use this to poll GET /v1/api/enrichment/email/{id}.
"507f1f77bcf86cd799439011"
Current state of the request. completed means an email was found; not-found means none was available.
pending, processing, completed, not-found, failed "https://www.linkedin.com/in/username"
Present once the lookup resolves. Reflects the requested email type.
work_email, personal_email Populated when status is completed. Null when status is not-found.
Show child attributes
Show child attributes
The external_id supplied on the original request, if any.
"lead-42"