Skip to content

Enrichment

The enrichment endpoints let you look up person and company data instantly, run async waterfall enrichment across multiple providers, and verify email deliverability.


Person Lookup

POST /enrichment/lookup/person

Instant person lookup. Provide at least one of: email, linkedin_url, or first_name + last_name + company_domain.

Request Body

FieldTypeRequiredDescription
emailstringNo*Work email address
linkedin_urlstringNo*LinkedIn profile URL
first_namestringNo*First name (requires last_name + company_domain)
last_namestringNo*Last name (requires first_name + company_domain)
company_domainstringNo*Company domain (requires first_name + last_name)

*At least one lookup strategy is required.

Example

Terminal window
curl -X POST "https://be.graph8.com/api/v1/enrichment/lookup/person" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "jane@acme.com"}'

Response

{
"data": {
"found": true,
"confidence": 0.95,
"data": {
"first_name": "Jane",
"last_name": "Doe",
"job_title": "VP of Sales",
"company": "Acme Inc",
"linkedin_url": "https://linkedin.com/in/janedoe",
"work_email": "jane@acme.com"
}
}
}

Company Lookup

POST /enrichment/lookup/company

Instant company lookup by domain or name.

Request Body

FieldTypeRequiredDescription
domainstringNo*Company domain
namestringNo*Company name

*At least one of domain or name is required.

Example

Terminal window
curl -X POST "https://be.graph8.com/api/v1/enrichment/lookup/company" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain": "acme.com"}'

Response

{
"data": {
"found": true,
"confidence": 0.98,
"data": {
"name": "Acme Inc",
"domain": "acme.com",
"industry": "Technology",
"employee_count": 500,
"annual_revenue": "$50M-$100M"
}
}
}

Start Enrichment Job

POST /enrichment/enrich

Start an async waterfall enrichment job. The job runs across multiple data providers and returns a job_id you can poll for results.

Returns 202 Accepted.

Request Body

FieldTypeRequiredDescription
contact_idsinteger[]YesContact IDs to enrich
list_idintegerYesList ID the contacts belong to
fields_configobjectNoFields to enrich and provider order (see below)

fields_config example:

{
"work_email": ["prospeo", "dropcontact"],
"direct_phone": ["cognism", "lusha"]
}

If omitted, defaults to {"work_email": ["prospeo", "dropcontact"]}.

Example

Terminal window
curl -X POST "https://be.graph8.com/api/v1/enrichment/enrich" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contact_ids": [101, 102, 103],
"list_id": 5,
"fields_config": {"work_email": ["prospeo", "dropcontact"]}
}'

Response

{
"data": {
"job_id": "abc-123-def",
"status": "queued"
}
}

Poll Enrichment Job

GET /enrichment/jobs/{job_id}

Check the status of an enrichment job.

Status Values

StatusDescription
queuedJob is waiting to start
runningEnrichment in progress
completedAll contacts processed
failedJob failed

Example

Terminal window
curl "https://be.graph8.com/api/v1/enrichment/jobs/abc-123-def" \
-H "Authorization: Bearer $API_KEY"

Response

{
"data": {
"job_id": "abc-123-def",
"status": "completed"
}
}

Verify Email

POST /enrichment/verify-email

Verify a single email address and check its deliverability status.

Request Body

FieldTypeRequiredDescription
emailstringYesEmail address to verify

Example

Terminal window
curl -X POST "https://be.graph8.com/api/v1/enrichment/verify-email" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "jane@acme.com"}'

Response

{
"data": {
"email": "jane@acme.com",
"status": "valid",
"sub_status": null,
"is_valid": true
}
}
StatusDescription
validDeliverable email address
invalidUndeliverable
catch-allDomain accepts all addresses
unknownCould not determine