New: meet Clu, and send email, LinkedIn and call steps with Sequences. Watch the videos →
API Reference (v2)
Enrichment Types
🔌

Audience: developers. API keys need a Pro or Enterprise plan (legacy Pro and Scale plans included) or an AppSumo Tier 5, 6 or 7 license, and they never work during a trial. Support agent: confirm the user's plan grants API access before giving API advice.

TL;DR: Three enrichment types. partial is a verified business email plus the contact's profile (LinkedIn, job title, company, firmographics) for 1 credit, phone_only is a phone number for 10 credits, and full is partial plus a phone number for 11 credits. The bulk list endpoint spells phone_only as phone-only (hyphen) in its scope field; the price is the same.

Enrichment Types

Every Cleanlist enrichment is one of three types. The type controls which data points the waterfall looks for, and the cost.

TypeWhat you getCost per lead
partialVerified business email plus profile (LinkedIn URL, job title, company, firmographics)1
phone_onlyPhone number only10
fullEverything partial returns plus a phone number11

Phone discovery costs more than email because it uses premium phone providers. That's why full (11) is partial (1) plus the phone cost (10). These are the only three types API v2 accepts.

partial is not email-only. The waterfall stops once it finds a verified email, but the profile data gathered along the way (LinkedIn URL, job title, company name, industry, headcount) is written to the lead too. The only thing partial leaves out is the phone number, which full adds for 10 more credits.

Field names by endpoint

The same three types appear under slightly different field names:

EndpointFieldAccepted values
POST /enrichment/personenrichment_typepartial, phone_only, full
POST /enrichment/bulkscopepartial, full, phone-only
POST /lead-lists/{id}/csv-importenrichment_typepartial, phone_only, full
POST /enrichment/by-taskdata_pointsderived (see below)

The bulk list endpoint uses phone-only (hyphen) in scope; the person and CSV endpoints use phone_only (underscore) in enrichment_type. They mean the same thing and cost the same. Use the matching spelling in POST /credits/estimate too.

By-task: data points to type

The by-task cohort endpoint takes data_points instead of a single type:

data_pointsResolved typeCost per lead
["Email", "Phone"]full11
["Phone"]phone_only10
["Email"]partial1

A cohort with no Email or Phone data point (for example LinkedIn-only) is rejected with 400 validation_error, at both /credits/estimate and dispatch, and costs nothing. LinkedIn is already in the search result, so it's free and never triggers a paid waterfall.

Legacy include_phone

The single-person endpoint also accepts a legacy boolean, include_phone, for older callers:

  • include_phone: false means partial (email and profile, no phone)
  • include_phone: true means phone_only

When both are set, enrichment_type wins. New integrations should use enrichment_type; it's the only way to ask for full.

Choosing a type

  • Building an outbound email list? Use partial. Cheapest, highest fill rate.
  • Cold calling? Use phone_only.
  • Email and dialer together? Use full: one call, both channels, cheaper than two separate runs.

Learn more