Upload leads from CSV data
campaign_upload_leadsBulk-load prospects into a campaign from parsed CSV rows. header maps each column name to a platform field — profileUrl, salesNavUrl, recruiterUrl, email, firstName, lastName, fullName, personalization, phone, website, or "customVariable" to keep it as a merge field. Rows with neither a profile URL nor an email are skipped silently. Import runs asynchronously; the campaign is only launchable once isFiltered flips true. Use this when the user has a list in hand. When they describe an audience instead, the audience is a LinkedIn search and belongs in campaign_set_source — build the URL with search_url_build. For a campaign that is already running, neither applies: that is campaign_add_prospects.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| leads | Yes | Row objects keyed by the CSV column names used in `header`. | |
| header | Yes | { "CSV Column Name": "targetField" }. Use "customVariable" for anything you want as a merge field. | |
| campaignId | Yes | Campaign id, from `campaign_list` or `campaign_create`. | |
| removeDuplicates | No | Skip prospects already enrolled in another active or paused campaign on this account. |