People

Enrich person

Looks up one person's profile and mobile phone with Furnace's data providers, from their email or LinkedIn URL. Costs 1 enrichment credit per new match (no match or a failed lookup is free). If the person has a usable enrichment from the last 30 days, it is returned for free (reused: true) unless refresh is true. Nothing is saved to the person: call updatePerson with the fields you want. When status is pending, a mobile phone is still on its way; read it with getPersonEnrichment in a few minutes. phone_number is the company phone.

POST/v1/people/{globalLeadId}/enrich

Authorization

bearerAuth
AuthorizationBearer <token>

Use an account API key in the Authorization header: Authorization: Bearer f_....

In: header

Path Parameters

globalLeadIdstring

Stable account-scoped person id (SHA-256 of normalized email).

Header Parameters

Idempotency-Key?string

Optional idempotency key for campaign create, lead create, bulk lead imports, and person enrichment. Retries with the same key and body return the cached response.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

refresh?boolean

Pay for a fresh lookup even when the person has a usable enrichment from the last 30 days. Default false.

curl -X POST "https://example.com/v1/people/string/enrich" \  -H "Content-Type: application/json" \  -d '{}'
{  "data": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "global_lead_id": "string",    "status": "pending",    "suggestion": {      "name": "string",      "first_name": "string",      "last_name": "string",      "title": "string",      "company_name": "string",      "website": "string",      "company_linkedin_url": "string",      "linkedin_url": "string",      "phone_number": "string",      "mobile_phone_number": "string"    },    "created_at": "2019-08-24T14:15:22Z",    "updated_at": "2019-08-24T14:15:22Z",    "credits_charged": 0,    "credits_remaining": 0,    "credit_limit": 0,    "reused": true,    "error": {      "code": "providers_out_of_credits",      "message": "string"    }  }}
{  "error": {    "type": "invalid_request_error",    "code": "invalid_flow",    "message": "Flow validation failed"  },  "details": [    {      "path": "nodes[1].data.variants[0].id",      "code": "invalid_variant_id",      "message": "Email variants must have a stable UUID id."    }  ]}
{  "error": {    "type": "authentication_error",    "code": "invalid_api_key",    "message": "A valid Furnace API key is required"  }}
{  "error": {    "type": "invalid_request_error",    "code": "insufficient_credits",    "message": "No enrichment credits left this month (monthly limit 100)."  }}
{  "error": {    "type": "invalid_request_error",    "code": "campaign_not_found",    "message": "Campaign not found"  }}
{  "error": {    "type": "invalid_request_error",    "code": "target_missing_enrollment",    "message": "The existing contact for this address has no active enrollment in this campaign; launch the campaign or re-add the contact before replacing. Call GET /v1/threads/{id}/replace-lead/preview to inspect the match first."  }}
{  "error": {    "type": "rate_limit_error",    "code": "rate_limit_exceeded",    "message": "Rate limit exceeded for this account"  }}
{  "error": {    "type": "api_error",    "code": "internal_error",    "message": "Internal server error"  }}