Use case
Turn partial lead records into full contact profiles for sales outreach, CRM enrichment, or lead qualification.This endpoint is also available at
/enrich-lead and /enrich-lead-async. Both paths are fully supported and functionally identical.Endpoint
API Reference
See the full request/response schema and parameters in the API Reference.
Pricing
See Credits & Pricing Guide for credit costs by tier.Errors
For error responses (400, 403, 422, etc.), see Handling Errors.Tiers
Thetier parameter controls research depth and cost.
| Tier | Description | Access |
|---|---|---|
low (default) | Baseline tier — fast and cheap. Good for high-volume enrichment where you mostly need a name → email/LinkedIn mapping. | All orgs |
medium | Deeper research with more sources and iterations. Better for hard-to-find contacts. | All orgs |
high | OSINT-grade investigation — deeply recursive crawling across the open web, dark web, directories, proprietary sources. Designed for the hardest prospects, sensitive diligence, and investigative workflows. | Exclusive — access is granted case-by-case by our team. Contact sales to request. |
Using the struct field
The struct field defines exactly what data you want back. Each key becomes a field in structured_data, and its value tells the agent what to find.
You can pass either a plain-English description or an object with description and type:
"The individual's primary work email" returns better results than "email".
For supported types, type resolution priority, and casting examples, see Struct & Type Casting.
Timeouts and parallelization
This endpoint performs deep research and is a long-running operation. Typical P95 runtime is about 5 minutes and can reach 10 minutes for complex leads. We are actively working on performance improvements.- Set client timeouts appropriately: If you call the sync endpoint, configure your HTTP client with a timeout of at least 15 minutes.
- Prefer async in production: Use
POST /people-intelligence-asyncand pollGET /job-status/{task_id}. - Parallelize for throughput: Submit multiple async jobs in parallel (bounded concurrency) rather than waiting for each to complete sequentially.
Understanding scores
| Field | Meaning | Range |
|---|---|---|
confidence_score | Global quality score — overall quality, consistency, and correctness of the returned data. | 0–10 |
Sync usage
Make a direct request and wait for the response. Enrichment can take several minutes depending on depth of research.Async pattern
For production workflows, use/people-intelligence-async to submit a job and poll for results. This avoids long-lived HTTP connections during deep research runs.
The flow is:
- Submit —
POST /people-intelligence-asyncwith the same body as the sync endpoint. Response includes atask_id. - Poll —
GET /job-status/{task_id}untilstatusiscompleted,failed, orcancelled. - Read result — When
completed, the full enrichment is in theresultfield.
The async start endpoint returns uppercase
RUNNING. Subsequent /job-status/{task_id} calls return lowercase statuses. charge_amount is returned in cents, not credits.