List endpoints require a key with the
lists scope; resolving a contact id requires contacts. See scopes.1
Create a list
Lists are the container everything else hangs off — exports, custom columns, and campaigns all start from a list.
entityType defaults to "contactList", which is what you want here. List names are unique within your workspace: creating a list with a name that already exists returns 409 LIST_NAME_TAKEN in the standard error envelope, so a safe pattern for repeated imports is to date-stamp the name.2
Upload contact data
Send batches of raw contact records to the list. Each request accepts up to 500 contacts; loop over your dataset in batches for larger imports.Each contact accepts the following fields. All are optional individually, but every contact must include at least one of
email, linkedinUrl, firstName, or lastName — a record with none of these has nothing to identify or enrich.You do not need to send complete records. Enrichment runs asynchronously after the upload and fills gaps where it can, so a bare
linkedinUrl or an email address is a workable starting point. The returned contactIds are the ids of the newly created contacts — keep them if you plan to manage membership later.3
Add existing contacts by id
When the contacts already exist in your workspace — from an earlier upload, a saved search, or another list — add them to a list by id rather than re-uploading their data:Each request accepts up to 5,000 contact ids. Adding is idempotent: a contact that is already in the list is skipped, not duplicated. That is why
addedCount can be lower than submittedCount — the difference is the number of contacts that were already members. You can safely retry a failed request without worrying about double-adding.4
Remove contacts from a list
Removal uses the same endpoint with This removes the contacts from the list; it does not delete the contact records from your workspace.
DELETE:Resolve a contact id from a LinkedIn URL
The/members endpoints work on contact ids, but CRMs rarely store Fuse ids. If your system keys people by LinkedIn URL, resolve the id first:
linkedin.com/in/Jordan-Lee/ resolves the same as https://www.linkedin.com/in/jordan-lee. If no contact in your workspace matches, you get 404 CONTACT_NOT_FOUND:
resolve first — on a hit, add the id via /members; on a 404, include the record in your next batch upload. That keeps repeat syncs from piling up duplicate contacts.
Where to next
Custom columns
Attach your own fields — CRM ids, owner, deal stage — to list rows.
Export a list
Pull enriched contacts back out as CSV once enrichment has filled the gaps.
Build a list from search
Fill a list from prospect search instead of an upload.
Campaigns
Put an uploaded list to work in an outbound campaign.