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
| Goal | Endpoint | Required input |
|---|---|---|
| Find a work email | POST /v1/emails/find | LinkedIn URL, or first name + last name + company domain or name |
| Validate an email | POST /v1/emails/validation | Email address |
| Find a mobile number | POST /v1/mobile-numbers/find | LinkedIn 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.
| Mode | Required fields | Do not include |
|---|---|---|
| Name and company | first_name, last_name, and at least one of url or company_name | linkedin_url |
| LinkedIn profile | linkedin_url | Name-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:
| Status | Meaning |
|---|---|
Valid | The address passed the available validation checks |
Invalid | The address failed syntax or validation checks |
Risky | The result does not meet the confidence required for Valid |
Unknown | Validation 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: trueas 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, or504with 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, or422without 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.