Skip to main content
POST
Add leads in bulk to a campaign or list

Authorizations

Authorization
string
header
required

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

Body

application/json
leads
object[]
required

An array of lead objects to create. When using campaign_id: Each lead object must contain an email. When using list_id Each lead object must contain at least one of the following: email, first_name, or last_name.

Required array length: 1 - 1000 elements
campaign_id
string<uuid>

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

Example:

"019f985c-9365-7f63-975b-33aa13ea6de1"

list_id
string<uuid>

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

Example:

"019f985c-9365-7f63-975b-33abd893d408"

blocklist_id
string<uuid> | null

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

Example:

"019f985c-9365-7f63-975b-33ac1c49695c"

assigned_to
string<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.

Example:

"019f985c-9365-7f63-975b-33ad7e50027b"

verify_leads_on_import
boolean

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

Example:

false

skip_if_in_workspace
boolean

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.

Example:

true

skip_if_in_campaign
boolean

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

Example:

false

skip_if_in_list
boolean

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

Example:

false

Response

A summary of the bulk import operation.

A summary of the bulk import operation.

status
string
required

Indicates the request was processed.

Example:

"success"

total_sent
integer
required

The total number of leads included in the request payload.

Example:

10

leads_uploaded
integer
required

The number of leads that were successfully created.

Example:

7

in_blocklist
integer
required

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

Example:

1

blocklist_used
null | string
required

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

Example:

"019f985c-9365-7f63-975b-33aea7e8e8b9"

duplicated_leads
integer
required

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

Example:

0

skipped_count
integer
required

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

Example:

1

invalid_email_count
integer
required

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

Example:

1

incomplete_count
integer
required

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

Example:

1

duplicate_email_count
integer
required

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

Example:

0

remaining_in_plan
null | integer
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:

9993

created_leads
object[]
required

A list of created leads with their summary information. You can use this to map your input to the created leads.

Example: