Skip to main content
POST
/
api
/
campaigns
/
{id}
/
leads
Add Leads to Campaign
curl --request POST \
  --url https://app.puffle.ai/api/campaigns/{id}/leads \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "prospects": [
    {
      "email": "<string>",
      "linkedin_url": "<string>",
      "first_name": "<string>",
      "last_name": "<string>",
      "company": "<string>",
      "position": "<string>",
      "headline": "<string>",
      "custom_fields": {}
    }
  ]
}
'
{
  "imported": 4503599627370495,
  "duplicates": 4503599627370495
}
CLI:
puffle campaign lead add --id <id> --prospects <prospects>

Overview

Bulk-insert leads into a draft campaign. Deduplicates by email (email campaigns) or linkedin_url (LinkedIn campaigns) — both within the batch and against existing rows. Identity is normalized (lowercased email; LinkedIn URLs stripped of trailing slashes and query strings). Only draft campaigns accept new leads. After insert, campaigns.stats is recomputed atomically.
This operation shares the URL path /api/campaigns/{id}/leads with other verbs. See the sibling page for related operations on the same resource.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

id
string
required

Campaign UUID

Body

application/json
prospects
object[]
required
Required array length: 1 - 1000 elements

Response

Leads imported successfully.

imported
integer
required
Required range: 0 <= x <= 9007199254740991
duplicates
integer
required
Required range: 0 <= x <= 9007199254740991