Guides

Find and verify a contact

Find one work email or mobile number and interpret the enrichment and billing response.

Use the single-record enrichment endpoints when you need a result during an interactive workflow, such as CRM research, lead routing, or account review.

Choose a lookup

GoalEndpointRequired input
Find a work emailPOST /v1/emails/findLinkedIn URL, or first name + last name + company domain or name
Validate an emailPOST /v1/emails/validationEmail address
Find a mobile numberPOST /v1/mobile-numbers/findLinkedIn URL, or first name + last name + company website or name

Find a work email

Choose exactly one identity mode. Do not combine the LinkedIn URL with the name-and-domain fields.

ModeRequired fieldsDo not include
Name and companyfirst_name, last_name, and at least one of url or company_namelinkedin_url
LinkedIn profilelinkedin_urlName-and-company fields

The url field accepts a domain such as acmeplumbing.com or a full URL. LeadX normalizes a full URL to its host. Use company_name when you do not know the domain. A domain usually produces a more accurate match.

curl --fail-with-body "https://api.leadx.com/v1/emails/find" \
  -H "X-API-KEY: $LEADX_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
    "first_name": "Jane",
    "last_name": "Smith",
    "url": "acmeplumbing.com"
  }'

The response reports both the enrichment result and its credit effect:

{
  "success": true,
  "email": "jane.smith@acmeplumbing.com",
  "email_status": "VALID",
  "input": {
    "first_name": "Jane",
    "last_name": "Smith",
    "url": "acmeplumbing.com",
    "linkedin_url": null
  },
  "billing": {
    "credit_type": "EMAIL",
    "credits_debited": 1,
    "reason": null,
    "balance_after": 124,
    "mode": "CLIENT"
  }
}

When LeadX does not return a billable result, inspect billing.reason instead of assuming a credit was used. success: true with email: null is a completed no-result lookup, not a transient failure.

Validate an email

Email validation is a POST request with a JSON body. Set mx_records to true only when you need the normalized primary MX host.

curl --fail-with-body "https://api.leadx.com/v1/emails/validation" \
  -H "X-API-KEY: $LEADX_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
    "email": "jane.smith@acmeplumbing.com",
    "mx_records": true
  }'
{
  "success": true,
  "email": "jane.smith@acmeplumbing.com",
  "email_status": "Valid",
  "mx_records": {
    "mx": "aspmx.l.google.com"
  }
}

Validation uses these exact, case-sensitive statuses:

StatusMeaning
ValidThe address passed the available validation checks
InvalidThe address failed syntax or validation checks
RiskyThe result does not meet the confidence required for Valid
UnknownValidation did not produce a definitive classification

Do not infer a credit decision from the validation status alone.

Find a mobile number

Choose a LinkedIn URL or the contact's first and last name with at least one of company_name or company_website. Do not combine these identity modes. company_website accepts a domain or full URL.

curl --fail-with-body "https://api.leadx.com/v1/mobile-numbers/find" \
  -H "X-API-KEY: $LEADX_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
    "linkedin_url": "https://www.linkedin.com/in/jane-smith"
  }'
{
  "success": true,
  "mobile_number": "2125550124",
  "country_code": "US",
  "input": {
    "linkedin_url": "https://www.linkedin.com/in/jane-smith"
  },
  "billing": {
    "credit_type": "MOBILE",
    "credits_debited": 1,
    "balance_after": 49,
    "mode": "CLIENT"
  }
}

US numbers contain 10 digits. Numbers outside the US retain their E.164 country code.

Example identities and results are illustrative. Replace them with a contact you are authorized to research.

Handle result and failure states

  • Treat success: true as successful request processing, not a guarantee that an email or phone was found.
  • Check email, mobile_number, and the associated status before writing to your CRM.
  • Use a bounded connection and response timeout. Email discovery can take longer than cached company or mobile lookups.
  • Retry a received 429, 502, 503, or 504 with bounded exponential backoff and jitter.
  • Do not automatically retry an ambiguous client timeout after the request was sent. Reconcile available logs first.
  • Do not retry 400, 401, 402, 403, or 422 without resolving the underlying condition.

See Results and billing for reason codes and Reliability and retries for the retry decision matrix. The email endpoint reference, validation reference, and mobile endpoint reference provide complete schemas.