Skip to main content

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

The tier parameter controls research depth and cost. To override the default, pass tier in the request body. See Sync usage for an example.
If tier is omitted, low is used. Requests with tier: "high" or tier: "xhigh" on an org without access return 403 — see Handling Errors.

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 agent uses these descriptions to guide its research. Be specific — "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-async and poll GET /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

The findings field on the response is deprecated. It currently returns an empty list and will be removed in a future update.

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:
  1. SubmitPOST /people-intelligence-async with the same body as the sync endpoint. Response includes a task_id.
  2. PollGET /job-status/{task_id} until status is completed, failed, or cancelled.
  3. Read result — When completed, the full enrichment is in the result field.
The async start endpoint returns uppercase RUNNING. Subsequent /job-status/{task_id} calls return lowercase statuses. charge_amount is returned in cents, not credits.

Polling example