Enrich Contacts
Reveal emails and phone numbers for up to 100 contacts you’ve already found via Search Contacts.
curl --request POST \
--url https://api.lusha.com/v3/contacts/enrich \
--header 'Content-Type: application/json' \
--header 'api_key: <api-key>' \
--data '
{
"ids": [
"4389064654",
"4389064624"
],
"reveal": [
"emails",
"phones"
]
}
'id from a search result, and choose what to unlock with reveal.
id values returned by Search Contacts. It doesn’t accept email, linkedinUrl, or name-based identifiers. To search and reveal in one call, use Search and Enrich Contacts instead.Endpoint
POST https://api.lusha.com/v3/contacts/enrich
Authentication
Request body
["4389064654", "4389064624"]emails, phonesResponse
id you passed in.Show result fields
Show result fields
Show properties
Show properties
IsraelILTel Aviv DistrictTel AvivAsia[longitude, latitude] of the city the contact is based in. City-level only - not a street address or neighborhood. Example: [34.78057, 32.08088]reveal includes (or omits) emails.Show properties
Show properties
orit.shilvock@lusha.comwork, private, unknown.A+YYYY-MM-DD.lusha, or the provider id when a Data Waterfall provider delivered it (for example wiza). Omitted when the waterfall didn’t run.reveal includes (or omits) phones.Show properties
Show properties
+14155551234mobile, direct, work, unknown.YYYY-MM-DD.lusha, or the provider id when a Data Waterfall provider delivered it (for example wiza). Omitted when the waterfall didn’t run.1520500has array in your Search Contacts response (skills, certifications, awards, courses) to see what’s available before enriching.Show properties
Show properties
["Python", "Project Management"]options.includePartialProfiles is true.YYYY-MM-DD.email and one for phone.completed, partial, halted, OUT_OF_CREDITS, PARTIAL_OUT_OF_CREDITS.status is set. Don’t parse it - branch on status and statusReason.WATERFALL_NOT_CONFIGURED, WATERFALL_NOT_IN_PLAN, or WATERFALL_DISABLED. When set, status is partial.tableId on the request. Summarizes what was written to the table. The rest of the response is unaffected even if the table write fails.Show properties
Show properties
482910Error codes
| Status | Meaning |
|---|---|
400 | Bad request - invalid input data |
401 | Unauthorized - invalid or missing API key |
402 | Payment required - insufficient credits |
403 | Forbidden - account inactive or V3 access not enabled |
429 | Too many requests - rate limit exceeded |
Example
curl --request POST \
--url https://api.lusha.com/v3/contacts/enrich \
--header 'api_key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"ids": ["4389064654", "4389064624"],
"reveal": ["emails", "phones"]
}'
{
"ids": ["4389064654", "4389064624"],
"reveal": ["emails", "phones"]
}
{
"requestId": "6e4b1192-9440-42c4-9a3e-793ddef6d73c",
"results": [
{
"id": "4389064654",
"firstName": "Orit",
"lastName": "Shilvock",
"fullName": "Orit Shilvock",
"jobTitle": {
"title": "Vice President of Partnerships",
"departments": ["Business Development"],
"seniority": "Vice President"
},
"location": {
"country": "Israel",
"countryIso2": "IL",
"city": "Tel Aviv",
"continent": "Asia"
},
"emails": [
{ "email": "orit.shilvock@lusha.com", "type": "work", "confidence": "A+", "updateDate": "2026-04-23" }
],
"phones": [
{ "number": "+14155551234", "type": "mobile", "doNotCall": false, "updateDate": "2026-04-23" }
],
"company": {
"id": "16303253",
"name": "Lusha",
"domain": "www.lusha.com",
"industry": "Technology, Information & Media"
},
"socialLinks": {
"linkedin": "https://www.linkedin.com/in/orit-shilvock-6243bb5"
},
"updateDate": "2026-04-23"
}
],
"billing": {
"creditsCharged": 2,
"resultsReturned": 1
}
}
Authorizations
Your Lusha API key. You can find this in your Lusha dashboard under API settings.
Include this key in the api_key header for all requests.
Body
1 - 100 elements["4389064654", "4389064624"]
emails, phones ["emails", "phones"]
Whether this call is allowed to fall through to your enabled
third-party providers when Lusha's own data has no match, for the fields
requested via reveal. Defaults to true whenever Data Waterfall is
enabled on your account (Account > Waterfall) - pass false to opt this
specific call out. Has no effect if Data Waterfall or no providers are
enabled on your account. Provider order isn't configurable - Lusha manages
that internally.
false means Lusha data only. If Lusha does not have a requested field, the response sets statusReason: WATERFALL_DISABLED.
false
Optional. If provided, these contacts are also added to this table (if not already present) and the revealed fields' columns are populated. See the Tables API.
"482910"
Response
Successful response
Show child attributes
Show child attributes
Added to a Prospecting, Enrich, Signals, or Lookalike response when tableId is passed on the request. The primary response is unaffected even if the table write fails.
Show child attributes
Show child attributes
Credit usage summary for a V3 API request
Show child attributes
Show child attributes
Waterfall outcome for the request. Omitted when the waterfall did not run.
completed- every requested data point was resolved.partial- at least one requested data point is still missing, or still in progress whenjobis present.halted- the run stopped before it finished the provider list.OUT_OF_CREDITS- the run stopped because the account could not pay.PARTIAL_OUT_OF_CREDITS- some data was returned, then credits ran out.
completed, partial, halted, OUT_OF_CREDITS, PARTIAL_OUT_OF_CREDITS "partial"
Human-readable text, present whenever status is set. Do not parse it - branch on status and statusReason.
"Some requested data points are still being retrieved."
Stable reason a requested field is empty because the waterfall did not run. When set, status is partial.
WATERFALL_NOT_CONFIGURED- Data Waterfall is on the plan, but no providers are connected.WATERFALL_NOT_IN_PLAN- Data Waterfall is not on the account's plan.WATERFALL_DISABLED- the request setwaterfallEnabledtofalse, and Lusha did not have the field.
WATERFALL_NOT_CONFIGURED, WATERFALL_NOT_IN_PLAN, WATERFALL_DISABLED Present only when an async provider is still working. Absent means the response is final.
Show child attributes
Show child attributes
Was this page helpful?
curl --request POST \
--url https://api.lusha.com/v3/contacts/enrich \
--header 'Content-Type: application/json' \
--header 'api_key: <api-key>' \
--data '
{
"ids": [
"4389064654",
"4389064624"
],
"reveal": [
"emails",
"phones"
]
}
'