Key takeaways:
- The Smartlead API is a REST API at
https://server.smartlead.ai/api/v1, covering campaigns, leads, email accounts, warmup and webhooks. - Authentication is an API key passed as a URL query parameter. There is no OAuth and no bearer token option, which is the most significant design decision in the whole API.
- Smartlead publishes no rate limit numbers. Its documentation says limits vary by plan and directs you to customer support, while still returning
429when you cross them. - API access comes with the plan rather than as an add-on, starting at $32 a month billed yearly.
Smartlead’s API is broad, well organized and genuinely pleasant to work with. It also asks you to put your credential somewhere the standards bodies have spent a decade telling people not to put credentials.
Both of those things are true at once, and a review that only tells you one of them is not much use. This one covers the endpoints, the pricing, the rate-limit situation and the authentication design, in that order.
We compete with Smartlead directly and publish our own API, so treat the comparison section with appropriate suspicion and judge the technical sections on their own evidence. Everything factual here comes from Smartlead’s own documentation.
What the Smartlead API Covers
Smartlead is a cold email platform built around mailbox rotation and deliverability, and the API mirrors the product closely. Six concepts carry almost everything.
A campaign is an outreach sequence aimed at a list of leads. A lead is a recipient. An email account is a sending mailbox, whether SMTP, Gmail or Outlook, attached to campaigns for rotation. A sequence is the ordered series of emails and delays. Warmup gradually increases sending volume from a new mailbox. A webhook fires on campaign events such as a reply or a bounce.
The endpoint surface groups cleanly around those objects.
| Group | Representative endpoints | What it does |
| Campaigns | GET /campaigns/, POST /campaigns/create, POST /campaigns/{id}/schedule |
List, create and configure campaigns, schedules and settings |
| Sequences | GET /campaigns/{id}/sequences, POST /campaigns/{id}/sequences |
Fetch and save the email steps inside a campaign |
| Email accounts | GET /email-accounts/, POST /email-accounts/save, POST /email-accounts/{id}/warmup |
Add mailboxes, update them, configure warmup |
| Warmup reporting | GET /email-accounts/{id}/warmup-stats |
Read warmup performance per mailbox |
| Leads | GET /campaigns/{id}/leads, GET /leads/?email=, GET /leads/fetch-categories |
List by campaign, look up by email, read categories |
| Campaign membership | GET /leads/{id}/campaigns |
Find which campaigns a lead belongs to |
The status vocabulary is worth learning before you build anything, because it is what your integration will branch on. Leads move through STARTED, INPROGRESS, COMPLETED and BLOCKED, where blocked covers both a bounce and a global block-list entry. Campaigns sit in ACTIVE, PAUSED, STOPPED, ARCHIVED or DRAFTED.
Two things stand out as genuinely strong. Mailbox-level warmup configuration and warmup statistics are exposed through the API, which is unusual and useful if you run mailboxes at scale. And webhooks fire on real campaign events rather than making you poll for replies.
Exposing warmup programmatically is a bigger deal than it sounds. Rotating a large mailbox pool means constantly adding accounts, ramping them and watching reputation, and doing that by hand is what caps most agencies’ growth.
Being able to script the ramp is the closest thing the API has to a signature feature, and the part we would point to if asked what Smartlead does well. The same job on our side runs through our email infrastructure layer rather than through discrete warmup endpoints.
What the object model does not include is any notion of a person outside a campaign. Leads exist in relation to campaigns and lists, so there is no contact database to query and no enrichment step. The API moves and measures people you have already sourced.
How Authentication Works, and Why It Matters
Smartlead uses an API key generated from your dashboard settings. The key travels as a query parameter on every request:
curl -X GET "https://server.smartlead.ai/api/v1/campaigns/?api_key=YOUR_API_KEY"
Smartlead’s documentation is explicit that this is the only option: there is no OAuth or bearer token system, and every request must include the api_key query parameter.
That is a real limitation rather than a stylistic preference, and the reasoning is well established. IETF RFC 6750, which governs how OAuth bearer tokens are transmitted, says a credential in the URI query “SHOULD NOT be used” because of the security weaknesses of the method, “including the high likelihood that the URL containing the access token will be logged.”
To be precise about scope, because it matters: that RFC governs OAuth bearer tokens, and a Smartlead API key is not one, so this is not a case of a vendor violating a specification that binds it. What transfers is the mechanism rather than the mandate. URLs end up in server logs, proxy logs, browser history and Referer headers regardless of what kind of secret is sitting in them.
The point is not ours alone. RB2B, reviewing its own webhook design, warns customers that query strings are “more prone to appearing in logs, proxies, and referrer headers” than path segments, and recommends against them for exactly this reason. When a vendor tells you to avoid the pattern its competitor requires, that is worth a moment’s thought.
The practical mitigations are the usual ones. Keep the key server-side, never let it reach a browser, rotate it on any suspicion, and audit whatever logs your infrastructure keeps of outbound request URLs. Broken authentication ranks second in the OWASP API Security Top 10, whose framing is that compromising a system’s ability to identify the client compromises API security overall.
Versioning and Rate Limits
Smartlead runs two API versions. V1 at /api/v1/... is the recommended path with all current features and improved response formats. A legacy API at /api/... is maintained for backward compatibility with existing integrations only, and new work should not start there.
Rate limits are where the documentation stops being helpful. Smartlead states that limits vary by subscription plan and asks you to contact customer support, without publishing a number for any tier.
You will still hit them. Crossing a limit returns 429 Too Many Requests, and Smartlead’s advice is to implement exponential backoff rather than retrying immediately. Build that in from the start, because the alternative is a job that stalls silently partway through a large import.
The gap is what you cannot plan around. Without a published ceiling, the only way to size a bulk import or a sync job is to build it, run it and discover the limit in production, which is a poor experience for a platform whose customers are frequently moving tens of thousands of leads.
Smartlead API Pricing
There is no separate charge for API access, and no developer tier to buy. The API comes with whichever plan you are on, which is a genuinely friendly model and better than several vendors in this cluster.
| Plan | Price per month, billed yearly | Contacts | Email sends per month |
| Base | $32 | 2,000 | 6,000 |
| Pro | $78 | 30,000 | 90,000 |
| Unlimited Smart | $144 | Unlimited | 150,000 |
| Unlimited Prime | $315 | Unlimited | 500,000 |
Yearly billing saves 17% against monthly. Verified prospect emails are metered separately, at 2,000 on Base and 30,000 on Pro with a $59 monthly add-on, then included free at 50,000 on Smart and 170,000 on Prime. Mailboxes are billed per sending account on top, in the region of $4 to $9 per mailbox per month depending on provider.
That last line is the one that moves a real bill. A team running forty mailboxes is paying a meaningful multiple of the plan price, and the plan price is what gets quoted in comparisons.
Model the mailbox count before the tier, because it is the variable that actually scales. Two teams on Unlimited Prime can be paying very different amounts depending on how many sending accounts sit underneath, and per-mailbox pricing is where the sending-tool category tends to differ most sharply, as our Instantly versus Smartlead comparison sets out.