This guide shows how to warm up sender accounts in Snov.io using the Email Warm-up API.
Use the Email Warm-up API to automate sender warm-ups at scale. Create and manage warm-up campaigns, monitor deliverability progress, and keep sender accounts continuously warmed up as part of your outreach workflow through API requests.
What you can do with the Email Warm-up API:
1) Connect accounts and start warm-ups in bulk through API requests
2) Choose a sending strategy based on your outreach stage — progressive to prepare accounts or steady to maintain reputation
3) Warm-up on Gmail, Microsoft, or other SMTP providers
4) Control sending limits and settings at each warm-up stage
5) Pull statistics to track account progress
Before you start
You'll need two things to use the Email Warm-up API: a connected email account and API credentials for authentication.
Email account
At least one sender email account must be connected to your workspace — either in the app or via the Add email account API method.
Authentication
All Snov.io API requests require an access token. To generate it:
- Find both credentials in your account settings under the API tab
- Use the Authentication method with your API User ID and API Secret
- Include the token in the Authorization header of every request
The access token is valid for 1 hour (3600 seconds).
Here are the API methods broken down by workflow stage:
Create warm-up campaign
Warm up a sender account before using it in outreach. This method starts a new warm-up campaign with the settings you specify.
Required input:
The required parameters set up your warm-up basics — which account to warm up and how many emails it should send per day.
email_account_id— the email account you want to warm upper_day— how many warm-up emails to send each day. You can set this anywhere from 1 to 1000 emails per day, depending on your plan. See warm-up limits here.
Optional input:
The optional parameters let you fine-tune your warm-up strategy, email content, and which providers you're warming up against.
You can also improve performance with advanced options like a premium sender pool (business domains only), custom tracking domains, and dynamic proxy.
strategy— how fast to ramp up sending:progressive(default) gradually increases your daily volume, whilesteadykeeps it at a fixed amount throughoutfrom— the starting daily volume when using theprogressivestrategy. Choose between 1 and 5, and make sure it's no higher than yourper_daygoalincrease— how much to grow the daily volume each day when using theprogressivestrategy. Choose between 1 and 5email_content— what content to send during warm-up:autogenerated(default) lets Snov.io generate it with AI, orspecificlets you provide your own templatesubject— your custom email subject line (1–200 characters). Needed if you setemail_contenttospecificbody— your custom email body (1–10000 characters). Needed if you setemail_contenttospecificreply_rate— what percentage of incoming warm-up emails get a reply. Choose between 10 and 45. Defaults to 30campaign_deadline— the date your warm-up should stop (YYYY-MM-DD). Leave this out if you don't want a deadlineproviders— which email providers to warm up against. Choose fromgmail,microsoft, orothersend_to_paid_domain— whether to also send warm-up emails to paid domains. Defaults tofalseenable_ctd— turn on a custom tracking domain for this warm-up. Defaults tofalseenable_proxy— turn on dynamic proxy for this warm-up. Defaults tofalseschedule_id— the sending schedule you want to attach to this warm-uptemplate_name— the name of a saved email template you'd like to use
Get list of warm-up campaigns
Get an overview of all warm-up campaigns across your sender accounts, with the option to filter by status or paginate through results.
Required input:
none — this returns all your warm-ups if you don't specify any optional parameters
Optional input:
The optional parameters let you filter by campaign status and control pagination — narrowing results down to active, paused, completed, or failed campaigns, and choosing how many results to show per page.
page— which page of results to show. Starts at 1 (the default)per_page— how many results to show per page. Choose from20,50, or100. Defaults to 20status— narrow results down to a specific status:active,paused,completed, orerror. Leave this out to get all warm-up campaigns
Get warm-up campaign info
Review the current configuration and status of a warm-up campaign.
This method returns the full campaign details — including strategy settings, daily limits, current deliverability stats, and the connected email account — so you can monitor progress and verify settings before making changes.
Required input:
id — the warm-up campaign you want to look up. You can get this from the Get list of warm-up campaigns method response
Update warm-up campaign
Adjust warm-up strategy, daily limits, status, or content settings without restarting the campaign.
This method partially updates an existing warm-up campaign — only the fields you pass are changed; all other settings remain as they were.
Required input:
id — the warm-up campaign you want to update. You can get this from the Get list of warm-up campaigns method response
Optional input:
make_endless: true — remove the campaign's deadline so the warm-up keeps running indefinitely. This overrides any deadline you'd set previously
Every other optional parameter works the same way as in the Create warm-up campaign method, so you can adjust any part of your warm-up configuration.
See Create warm-up campaign for the full list of parameters.
Get warm-up statistics
Monitor inbox rate progress and identify email providers where warm-up is underperforming.
This method returns daily and per-provider deliverability statistics for a warm-up campaign.
You can view stats over a default time periods or specify a custom date range — useful for tracking progress at different stages or comparing performance across time periods.
Required input:
id — the warm-up campaign you want statistics for. You can get this from the Get list of warm-up campaigns method response
period— a preset time window:two_weeksormonth. Required if you don't providedate_from/date_todate_from— the start date of your custom range (YYYY-MM-DD). Required if you don't provideperioddate_to— the end date of your custom range (YYYY-MM-DD). Must be on or afterdate_fromand on or after the campaign's start date. Required if you don't provideperiod
Delete warm-up campaign
Remove a warm-up campaign you no longer need. This action cannot be undone.
This method permanently deletes a warm-up campaign and its statistics — they will no longer be accessible through other warm-up API methods. Use this when you've completed warm-up or no longer need to track a campaign.
Required input:
id — the warm-up campaign you want to delete. You can get this from the Get list of warm-up campaigns method response
Sorry about that 😢
How can we improve it?