Skip to main content
POST
Enrich Contact
Runs a Temporal pipeline (Apollo people-search → Scrapin profile match → Hunter email verification → photo resolution) against a single contact, writing provider-namespaced results into enrichment_data. It follows the same start/poll shape as CSV import. Before enqueuing a workflow, checks a same-domain cache: if another contact on the same email domain has fresh (< 30 days old) cached enrichment, that’s returned synchronously as 200 and no workflow runs. Otherwise, resets the contact’s progress tracking (enrichment_data.meta, preserving any prior provider data) and starts ContactEnrichmentWorkflow, returning 202 immediately.

Auth

Requires a CRM manage scope and an active organization on the token. Any *:manage scope qualifies — in practice contacts:manage, deals:manage, companies:manage, or activities:manage.

Response

Either:
  • 200 (cache hit) — { "ok": true, "cached": true, "enrichment": <cached enrichment object> }
  • 202 (workflow started) — { "job_id": "<temporal workflow id>" }. Poll Get enrichment status with the same contact_id (the job ID isn’t needed for polling — status is read off the contact row).

Errors

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

contact_id
string
required

The contact's id.

Response

Successful Response