Enrich Contact
Find a contact’s missing details from what you already know about them.
POST
/
v1
/
contacts
/
enrich
Enrich Contact
curl --request POST \
--url https://api.topo.io/v1/contacts/enrich \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "<string>",
"linkedin_url": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"company_name": "<string>",
"company_domain": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: '<string>',
linkedin_url: '<string>',
first_name: '<string>',
last_name: '<string>',
company_name: '<string>',
company_domain: '<string>'
})
};
fetch('https://api.topo.io/v1/contacts/enrich', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.topo.io/v1/contacts/enrich"
payload = {
"email": "<string>",
"linkedin_url": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"company_name": "<string>",
"company_domain": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"completed": true,
"enrichment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"email": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"job_title": "<string>",
"linkedin_url": "<string>",
"phone_number": "<string>",
"company_name": "<string>",
"company_domain": "<string>"
}Find a contact’s missing details from what you already know about them.
The person described in the body is saved as a contact in your workspace:
an existing contact is found by LinkedIn URL, then email, then name and
company domain, and is never overwritten. Its missing email is then asked
from Topo’s lead database and an enrichment provider, which spends
enrichment credits, and saved on the contact. Use
POST /v1/contacts/get-and-enrich to start from a contact you already
store.
A lookup that is still running after about 20 seconds returns
completed: false with an enrichment_id: collect the answer with
GET /v1/contacts/enrichments/{enrichment_id} rather than enriching again.
Requires the contacts:write scope on the API key.Authorizations
Bearer API key issued from Settings → Developers.
Body
application/json
Enrich Contact payload
Response
200 - application/json
Successful Response
Whether enrichment finished. false while the lookup is still running: collect the answer with enrichment_id.
Set when completed is false: pass it to GET /v1/contacts/enrichments/{enrichment_id} to collect the answer instead of enriching again.
The workspace contact the answer was saved on.
Email.
First name.
Last name.
Job title.
LinkedIn profile URL.
Phone number.
Employer name.
Employer's primary domain.
Was this page helpful?
⌘I
Enrich Contact
curl --request POST \
--url https://api.topo.io/v1/contacts/enrich \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "<string>",
"linkedin_url": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"company_name": "<string>",
"company_domain": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: '<string>',
linkedin_url: '<string>',
first_name: '<string>',
last_name: '<string>',
company_name: '<string>',
company_domain: '<string>'
})
};
fetch('https://api.topo.io/v1/contacts/enrich', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.topo.io/v1/contacts/enrich"
payload = {
"email": "<string>",
"linkedin_url": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"company_name": "<string>",
"company_domain": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"completed": true,
"enrichment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"email": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"job_title": "<string>",
"linkedin_url": "<string>",
"phone_number": "<string>",
"company_name": "<string>",
"company_domain": "<string>"
}