Technical Tutorials12 min readMarch 31, 2026

Smartlead API for Agencies: 10 Automations That Save 10+ Hours a Week

The Smartlead API is massively underused by most agencies. Here are 10 specific automations you can build today, with real API endpoints and n8n workflow logic.

⚡ TL;DR
The Smartlead API is one of the most underused tools in the agency stack. Most agencies use Smartlead through the UI — which means manual work that could be automated. This guide covers 10 specific automations you can build with the Smartlead API, with real endpoint examples and n8n workflow logic. By the end, your campaigns should be enrolling leads, pausing on performance issues, and reporting to clients — without your team lifting a finger.
400+
API endpoints available in Smartlead's v2 API
Source: docs.smartlead.ai
15h+
Weekly time savings for agencies using full API automation
Source: AutomateItPlease 2026 Benchmark
3-min
Time to set up new client campaign via API vs manual UI
Source: AutomateItPlease measurement

What is the Smartlead API (and Why Agencies Underuse It)

Smartlead has a comprehensive REST API (v2) that lets you programmatically control every aspect of your cold email operations: create campaigns, add leads, manage inboxes, pull analytics, route replies, and more. The API is webhook-ready and designed for automation-first workflows.

Yet most agencies use Smartlead like a manual tool — logging in, clicking buttons, copy-pasting leads from spreadsheets. This is leaving enormous time on the table. Every repetitive action in the Smartlead UI can be automated via the API, saving your team hours per week per client.

"Agencies that fully automate their Smartlead workflow via API save an average of 15+ hours per week compared to teams using the UI manually." — AutomateItPlease 2026 Agency Benchmark

Getting Your API Key + Authentication

Authentication with the Smartlead API is simple — every request requires your API key passed as a query parameter.

1

Get Your API Key

  • Log into your Smartlead account.
  • Go to Settings → Integrations → API.
  • Copy your API key. It looks like: sl_live_xxxxxxxxxxxx
2

Test Authentication

Make your first API call to verify it works:

bash
curl "https://server.smartlead.ai/api/v1/campaigns?api_key=YOUR_API_KEY&limit=10&offset=0"

# Expected response:
# [{"id": 123, "name": "My Campaign", "status": "ACTIVE", ...}]

10 Automations That Save 10+ Hours a Week

Automation 1: Auto-Add Clay-Enriched Leads to Campaigns

The most common agency workflow: Clay enriches a list, Smartlead sends it. Without API automation, this means manually exporting from Clay and importing into Smartlead. With the API:

json (n8n HTTP Request node)
POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/leads?api_key=YOUR_KEY

Body:
{
  "lead_list": [
    {
      "email": "[email protected]",
      "first_name": "John",
      "last_name": "Doe",
      "company_name": "Acme Corp",
      "custom_fields": {
        "icebreaker": "Saw your post on LinkedIn about scaling outbound — loved the take on AI personalization."
      }
    }
  ],
  "settings": {
    "ignore_global_block_list": false,
    "ignore_bounce_list": false
  }
}

In n8n: your Clay webhook fires when a row is enriched → n8n formats the payload → POST to Smartlead. New leads enroll in your campaign in real-time, zero manual steps.

Automation 2: Pause Campaigns When Reply Rate Drops Below Threshold

A campaign sending 200 emails/day with 0 replies for 3 consecutive days is a deliverability warning sign. Catch it automatically:

javascript (n8n code node)
// Pull campaign statistics
GET /api/v1/campaigns/{id}/statistics/by-date?api_key=KEY&start_date=2024-01-01&end_date=2024-01-08

// Check if reply rate drops below 1% over 3 days
const stats = items[0].json;
const recentDays = stats.slice(-3);
const avgReplyRate = recentDays.reduce((sum, d) => sum + d.reply_rate, 0) / 3;

if (avgReplyRate < 0.01) {
  // Pause the campaign
  return [{ pause_campaign: true, campaign_id: campaignId }];
}

// PATCH to pause
PATCH /api/v1/campaigns/{id}/status
Body: { "status": "PAUSED" }

Automation 3: Auto-Tag Replied Leads in HubSpot

When a lead replies in Smartlead, you want that signal in your CRM immediately — not when someone checks Smartlead. Use Smartlead's reply webhook:

n8n workflow
// 1. Smartlead Webhook fires on reply
Trigger: Smartlead Webhook → "reply_received"

// 2. Payload received:
{
  "lead_email": "[email protected]",
  "campaign_id": 456,
  "reply_text": "Yes, interested — can we chat Thursday?",
  "reply_category": "Interested"
}

// 3. n8n looks up contact in HubSpot by email
HubSpot Node: GET /contacts/v1/contact/email/{email}/profile

// 4. Update contact properties
HubSpot Node: PATCH /contacts/v1/contact/{id}/profile
{
  "properties": [
    { "property": "lifecycle_stage", "value": "salesqualifiedlead" },
    { "property": "smartlead_reply_category", "value": "Interested" },
    { "property": "last_reply_date", "value": "2026-03-08" }
  ]
}

Automation 4: Build a White-Labeled Reporting Dashboard

Pull campaign stats via the API and push them to a Google Sheet or Notion database for white-labeled client reporting. Our free Smartlead Analytics Dashboard is built exactly on top of this API surface.

bash
# Get campaign-level analytics
GET /api/v1/campaigns/{id}/analytics?api_key=KEY

# Response includes:
{
  "total_sent": 4821,
  "open_count": 1834,
  "open_rate": 38.04,
  "reply_count": 127,
  "reply_rate": 2.63,
  "positive_reply_count": 38,
  "bounce_count": 12,
  "unsubscribe_count": 7
}

# Push this to Google Sheets once per day via n8n scheduler

Automation 5: Auto-Add New Leads From Webhook / Form Submission

When a prospect fills in a form on your website (e.g., requesting a retargeting sequence), add them to a specific Smartlead drip campaign automatically — no CSV, no manual import:

n8n workflow
Trigger: Typeform / Tally webhook → new submission

// Map form fields to Smartlead lead format
{
  "email": "{{form.email}}",
  "first_name": "{{form.first_name}}",
  "company_name": "{{form.company}}",
  "custom_fields": {
    "source": "website_form",
    "interest": "{{form.interest}}"
  }
}

// POST to nurture campaign
POST /api/v1/campaigns/{nurture_campaign_id}/leads?api_key=KEY

Automation 6: Block-List Cross-Client Contamination

If a prospect replies "not interested" for Client A, you don't want Client B's campaign to email them next week. The Smartlead block-list API enforces this at the account level:

bash
# Add email to global block list when "unsubscribe" reply is received
POST /api/v1/block_list?api_key=KEY
Body: {
  "emails": ["[email protected]"]
}

# The block list applies across ALL campaigns in your account
# Set up in n8n: Smartlead webhook (reply_category: Unsubscribe) → POST to block_list

Automation 7: Inbox Health Monitor with Slack Alerts

Run a daily check on inbox health scores. If any inbox drops below a threshold, alert the team in Slack before deliverability problems accumulate:

n8n workflow
// Schedule: every morning at 8 AM
Cron Node: "0 8 * * *"

// Pull all email accounts
GET /api/v1/email-accounts?api_key=KEY

// Filter those below health threshold
items.filter(inbox => inbox.warmup_reputation < 70)

// Format Slack message
{
  "text": "⚠️ Inbox Health Alert",
  "blocks": [{
    "type": "section",
    "text": {
      "type": "mrkdwn",
      "text": "*Low health inboxes detected:*
- {{inbox.email}} — Score: {{inbox.warmup_reputation}}/100
- Action: Reduce send volume and check spam filter hits"
    }
  }]
}

// POST to Slack webhook

Automation 8: Campaign Cloning for New Client Onboarding

When onboarding a new client, instead of manually recreating a campaign from scratch, clone from a template campaign via the API:

bash
# 1. Get your template campaign's full config
GET /api/v1/campaigns/{template_id}?api_key=KEY

# 2. Create new campaign with same sequence, settings, and schedules
POST /api/v1/campaigns?api_key=KEY
Body: {
  "name": "Client B — Outbound Q2 2026",
  "from_name": "{{client_b_sender_name}}",
  "from_email": "{{client_b_email}}",
  "subject": "{{cloned_from_template}}",
  ...
}

# 3. Assign the client's email account to the new campaign
POST /api/v1/campaigns/{new_id}/email-accounts?api_key=KEY
Body: { "email_account_ids": [{{client_b_inbox_id}}] }

# Full onboarding: ~3 API calls. Manual approach: 15–20 minutes per client

Automation 9: Smart Schedule Optimization

Pull per-day reply data for a campaign, find which send days have the highest reply rate, and automatically adjust the campaign schedule:

javascript
// Get daily stats for last 30 days
GET /api/v1/campaigns/{id}/statistics/by-date?api_key=KEY

// Find highest-reply days
const dayStats = {}; // { Mon: [], Tue: [], ... }
stats.forEach(day => {
  const dow = new Date(day.date).toLocaleDateString('en', {weekday: 'short'});
  dayStats[dow] = [...(dayStats[dow] || []), day.reply_rate];
});

// Get top 3 days by avg reply rate
const topDays = Object.entries(dayStats)
  .map(([day, rates]) => ({ day, avg: rates.reduce((a,b) => a+b)/rates.length }))
  .sort((a,b) => b.avg - a.avg)
  .slice(0, 3)
  .map(d => d.day);

// Update campaign schedule to only send on topDays
PATCH /api/v1/campaigns/{id}/schedule?api_key=KEY

Automation 10: Trigger Follow-Up Sequence When Lead Visits Website

Connect Clearbit Reveal or Albacross website tracking to Smartlead. When a lead who was emailed earlier visits your pricing page, trigger a follow-up campaign:

n8n workflow
// Trigger: Clearbit Reveal webhook → company identified on pricing page
// or: Albacross webhook → company identified

// 1. Check if email matches an existing Smartlead lead
GET /api/v1/leads?api_key=KEY&email={{identified_email}}

// 2. If found and status = "No Reply"
if (lead.status === 'NOT_REPLIED') {
  // 3. Move to a "warm follow-up" campaign
  POST /api/v1/campaigns/{warm_followup_campaign}/leads?api_key=KEY
  Body: {
    "lead_list": [{ "email": "{{lead.email}}", "custom_fields": {
      "trigger": "visited_pricing_page",
      "visit_date": "{{today}}"
    }}]
  }
}

Using the Smartlead API + n8n: Full Workflow Architecture

Here's how these 10 automations fit together in a complete agency workflow:

LayerToolSmartlead API Endpoints Used
Lead intakeClay webhook or formPOST /campaigns/{id}/leads
Campaign mgmtn8n daily cronPATCH /campaigns/{id}/status
Reply routingSmartlead webhook → n8nGET /leads (lookup) + HubSpot PATCH
Reportingn8n daily cron → SheetsGET /campaigns/{id}/analytics
Inbox monitoringn8n morning cron → SlackGET /email-accounts
Blocklist syncSmartlead reply webhookPOST /block_list
Client onboardingn8n trigger on CRM eventPOST /campaigns + POST /email-accounts

All of these workflows run 24/7 once set up. Your team's only job is to respond to the Slack alerts when intervention is needed — everything else is automatic. This is also the architecture powering our free Cold Email Command Center.

FAQ

Does Smartlead's API have rate limits?

Yes. The default rate limit is 10 requests per second. For agencies making bulk updates (e.g., adding 500 leads at once), use the bulk endpoint which accepts up to 100 leads per call, limiting the requests needed. Build in a 100ms delay between requests in n8n to stay safely under the rate limit.

Do I need to know how to code to use these automations?

For most of the flows above, no. n8n's HTTP Request node handles all the API calls with a visual interface. The JavaScript Code nodes (automations 2 and 9) can be copied directly from this article. If you want to skip the setup entirely, we can implement all 10 of these for your agency.

Are these automations compatible with Smartlead's v1 and v2 API?

The endpoints above use v1 (which is the stable, fully-documented API as of early 2026). Smartlead's v2 API adds additional capabilities but is in active development. We'll update this post as v2 features mature.

What's the best way to test these before going live?

Create a "test" campaign in Smartlead pointed at a personal email address. Run all your n8n workflow tests against this campaign so any misconfigurations only affect a throwaway inbox.

Want these 10 automations running for your agency?

We implement the full Smartlead API + n8n automation stack for agencies in 10–14 days. Book a free 15-min strategy call.

Book a Free Strategy Call