Lists

Enrich a list's contacts in place

Runs an enrichment over the list's contacts in place. mode selects what runs: the waterfall modes (email, phone, phone_and_email) discover new values through the provider waterfall and take an optional row filters object or an explicit contactIds selection; validate_emails re-verifies the contacts' existing emails; demographics resolves manually-added rows to canonical contacts. limit is how many rows are taken, from offset (default 0) in the list's default order after filters — required unless contactIds is given, and capped at 5,000 for validate_emails/demographics. Rows that already hold the requested data, or were searched for it before, are skipped and not charged but still count toward limit, so a repeated call with the same offset and limit takes the same rows: pass a larger offset to reach rows further down. A call identical to one whose job is still queued or running (same mode, filters, offset and limit) returns that job instead of starting another. Billing is per processed contact: up to 50 credits per work email (100 when personal emails are prioritised in the workspace settings), 200 per phone, 10 per re-verified address, 2 per resolved demographics row; the balance must cover the reserved price up front (402 INSUFFICIENT_CREDITS) and contacts already carrying the requested data are never re-charged — with the waterfall modes a fully enriched list answers 409 ALL_CONTACTS_ALREADY_ENRICHED before anything bills, while validate_emails and demographics report a nothing-to-do run as 202 with totalContacts: 0. Async: totalContacts is the number of rows this run takes (at most limit, fewer at the list's end; a call that returns a running job, or explicit contactIds that join a queued one, answers that job's total) and estimatedMinutes a rough duration; poll GET /business/lists/{listId}/rows (emails/phones fill in) or the list's metrics. The waterfall modes run as a job: the 202 also carries its jobId and status (pending while it waits behind your other enrichment job, processing once it runs); poll GET /business/jobs/{jobId} for its status and counts. A job whose balance runs out mid-run pauses (stopped, with pausedReason INSUFFICIENT_CREDITS) and is resumed from the app. To work through a list in batches, pass offset as the previous call's offset plus limit: a call without offset always starts at the list's first row.

Errors:

  • 402 INSUFFICIENT_CREDITS — The credit balance does not cover the reserved price for the requested rows.
  • 404 LIST_NOT_FOUND — No list with that id is visible to the token owner.
  • 409 ALL_CONTACTS_ALREADY_ENRICHED — Every contact in the list already carries the requested data; nothing to run. Waterfall modes (email, phone, phone_and_email) only — validate_emails and demographics answer 202 with totalContacts 0 instead.
  • 422 CONTACT_LIST_REQUIRED — The list is a company list; enrichment runs on contacts.
  • 422 CONTACT_NOT_IN_LIST — A contactIds entry is not a row of this list.
  • 422 VALIDATION_FAILED — mode missing/unknown, limit missing without contactIds or outside 1-10000, filters/contactIds sent together or with validate_emails/demographics, offset sent with contactIds or with validate_emails/demographics.
  • 429 RATE_LIMITED — The lists rate bucket (120 requests/minute, 10,000/day per token owner) is exhausted.

Requires one of the following token scopes: lists.

post/business/lists/{listId}/enrich

Request

  • Base URL: https://api.tryfuse.ai/api/v1
  • URL: https://api.tryfuse.ai/api/v1/business/lists/{listId}/enrich
  • Auth: HTTP basic

Path parameters

listIdstring required

24-character hex id of the list (from GET /business/lists).

Request body

mode'email' | 'phone' | 'phone_and_email' | 'validate_emails' | 'demographics' required

What to run: email, phone or phone_and_email discover new values through the enrichment waterfall (billed per contact processed, at up to 50 credits per work email — 100 when personal emails are prioritised — and 200 per phone); validate_emails re-verifies the contacts' existing emails (10 credits per address); demographics resolves manually uploaded rows to canonical contacts (2 credits per resolved contact).

offsetinteger

Rows to skip before taking limit of them (waterfall modes only, default 0). A repeated call with the same offset and limit takes the same rows; pass a larger offset to reach rows further down the list. Not allowed with contactIds.

contactIdsstring[]

Explicit contacts to process (24-character hex ids, 1-500) for the waterfall modes. Each must be a row of this list (a row id from GET /business/lists/{listId}/rows); any other id answers 422 CONTACT_NOT_IN_LIST. Not allowed for validate_emails or demographics and mutually exclusive with filters.

limitinteger

How many rows to take, starting at offset, in the list's default order (oldest first) after filters (1-10000); required unless contactIds is given, and validate_emails/demographics cap it at 5000. Rows that already hold the requested data, or were searched for it before, are skipped and not charged but still count toward limit.

Response

Success

listIdsstring[] required
mode'email' | 'phone' | 'phone_and_email' | 'validate_emails' | 'demographics' required
totalContactsinteger required
estimatedMinutesinteger required
jobIdstring

Waterfall modes only: the run's job, to poll at GET /business/jobs/{jobId}.

status'pending' | 'processing'

Waterfall modes only: pending while the job waits behind your other enrichment job, processing once it runs.

Changes

No recorded changes to this operation across all 1 revision of this API.