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 CluGTM enrichment is one of three types. The type controls which data points the waterfall looks for, and the cost.
| Type | What you get | Cost per lead |
|---|---|---|
partial | Verified business email plus profile (LinkedIn URL, job title, company, firmographics) | 1 |
phone_only | Phone number only | 10 |
full | Everything partial returns plus a phone number | 11 |
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:
| Endpoint | Field | Accepted values |
|---|---|---|
POST /enrichment/person | enrichment_type | partial, phone_only, full |
POST /enrichment/bulk | scope | partial, full, phone-only |
POST /lead-lists/{id}/csv-import | enrichment_type | partial, phone_only, full |
POST /enrichment/by-task | data_points | derived (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_points | Resolved type | Cost per lead |
|---|---|---|
["Email", "Phone"] | full | 11 |
["Phone"] | phone_only | 10 |
["Email"] | partial | 1 |
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.
UK mobile waterfall: phone_waterfall
Every endpoint that can find a phone also takes phone_waterfall:
| Value | What it does |
|---|---|
standard (default, or omit it) | The normal phone waterfall |
gb | The UK phone waterfall: only a UK mobile ends the search, and UK landlines are dropped. If no UK mobile is found, numbers from other countries are returned instead |
It applies to phone_only and full lookups (and ["Phone"] cohorts); it has no effect on partial. It’s accepted on:
| Endpoint | Notes |
|---|---|
POST /enrichment/person | |
POST /enrichment/bulk | |
POST /enrichment/by-task | Person cohorts only |
POST /lead-lists/{id}/csv-import | When dispatch_enrichment is true |
phone_waterfall isn’t part of the quote and doesn’t change the price: gb costs the same as standard.
{
"list_id": "LIST_ID",
"scope": "phone-only",
"phone_waterfall": "gb",
"quote_id": "qte_v1_..."
}Legacy include_phone
The single-person endpoint also accepts a legacy boolean, include_phone, for older callers:
include_phone: falsemeanspartial(email and profile, no phone)include_phone: truemeansphone_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.