enrich_leads: enrich finds an email, verify validates one you already hold. The verifier’s verdict upgrades the lead’s email_status to VERIFIED, RISKY, or UNAVAILABLE. Runs as a background job.
Always two steps. Call it first without
confirm for a free dry-run preview — how many are chargeable, how many were verified recently (free), which verifiers are connected, and the estimated cost. Report that to the user. Then call again with confirm: true to run it.filter or pass ids. If no verifier is connected the tool says so — tell the user to add a MillionVerifier or NeverBounce key in Integrations.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
lead_list_id | string | yes | The lead list’s UUID. |
filter | object | Pick leads by attribute. Omit (with no ids) to default to all unverified emails. | |
ids | string[] | Explicit lead ids — an alternative to filter. | |
provider | enum | millionverifier or neverbounce. Defaults to MillionVerifier, then NeverBounce. | |
confirm | boolean | Omit or false = dry-run cost preview only. true = run it as a background job. |
Returns
Preview (noconfirm):
confirm: true):
When to call it
- Before pushing a list to a sequencer — verify so risky/undeliverable addresses are filtered out.
- Always preview first and surface the cost; only run on the user’s go-ahead.
Backed by
POST /api/lead-lists/:id/verify — preview: true for the dry run, background: true for the job. The verdict is written as a reachability_status observation, so it shows on the lead’s email_status and in the Activity tab. 90-day reuse-gate: recently verified leads are free.