curl --request POST \
--url https://api.instantly.ai/api/v2/accounts/warmup/enable \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"emails": [
"user@example.com"
],
"include_all_emails": true,
"excluded_emails": [
"user@example.com"
],
"filter": {
"tag_id": "01a082d0-82fb-73eb-9728-022476f519c7",
"filter": "ACC_FILTER_PAUSED"
},
"search": "gmail.com"
}
'import requests
url = "https://api.instantly.ai/api/v2/accounts/warmup/enable"
payload = {
"emails": ["user@example.com"],
"include_all_emails": True,
"excluded_emails": ["user@example.com"],
"filter": {
"tag_id": "01a082d0-82fb-73eb-9728-022476f519c7",
"filter": "ACC_FILTER_PAUSED"
},
"search": "gmail.com"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
emails: ['user@example.com'],
include_all_emails: true,
excluded_emails: ['user@example.com'],
filter: {tag_id: '01a082d0-82fb-73eb-9728-022476f519c7', filter: 'ACC_FILTER_PAUSED'},
search: 'gmail.com'
})
};
fetch('https://api.instantly.ai/api/v2/accounts/warmup/enable', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://api.instantly.ai/api/v2/accounts/warmup/enable")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"emails\": [\n \"user@example.com\"\n ],\n \"include_all_emails\": true,\n \"excluded_emails\": [\n \"user@example.com\"\n ],\n \"filter\": {\n \"tag_id\": \"01a082d0-82fb-73eb-9728-022476f519c7\",\n \"filter\": \"ACC_FILTER_PAUSED\"\n },\n \"search\": \"gmail.com\"\n}")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.instantly.ai/api/v2/accounts/warmup/enable",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'emails' => [
'user@example.com'
],
'include_all_emails' => true,
'excluded_emails' => [
'user@example.com'
],
'filter' => [
'tag_id' => '01a082d0-82fb-73eb-9728-022476f519c7',
'filter' => 'ACC_FILTER_PAUSED'
],
'search' => 'gmail.com'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.instantly.ai/api/v2/accounts/warmup/enable"
payload := strings.NewReader("{\n \"emails\": [\n \"user@example.com\"\n ],\n \"include_all_emails\": true,\n \"excluded_emails\": [\n \"user@example.com\"\n ],\n \"filter\": {\n \"tag_id\": \"01a082d0-82fb-73eb-9728-022476f519c7\",\n \"filter\": \"ACC_FILTER_PAUSED\"\n },\n \"search\": \"gmail.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "675266e304a8e55b17f0228b",
"workspace_id": "01a082d0-332e-7296-bd3a-5ba6ca83786b",
"type": "move-leads",
"progress": 0,
"status": "pending",
"created_at": "2026-09-08T20:57:57.806Z",
"updated_at": "2026-09-08T20:57:57.806Z",
"user_id": "01a082d0-332e-7296-bd3a-5ba7f1fe4319",
"entity_id": "01a082d0-332e-7296-bd3a-5ba8d86daeb4",
"entity_type": "list",
"data": {
"moved_lead_emails": [
"jane@example.com",
"john@example.com"
]
}
}{
"statusCode": 401,
"error": "Unauthorized",
"message": "Missing Authorization header"
}{
"statusCode": 402,
"error": "Payment Required",
"message": "Workspace does not have an active paid plan"
}{
"statusCode": 404,
"error": "Not Found",
"message": "Resource not found"
}{
"statusCode": 429,
"error": "Too Many Requests",
"message": "Rate limit exceeded"
}Enable warmup for accounts
Initiates a background job to enable warmup for the specified accounts. The response will contain the initial background job object. You can monitor the job’s progress by polling the GET: /api/v2/background-jobs/:id endpoint.
curl --request POST \
--url https://api.instantly.ai/api/v2/accounts/warmup/enable \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"emails": [
"user@example.com"
],
"include_all_emails": true,
"excluded_emails": [
"user@example.com"
],
"filter": {
"tag_id": "01a082d0-82fb-73eb-9728-022476f519c7",
"filter": "ACC_FILTER_PAUSED"
},
"search": "gmail.com"
}
'import requests
url = "https://api.instantly.ai/api/v2/accounts/warmup/enable"
payload = {
"emails": ["user@example.com"],
"include_all_emails": True,
"excluded_emails": ["user@example.com"],
"filter": {
"tag_id": "01a082d0-82fb-73eb-9728-022476f519c7",
"filter": "ACC_FILTER_PAUSED"
},
"search": "gmail.com"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
emails: ['user@example.com'],
include_all_emails: true,
excluded_emails: ['user@example.com'],
filter: {tag_id: '01a082d0-82fb-73eb-9728-022476f519c7', filter: 'ACC_FILTER_PAUSED'},
search: 'gmail.com'
})
};
fetch('https://api.instantly.ai/api/v2/accounts/warmup/enable', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://api.instantly.ai/api/v2/accounts/warmup/enable")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"emails\": [\n \"user@example.com\"\n ],\n \"include_all_emails\": true,\n \"excluded_emails\": [\n \"user@example.com\"\n ],\n \"filter\": {\n \"tag_id\": \"01a082d0-82fb-73eb-9728-022476f519c7\",\n \"filter\": \"ACC_FILTER_PAUSED\"\n },\n \"search\": \"gmail.com\"\n}")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.instantly.ai/api/v2/accounts/warmup/enable",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'emails' => [
'user@example.com'
],
'include_all_emails' => true,
'excluded_emails' => [
'user@example.com'
],
'filter' => [
'tag_id' => '01a082d0-82fb-73eb-9728-022476f519c7',
'filter' => 'ACC_FILTER_PAUSED'
],
'search' => 'gmail.com'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.instantly.ai/api/v2/accounts/warmup/enable"
payload := strings.NewReader("{\n \"emails\": [\n \"user@example.com\"\n ],\n \"include_all_emails\": true,\n \"excluded_emails\": [\n \"user@example.com\"\n ],\n \"filter\": {\n \"tag_id\": \"01a082d0-82fb-73eb-9728-022476f519c7\",\n \"filter\": \"ACC_FILTER_PAUSED\"\n },\n \"search\": \"gmail.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "675266e304a8e55b17f0228b",
"workspace_id": "01a082d0-332e-7296-bd3a-5ba6ca83786b",
"type": "move-leads",
"progress": 0,
"status": "pending",
"created_at": "2026-09-08T20:57:57.806Z",
"updated_at": "2026-09-08T20:57:57.806Z",
"user_id": "01a082d0-332e-7296-bd3a-5ba7f1fe4319",
"entity_id": "01a082d0-332e-7296-bd3a-5ba8d86daeb4",
"entity_type": "list",
"data": {
"moved_lead_emails": [
"jane@example.com",
"john@example.com"
]
}
}{
"statusCode": 401,
"error": "Unauthorized",
"message": "Missing Authorization header"
}{
"statusCode": 402,
"error": "Payment Required",
"message": "Workspace does not have an active paid plan"
}{
"statusCode": 404,
"error": "Not Found",
"message": "Resource not found"
}{
"statusCode": 429,
"error": "Too Many Requests",
"message": "Rate limit exceeded"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
List of emails to enable warmup accounts for. The emails should be attached to accounts in your workspace.
100If true, it will enable warmup to all accounts
true
List of emails to exclude when include_all_emails is true.
100Optional filter to apply when include_all_emails is true. Can contain tag_id or other filter criteria.
Show child attributes
Show child attributes
Optional search query to filter accounts when include_all_emails is true.
"gmail.com"
Response
The requested Background Job
A background job that can be used to perform long-running tasks
Unique identifier for the background job
"675266e304a8e55b17f0228b"
Workspace ID
"01a082d0-332e-7296-bd3a-5ba6ca83786b"
Type of background job
move-leads, import-leads, export-leads, update-warmup-accounts, rename-variable, broadcast-ai-generate, broadcast-website-scrape, import-subscribers-from-crm, resync-subscriber-crm-tags "move-leads"
Progress of the job as a percentage (from 0 to 100)
0 <= x <= 1000
Job status
pending, in-progress, success, failed, draining, paused, cancelled "pending"
Timestamp when the job was created
"2026-09-08T20:57:57.806Z"
Timestamp when the job was last updated
"2026-09-08T20:57:57.806Z"
The id of the user that triggered the action that created the job
"01a082d0-332e-7296-bd3a-5ba7f1fe4319"
The id of the entity that the job is related to
"01a082d0-332e-7296-bd3a-5ba8d86daeb4"
Type of entity
list, campaign, workspace, broadcast, subscriber-group-sync, subscriber-group "list"
Data about the job, used to store any additional information we need to process the job
Show child attributes
Show child attributes