curl -X POST "https://server.smartlead.ai/api/v1/campaigns/123/leads?api_key=YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"lead_list": [
{
"email": "john@example.com",
"first_name": "John",
"last_name": "Doe",
"company_name": "Acme Corp",
"custom_fields": {
"job_title": "CEO"
}
}
]
}'
import requests
API_KEY = "YOUR_API_KEY"
campaign_id = 123
payload = {
"lead_list": [
{
"email": "john@example.com",
"first_name": "John",
"last_name": "Doe",
"company_name": "Acme Corp",
"custom_fields": {
"job_title": "CEO"
}
}
]
}
response = requests.post(
f"https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/leads",
params={"api_key": API_KEY},
json=payload
)
result = response.json()
print(f"Added: {result.get('added_count', 0)}, Skipped: {result.get('skipped_count', 0)}")
const API_KEY = 'YOUR_API_KEY';
const campaignId = 123;
const payload = {
lead_list: [
{
email: 'john@example.com',
first_name: 'John',
last_name: 'Doe',
company_name: 'Acme Corp',
custom_fields: {
job_title: 'CEO'
}
}
]
};
const response = await fetch(
`https://server.smartlead.ai/api/v1/campaigns/${campaignId}/leads?api_key=${API_KEY}`,
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
}
);
const result = await response.json();
console.log(`Added: ${result.added_count}, Skipped: ${result.skipped_count}`);
{
"success": true,
"message": "Leads added successfully",
"added_count": 1,
"skipped_count": 0,
"skipped_leads": []
}
{
"message": "Invalid API Key"
}
{
"error": "Invalid email format for john@invalid"
}
Lead Management
Add Leads to Campaign
Add new leads to a campaign with validation and deduplication
POST
/
api
/
v1
/
campaigns
/
{campaign_id}
/
leads
curl -X POST "https://server.smartlead.ai/api/v1/campaigns/123/leads?api_key=YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"lead_list": [
{
"email": "john@example.com",
"first_name": "John",
"last_name": "Doe",
"company_name": "Acme Corp",
"custom_fields": {
"job_title": "CEO"
}
}
]
}'
import requests
API_KEY = "YOUR_API_KEY"
campaign_id = 123
payload = {
"lead_list": [
{
"email": "john@example.com",
"first_name": "John",
"last_name": "Doe",
"company_name": "Acme Corp",
"custom_fields": {
"job_title": "CEO"
}
}
]
}
response = requests.post(
f"https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/leads",
params={"api_key": API_KEY},
json=payload
)
result = response.json()
print(f"Added: {result.get('added_count', 0)}, Skipped: {result.get('skipped_count', 0)}")
const API_KEY = 'YOUR_API_KEY';
const campaignId = 123;
const payload = {
lead_list: [
{
email: 'john@example.com',
first_name: 'John',
last_name: 'Doe',
company_name: 'Acme Corp',
custom_fields: {
job_title: 'CEO'
}
}
]
};
const response = await fetch(
`https://server.smartlead.ai/api/v1/campaigns/${campaignId}/leads?api_key=${API_KEY}`,
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
}
);
const result = await response.json();
console.log(`Added: ${result.added_count}, Skipped: ${result.skipped_count}`);
{
"success": true,
"message": "Leads added successfully",
"added_count": 1,
"skipped_count": 0,
"skipped_leads": []
}
{
"message": "Invalid API Key"
}
{
"error": "Invalid email format for john@invalid"
}
Max 400 leads per request. Validates against block lists and duplicates. Returns added/skipped counts with reasons.
Path Parameters
The ID of the campaign to add leads to
Query Parameters
Your SmartLead API key
Request Body
Array of lead objects to add (maximum 400 leads per request)
Show Lead Object
Show Lead Object
Lead’s email address
Lead’s first name
Lead’s last name
Lead’s phone number
Company name
Company website
Lead’s location
LinkedIn profile URL
Company URL
Custom fields for personalization (maximum 200 key-value pairs per lead)
Lead import settings
Show Settings
Show Settings
Skip global block list validation
Include previously unsubscribed leads
Allow same lead in multiple campaigns
Skip community bounce list check
curl -X POST "https://server.smartlead.ai/api/v1/campaigns/123/leads?api_key=YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"lead_list": [
{
"email": "john@example.com",
"first_name": "John",
"last_name": "Doe",
"company_name": "Acme Corp",
"custom_fields": {
"job_title": "CEO"
}
}
]
}'
import requests
API_KEY = "YOUR_API_KEY"
campaign_id = 123
payload = {
"lead_list": [
{
"email": "john@example.com",
"first_name": "John",
"last_name": "Doe",
"company_name": "Acme Corp",
"custom_fields": {
"job_title": "CEO"
}
}
]
}
response = requests.post(
f"https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/leads",
params={"api_key": API_KEY},
json=payload
)
result = response.json()
print(f"Added: {result.get('added_count', 0)}, Skipped: {result.get('skipped_count', 0)}")
const API_KEY = 'YOUR_API_KEY';
const campaignId = 123;
const payload = {
lead_list: [
{
email: 'john@example.com',
first_name: 'John',
last_name: 'Doe',
company_name: 'Acme Corp',
custom_fields: {
job_title: 'CEO'
}
}
]
};
const response = await fetch(
`https://server.smartlead.ai/api/v1/campaigns/${campaignId}/leads?api_key=${API_KEY}`,
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
}
);
const result = await response.json();
console.log(`Added: ${result.added_count}, Skipped: ${result.skipped_count}`);
Response Codes
Leads added successfully
Invalid request parameters or malformed request body
Invalid or missing API key
Campaign not found or no access
Lead validation failed - check email format, required fields
Too many requests
Server error occurred
{
"success": true,
"message": "Leads added successfully",
"added_count": 1,
"skipped_count": 0,
"skipped_leads": []
}
{
"message": "Invalid API Key"
}
{
"error": "Invalid email format for john@invalid"
}
Related Endpoints
⌘I
