API reference
Enrich a person
Resolve a partial identifier — a work email, a profile URL, or a name plus a company — to a full person record with per-field provenance.
Planned — not callable yet
POST/api/v1/public/person/enrich
Three credits on a successful match; two more if a verified business email is requested. A no-match costs nothing. A person who has opted out is not returned by any endpoint. The call answers as a no-match and is not billed. There is no flag to include them. NOT CALLABLE YET, and the blocker is compliance rather than effort: a public read of the person graph has no suppression-list coverage today, so serving people before that is reconciled would risk serving someone who has opted out. The company endpoints ship first because organization facts carry no such obligation.
Parameters
| Name | Type | Description | |
|---|---|---|---|
| string | Optional | A work email address. The strongest identifier — prefer it when you have one. | |
| profile_url | string | Optional | A public professional profile URL used as an addressing key. |
| name | string | Optional | Full name. Must be sent together with `company_domain` — a name alone is not resolvable. |
| company_domain | string | Optional | The employer's primary domain, used to disambiguate a name. |
| verify_email | boolean | Optional | Request a deliverability check on the returned work address. Adds two credits, and only when an address is actually returned. |
Returns
| Field | Type | Description |
|---|---|---|
| id | string | Stable TruePoint person id. Safe to store and re-query. |
| full_name | string | Current full name. |
| title | string | Current job title. Carries provenance. |
| company | object | The current employer, as a company summary object. |
| work_email | string | null | Verified business email. Null when none met the confidence bar. Carries provenance. |
| employment_history | array | Prior roles with company, title and date range where known. |
| field_provenance | object | Per-field source class, last-seen timestamp and corroboration count. Read this before acting on a field. Carries provenance. |
Example
bash
curl -X POST https://api.truepoint.in/api/v1/public/person/enrich \
-H "Authorization: Bearer $TRUEPOINT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Priya Nair","company_domain":"acme.com","verify_email":true}'json
{
"id": "prs_7f3a91c2",
"full_name": "Priya Nair",
"title": "VP Revenue Operations",
"company": { "id": "cmp_2b81", "name": "Acme", "domain": "acme.com" },
"work_email": "priya.nair@acme.com",
"employment_history": [
{ "company": "Acme", "title": "VP Revenue Operations", "from": "2024-03" }
],
"field_provenance": {
"title": { "sources": 3, "class": "corroborated", "last_seen": "2026-08-14" },
"work_email": { "sources": 2, "class": "verified", "last_seen": "2026-08-19" }
},
"credits_charged": 5
}Errors
| Status | Type | Meaning |
|---|---|---|
| 422 | validation_error | The request failed validation — a missing identifier, or a value we could not parse. 422 rather than 400: the request was well-formed, its contents were not. |
| 401 | invalid_token | Missing, malformed, unknown or revoked API key. All four answer identically on purpose — the endpoint must not confirm which keys exist. |
| 403 | insufficient_scope | The key is valid but was not minted with the scope this endpoint requires. |
| 402 | insufficient_credits | The balance cannot cover this call. Nothing was charged and nothing was returned. Carries `balance` and `required`. |
| 429 | rate_limited | Too many requests for this key. Carries `retryAfterSeconds`. Retries are safe and are not billed. |
| 500 | internal | Something failed on our side. Nothing was charged. Retry with backoff. |