v1

latestOpenAPI 3.1.02026-07-2617125852.3 KB
Lead

Add leads in bulk to a campaign or list

Adds up to 1000 leads to either a campaign or a list. You must provide a campaign_id or a list_id, but not both. The endpoint validates emails, checks against blocklists and existing leads.

Requires one of the following scopes: leads:create, leads:all, all:create, all:all

post/api/v2/leads/add

Request body

campaign_idstring uuid

The unique identifier for the campaign to add leads to. Use this field OR list_id, but not both.

list_idstring uuid

The unique identifier for the list to add leads to. Use this field OR campaign_id, but not both.

blocklist_idstring uuid nullable

Optional blocklist ID to check leads against. If omitted, the workspace default blocklist is used.

assigned_tostring uuid

Optional user ID to assign all imported leads to. If omitted, leads are assigned to the campaign owner when campaign_id is defined, or the user making the request.

verify_leads_on_importboolean

If true, a background job will be created to verify the email addresses of the imported leads.

skip_if_in_workspaceboolean

If true, any lead that already exists anywhere in your workspace (in any campaign or list) will be skipped. This option overrides the other "skip_if" flags.

skip_if_in_campaignboolean

If true, any lead that already exists in ANY campaign in your workspace will be skipped.

skip_if_in_listboolean

If true, any lead that already exists in ANY list in your workspace will be skipped.

Example request

{
  "campaign_id": "019f94cd-aef1-736b-80a6-a7eafa606ad4",
  "list_id": "019f94cd-aef1-736b-80a6-a7eb27e164f3",
  "leads": [
    {
      "email": "example@example.com",
      "personalization": "Hello, how are you?",
      "website": "https://example.com",
      "last_name": "Doe",
      "first_name": "John",
      "company_name": "Example Inc.",
      "job_title": "Head of Growth",
      "phone": "+1234567890",
      "lt_interest_status": 1,
      "pl_value_lead": "High",
      "assigned_to": "019f94cd-6ee0-7427-b15d-08dc06ad35e5",
      "custom_variables": {
        "past_customer": true,
        "has_tried_competitors": false
      }
    }
  ],
  "blocklist_id": "019f94cd-aef1-736b-80a6-a7ecd3913d4e",
  "assigned_to": "019f94cd-aef1-736b-80a6-a7ed0419daa4",
  "skip_if_in_workspace": true
}

Response

A summary of the bulk import operation.

statusstring required

Indicates the request was processed.

total_sentinteger required

The total number of leads included in the request payload.

leads_uploadedinteger required

The number of leads that were successfully created.

in_blocklistinteger required

The number of leads that were skipped because their email was found on the blocklist.

blocklist_usedstring nullable required

The ID of the blocklist that was used for the check.

duplicated_leadsinteger required

The number of leads that were already in this specific campaign or list and were not re-added.

skipped_countinteger required

The number of leads skipped due to the skip_if_in_... flags being enabled.

invalid_email_countinteger required

The number of leads skipped due to an invalid email format or a missing email address.

incomplete_countinteger required

The number of leads skipped due to missing email and names. Only calculated for lists.

duplicate_email_countinteger required

The number of leads skipped because their email was duplicated within the request payload itself.

remaining_in_planinteger nullable required

The remaining lead uploads in the current billing plan. This value is only present in the response when a campaign_id is provided.

Example response

{
  "status": "success",
  "total_sent": 10,
  "leads_uploaded": 7,
  "in_blocklist": 1,
  "blocklist_used": "019f94cd-aef1-736b-80a6-a7ee9cfced0b",
  "skipped_count": 1,
  "invalid_email_count": 1,
  "incomplete_count": 1,
  "remaining_in_plan": 9993,
  "created_leads": [
    {
      "id": "019f94cd-aef1-736b-80a6-a7f1275ac9ea",
      "email": "test@example.com",
      "index": 0
    }
  ]
}