Lead Status
Lead Upload via CSV
POST/api/public/v1/campaigns/{campaign_id}/leads
Upload leads asynchronously via CSV file. The file must include an email column.
CSV Requirements
- Must include an email column (required)
- Additional supported columns:
first_name,last_name,company - Custom columns are mapped automatically and available as
{{custom_column_name}}in your email templates - Max CSV size: 50MB
- Max leads per upload: 10,000
Upload Progress
The upload runs asynchronously. Check progress with:Manual Lead Addition
POST/api/public/v1/campaigns/{campaign_id}/leads/manual
Add a single lead:
Listing Leads
GET/api/public/v1/campaigns/{campaign_id}/leads
List leads with pagination and filtering:
Query Parameters
Deleting Leads
DELETE/api/public/v1/campaigns/{campaign_id}/leads
Only PENDING leads (not yet sent) can be deleted:
Get a Single Lead
GET/api/public/v1/campaigns/{campaign_id}/leads/{lead_id}
Returns full lead data including email interaction history and any replies received from the lead.
Update a Lead
PUT/api/public/v1/campaigns/{campaign_id}/leads/{lead_id}
Update mutable fields on a lead. Only the fields you provide are changed — custom_fields uses merge patch semantics: existing keys are preserved, keys you send are added or updated, and keys explicitly set to null are removed.
Updatable fields: first_name, last_name, company, custom_fields.
Requires the
leads:update scope.Export Leads as CSV
GET/api/public/v1/campaigns/{campaign_id}/leads/export
Downloads all leads for a campaign as a CSV file — bypasses pagination limits, so every lead is included in a single download. The exported columns are:
email, first_name, last_name, company, status, custom_fields (JSON-encoded), created_at
Content-Type is text/csv and the Content-Disposition header sets the suggested filename.
Next Steps
Create Campaign
Set up your campaign with lead mapping configuration.
Personalization
Use lead data in personalized email content.

