Skip to main content
POST
Use this endpoint to reveal full contact data for contacts you’ve already found via Search Contacts. Pass the Lusha id from a search result, and choose what to unlock with reveal.
Enrich Contacts only works with 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

Authentication

string
required
Your Lusha API key.

Request body

string[]
required
Up to 100 Lusha contact IDs, from a Search Contacts response.Example: ["4389064654", "4389064624"]
string[]
What to unlock for each contact. Omit this field to get both by default.Allowed values: emails, phones

Response

string
Unique ID for this request, in UUID format.
object[]
One entry per contact id you passed in.
object
string
Data Waterfall outcome for the request. Omitted when the waterfall didn’t run. One of completed, partial, halted, OUT_OF_CREDITS, PARTIAL_OUT_OF_CREDITS.
string
Human-readable text, present whenever status is set. Don’t parse it - branch on status and statusReason.
string
Why a requested field is empty when the waterfall didn’t run: WATERFALL_NOT_CONFIGURED, WATERFALL_NOT_IN_PLAN, or WATERFALL_DISABLED. When set, status is partial.
object
Present only when a slower Data Waterfall provider is still working. Absent means the response is final. Poll it with Get Contacts Enrich Job.
object
Present only when you pass tableId on the request. Summarizes what was written to the table. The rest of the response is unaffected even if the table write fails.
Billing: Charged per revealed field (email or phone) via per-datapoint pricing.

Error codes

Example

Example response

Authorizations

api_key
string
header
required

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

application/json
ids
string[]
required
Required array length: 1 - 100 elements
Example:
reveal
enum<string>[]
Available options:
emails,
phones
Example:
waterfallEnabled
boolean
default:true

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.

Example:

false

tableId
string

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.

Example:

"482910"

Response

Successful response

requestId
string<uuid>
results
object[]
tableWrite
object

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.

billing
object

Credit usage summary for a V3 API request

status
enum<string>

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 when job is 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.
Available options:
completed,
partial,
halted,
OUT_OF_CREDITS,
PARTIAL_OUT_OF_CREDITS
Example:

"partial"

statusDescription
string

Human-readable text, present whenever status is set. Do not parse it - branch on status and statusReason.

Example:

"Some requested data points are still being retrieved."

statusReason
enum<string>

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 set waterfallEnabled to false, and Lusha did not have the field.
Available options:
WATERFALL_NOT_CONFIGURED,
WATERFALL_NOT_IN_PLAN,
WATERFALL_DISABLED
job
object

Present only when an async provider is still working. Absent means the response is final.