Enrich a record
Looks up missing information for a record from Lightfield’s enrichment providers and writes it back to it. Accepts contacts and accounts.
Enrichment runs in the background: this returns as soon as the run is created. Poll GET /v1/enrichmentRun/{runId} for its status. A record can only have one enrichment run at a time — if one is already in flight, this returns that run rather than starting a second.
Which fields are enriched, and whether a provider answer overwrites an existing value or is raised as a suggestion, come from the workspace’s enrichment settings. Naming fields explicitly overrides which fields are enriched, but not the write policy.
Required scopes: contacts:update to enrich a contact, accounts:update to enrich an account
Rate limit category: Write
Body ParametersJSON
Fields to enrich, e.g. ["email", "title"]. Named fields are refreshed even when they already hold a value, so this is how a stale value is replaced. Omit to fill only the fields the record is missing. Naming a field the workspace’s settings turn off enriches it anyway, and its answer is raised as a suggestion rather than written over a value the record already holds. profilePhotoUrl has no suggestion form, so it stays rejected while it is turned off. A named field is not used to look the record up — the run derives it fresh from the record’s other identifiers — so naming every identifier (a contact’s name and email together) leaves nothing to search by and is skipped with no_operations. phone is filled only when another field’s lookup happens to return it, so requesting it on its own is skipped the same way.
Enrich a record
curl https://api.lightfield.app/v1/enrichmentRun/$ENTITY_SLUG/$ENTITY_ID \
-H 'Content-Type: application/json' \
-H 'Lightfield-Version: 2026-03-01' \
-H "Authorization: Bearer $API_KEY" \
-d '{}'{
"enrichmentRun": {
"id": "id",
"completedAt": "completedAt",
"createdAt": "createdAt",
"entityId": "entityId",
"entityType": "contact",
"startedAt": "startedAt",
"status": "queued",
"targetFields": [
"string"
],
"trigger": "creation",
"updatedAt": "updatedAt"
},
"reason": "no_targets",
"status": "started"
}Returns Examples
{
"enrichmentRun": {
"id": "id",
"completedAt": "completedAt",
"createdAt": "createdAt",
"entityId": "entityId",
"entityType": "contact",
"startedAt": "startedAt",
"status": "queued",
"targetFields": [
"string"
],
"trigger": "creation",
"updatedAt": "updatedAt"
},
"reason": "no_targets",
"status": "started"
}