curl --request PUT \
--url https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"name": "<string>",
"daily_limit_per_inbox": 50,
"start_date": "2023-11-07T05:31:56Z",
"timezone": "<string>",
"sending_days": [
123
],
"sending_window_start": 11,
"sending_window_start_minute": 29,
"sending_window_end": 12,
"sending_window_end_minute": 29,
"enable_tracking": true,
"enable_unsubscribe": true,
"enable_click_tracking": true,
"ramp_up_enabled": true,
"ramp_up_increment": 50,
"ramp_up_max_limit": 500,
"lead_mapping": {},
"inbox_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"variants": [
{
"subject_template": "<string>",
"email_content": "<string>",
"variant_name": "A",
"variant_label": "<string>",
"content_type": "<string>",
"distribution_percent": 100
}
],
"sequences": [
{
"step_number": 6,
"trigger_type": "<string>",
"wait_days": 15,
"variants": [
{
"email_content": "<string>",
"variant_name": "A",
"variant_label": "<string>",
"subject_template": "<string>",
"content_type": "<string>",
"distribution_percent": 100
}
],
"enable_unsubscribe": true
}
],
"sequence_edits": [
{
"action": "<string>",
"sequence_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"step_number": 2,
"trigger_type": "<string>",
"wait_days": 15,
"enable_unsubscribe": true,
"variants": [
{
"email_content": "<string>",
"variant_name": "A",
"variant_label": "<string>",
"subject_template": "<string>",
"content_type": "<string>",
"distribution_percent": 100
}
]
}
],
"launch": false
}
'import requests
url = "https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}"
payload = {
"name": "<string>",
"daily_limit_per_inbox": 50,
"start_date": "2023-11-07T05:31:56Z",
"timezone": "<string>",
"sending_days": [123],
"sending_window_start": 11,
"sending_window_start_minute": 29,
"sending_window_end": 12,
"sending_window_end_minute": 29,
"enable_tracking": True,
"enable_unsubscribe": True,
"enable_click_tracking": True,
"ramp_up_enabled": True,
"ramp_up_increment": 50,
"ramp_up_max_limit": 500,
"lead_mapping": {},
"inbox_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"variants": [
{
"subject_template": "<string>",
"email_content": "<string>",
"variant_name": "A",
"variant_label": "<string>",
"content_type": "<string>",
"distribution_percent": 100
}
],
"sequences": [
{
"step_number": 6,
"trigger_type": "<string>",
"wait_days": 15,
"variants": [
{
"email_content": "<string>",
"variant_name": "A",
"variant_label": "<string>",
"subject_template": "<string>",
"content_type": "<string>",
"distribution_percent": 100
}
],
"enable_unsubscribe": True
}
],
"sequence_edits": [
{
"action": "<string>",
"sequence_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"step_number": 2,
"trigger_type": "<string>",
"wait_days": 15,
"enable_unsubscribe": True,
"variants": [
{
"email_content": "<string>",
"variant_name": "A",
"variant_label": "<string>",
"subject_template": "<string>",
"content_type": "<string>",
"distribution_percent": 100
}
]
}
],
"launch": False
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
daily_limit_per_inbox: 50,
start_date: '2023-11-07T05:31:56Z',
timezone: '<string>',
sending_days: [123],
sending_window_start: 11,
sending_window_start_minute: 29,
sending_window_end: 12,
sending_window_end_minute: 29,
enable_tracking: true,
enable_unsubscribe: true,
enable_click_tracking: true,
ramp_up_enabled: true,
ramp_up_increment: 50,
ramp_up_max_limit: 500,
lead_mapping: {},
inbox_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
variants: [
{
subject_template: '<string>',
email_content: '<string>',
variant_name: 'A',
variant_label: '<string>',
content_type: '<string>',
distribution_percent: 100
}
],
sequences: [
{
step_number: 6,
trigger_type: '<string>',
wait_days: 15,
variants: [
{
email_content: '<string>',
variant_name: 'A',
variant_label: '<string>',
subject_template: '<string>',
content_type: '<string>',
distribution_percent: 100
}
],
enable_unsubscribe: true
}
],
sequence_edits: [
{
action: '<string>',
sequence_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
step_number: 2,
trigger_type: '<string>',
wait_days: 15,
enable_unsubscribe: true,
variants: [
{
email_content: '<string>',
variant_name: 'A',
variant_label: '<string>',
subject_template: '<string>',
content_type: '<string>',
distribution_percent: 100
}
]
}
],
launch: false
})
};
fetch('https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'daily_limit_per_inbox' => 50,
'start_date' => '2023-11-07T05:31:56Z',
'timezone' => '<string>',
'sending_days' => [
123
],
'sending_window_start' => 11,
'sending_window_start_minute' => 29,
'sending_window_end' => 12,
'sending_window_end_minute' => 29,
'enable_tracking' => true,
'enable_unsubscribe' => true,
'enable_click_tracking' => true,
'ramp_up_enabled' => true,
'ramp_up_increment' => 50,
'ramp_up_max_limit' => 500,
'lead_mapping' => [
],
'inbox_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'variants' => [
[
'subject_template' => '<string>',
'email_content' => '<string>',
'variant_name' => 'A',
'variant_label' => '<string>',
'content_type' => '<string>',
'distribution_percent' => 100
]
],
'sequences' => [
[
'step_number' => 6,
'trigger_type' => '<string>',
'wait_days' => 15,
'variants' => [
[
'email_content' => '<string>',
'variant_name' => 'A',
'variant_label' => '<string>',
'subject_template' => '<string>',
'content_type' => '<string>',
'distribution_percent' => 100
]
],
'enable_unsubscribe' => true
]
],
'sequence_edits' => [
[
'action' => '<string>',
'sequence_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'step_number' => 2,
'trigger_type' => '<string>',
'wait_days' => 15,
'enable_unsubscribe' => true,
'variants' => [
[
'email_content' => '<string>',
'variant_name' => 'A',
'variant_label' => '<string>',
'subject_template' => '<string>',
'content_type' => '<string>',
'distribution_percent' => 100
]
]
]
],
'launch' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.coldsend.pro/api/public/v1/campaigns/{campaign_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"daily_limit_per_inbox\": 50,\n \"start_date\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\",\n \"sending_days\": [\n 123\n ],\n \"sending_window_start\": 11,\n \"sending_window_start_minute\": 29,\n \"sending_window_end\": 12,\n \"sending_window_end_minute\": 29,\n \"enable_tracking\": true,\n \"enable_unsubscribe\": true,\n \"enable_click_tracking\": true,\n \"ramp_up_enabled\": true,\n \"ramp_up_increment\": 50,\n \"ramp_up_max_limit\": 500,\n \"lead_mapping\": {},\n \"inbox_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"variants\": [\n {\n \"subject_template\": \"<string>\",\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ],\n \"sequences\": [\n {\n \"step_number\": 6,\n \"trigger_type\": \"<string>\",\n \"wait_days\": 15,\n \"variants\": [\n {\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"subject_template\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ],\n \"enable_unsubscribe\": true\n }\n ],\n \"sequence_edits\": [\n {\n \"action\": \"<string>\",\n \"sequence_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"step_number\": 2,\n \"trigger_type\": \"<string>\",\n \"wait_days\": 15,\n \"enable_unsubscribe\": true,\n \"variants\": [\n {\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"subject_template\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ]\n }\n ],\n \"launch\": false\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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))
}HttpResponse<String> response = Unirest.put("https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"daily_limit_per_inbox\": 50,\n \"start_date\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\",\n \"sending_days\": [\n 123\n ],\n \"sending_window_start\": 11,\n \"sending_window_start_minute\": 29,\n \"sending_window_end\": 12,\n \"sending_window_end_minute\": 29,\n \"enable_tracking\": true,\n \"enable_unsubscribe\": true,\n \"enable_click_tracking\": true,\n \"ramp_up_enabled\": true,\n \"ramp_up_increment\": 50,\n \"ramp_up_max_limit\": 500,\n \"lead_mapping\": {},\n \"inbox_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"variants\": [\n {\n \"subject_template\": \"<string>\",\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ],\n \"sequences\": [\n {\n \"step_number\": 6,\n \"trigger_type\": \"<string>\",\n \"wait_days\": 15,\n \"variants\": [\n {\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"subject_template\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ],\n \"enable_unsubscribe\": true\n }\n ],\n \"sequence_edits\": [\n {\n \"action\": \"<string>\",\n \"sequence_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"step_number\": 2,\n \"trigger_type\": \"<string>\",\n \"wait_days\": 15,\n \"enable_unsubscribe\": true,\n \"variants\": [\n {\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"subject_template\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ]\n }\n ],\n \"launch\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"daily_limit_per_inbox\": 50,\n \"start_date\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\",\n \"sending_days\": [\n 123\n ],\n \"sending_window_start\": 11,\n \"sending_window_start_minute\": 29,\n \"sending_window_end\": 12,\n \"sending_window_end_minute\": 29,\n \"enable_tracking\": true,\n \"enable_unsubscribe\": true,\n \"enable_click_tracking\": true,\n \"ramp_up_enabled\": true,\n \"ramp_up_increment\": 50,\n \"ramp_up_max_limit\": 500,\n \"lead_mapping\": {},\n \"inbox_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"variants\": [\n {\n \"subject_template\": \"<string>\",\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ],\n \"sequences\": [\n {\n \"step_number\": 6,\n \"trigger_type\": \"<string>\",\n \"wait_days\": 15,\n \"variants\": [\n {\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"subject_template\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ],\n \"enable_unsubscribe\": true\n }\n ],\n \"sequence_edits\": [\n {\n \"action\": \"<string>\",\n \"sequence_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"step_number\": 2,\n \"trigger_type\": \"<string>\",\n \"wait_days\": 15,\n \"enable_unsubscribe\": true,\n \"variants\": [\n {\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"subject_template\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ]\n }\n ],\n \"launch\": false\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"campaign_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"status": "<string>",
"is_launch_ready": true,
"updated_at": "2023-11-07T05:31:56Z",
"missing_requirements": [
"<string>"
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Update campaign
Update campaign configuration
Modify campaign settings, leads, inboxes, email content, or sequences. All validations are handled automatically - no need to track internal steps.
What Can Be Updated
- Basic settings (name, schedule, limits)
- Lead mapping configuration
- Sender inbox selection
- Email variants for A/B testing
- Follow-up sequences
Launching a Campaign
Set launch: true when the campaign is ready to activate. The response includes
is_launch_ready and missing_requirements to help you understand what’s needed.
Example Usage
import requests
campaign_id = "550e8400-e29b-41d4-a716-446655440000"
# Update campaign with email content
response = requests.put(
f"https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}",
headers={"X-API-Key": "your-api-key"},
json={
"variants": [{
"variant_name": "A",
"subject_template": "Quick question, {{first_name}}",
"email_content": "Hi {{first_name}},...",
"distribution_percent": 100
}]
}
)
# Response shows what's still needed
# {"is_launch_ready": false, "missing_requirements": ["leads", "inboxes"]}
# Launch when ready
response = requests.put(
f"https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}",
headers={"X-API-Key": "your-api-key"},
json={"launch": true}
)
# {"status": "ACTIVE", "is_launch_ready": true, "missing_requirements": []}
curl --request PUT \
--url https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"name": "<string>",
"daily_limit_per_inbox": 50,
"start_date": "2023-11-07T05:31:56Z",
"timezone": "<string>",
"sending_days": [
123
],
"sending_window_start": 11,
"sending_window_start_minute": 29,
"sending_window_end": 12,
"sending_window_end_minute": 29,
"enable_tracking": true,
"enable_unsubscribe": true,
"enable_click_tracking": true,
"ramp_up_enabled": true,
"ramp_up_increment": 50,
"ramp_up_max_limit": 500,
"lead_mapping": {},
"inbox_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"variants": [
{
"subject_template": "<string>",
"email_content": "<string>",
"variant_name": "A",
"variant_label": "<string>",
"content_type": "<string>",
"distribution_percent": 100
}
],
"sequences": [
{
"step_number": 6,
"trigger_type": "<string>",
"wait_days": 15,
"variants": [
{
"email_content": "<string>",
"variant_name": "A",
"variant_label": "<string>",
"subject_template": "<string>",
"content_type": "<string>",
"distribution_percent": 100
}
],
"enable_unsubscribe": true
}
],
"sequence_edits": [
{
"action": "<string>",
"sequence_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"step_number": 2,
"trigger_type": "<string>",
"wait_days": 15,
"enable_unsubscribe": true,
"variants": [
{
"email_content": "<string>",
"variant_name": "A",
"variant_label": "<string>",
"subject_template": "<string>",
"content_type": "<string>",
"distribution_percent": 100
}
]
}
],
"launch": false
}
'import requests
url = "https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}"
payload = {
"name": "<string>",
"daily_limit_per_inbox": 50,
"start_date": "2023-11-07T05:31:56Z",
"timezone": "<string>",
"sending_days": [123],
"sending_window_start": 11,
"sending_window_start_minute": 29,
"sending_window_end": 12,
"sending_window_end_minute": 29,
"enable_tracking": True,
"enable_unsubscribe": True,
"enable_click_tracking": True,
"ramp_up_enabled": True,
"ramp_up_increment": 50,
"ramp_up_max_limit": 500,
"lead_mapping": {},
"inbox_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"variants": [
{
"subject_template": "<string>",
"email_content": "<string>",
"variant_name": "A",
"variant_label": "<string>",
"content_type": "<string>",
"distribution_percent": 100
}
],
"sequences": [
{
"step_number": 6,
"trigger_type": "<string>",
"wait_days": 15,
"variants": [
{
"email_content": "<string>",
"variant_name": "A",
"variant_label": "<string>",
"subject_template": "<string>",
"content_type": "<string>",
"distribution_percent": 100
}
],
"enable_unsubscribe": True
}
],
"sequence_edits": [
{
"action": "<string>",
"sequence_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"step_number": 2,
"trigger_type": "<string>",
"wait_days": 15,
"enable_unsubscribe": True,
"variants": [
{
"email_content": "<string>",
"variant_name": "A",
"variant_label": "<string>",
"subject_template": "<string>",
"content_type": "<string>",
"distribution_percent": 100
}
]
}
],
"launch": False
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
daily_limit_per_inbox: 50,
start_date: '2023-11-07T05:31:56Z',
timezone: '<string>',
sending_days: [123],
sending_window_start: 11,
sending_window_start_minute: 29,
sending_window_end: 12,
sending_window_end_minute: 29,
enable_tracking: true,
enable_unsubscribe: true,
enable_click_tracking: true,
ramp_up_enabled: true,
ramp_up_increment: 50,
ramp_up_max_limit: 500,
lead_mapping: {},
inbox_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
variants: [
{
subject_template: '<string>',
email_content: '<string>',
variant_name: 'A',
variant_label: '<string>',
content_type: '<string>',
distribution_percent: 100
}
],
sequences: [
{
step_number: 6,
trigger_type: '<string>',
wait_days: 15,
variants: [
{
email_content: '<string>',
variant_name: 'A',
variant_label: '<string>',
subject_template: '<string>',
content_type: '<string>',
distribution_percent: 100
}
],
enable_unsubscribe: true
}
],
sequence_edits: [
{
action: '<string>',
sequence_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
step_number: 2,
trigger_type: '<string>',
wait_days: 15,
enable_unsubscribe: true,
variants: [
{
email_content: '<string>',
variant_name: 'A',
variant_label: '<string>',
subject_template: '<string>',
content_type: '<string>',
distribution_percent: 100
}
]
}
],
launch: false
})
};
fetch('https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'daily_limit_per_inbox' => 50,
'start_date' => '2023-11-07T05:31:56Z',
'timezone' => '<string>',
'sending_days' => [
123
],
'sending_window_start' => 11,
'sending_window_start_minute' => 29,
'sending_window_end' => 12,
'sending_window_end_minute' => 29,
'enable_tracking' => true,
'enable_unsubscribe' => true,
'enable_click_tracking' => true,
'ramp_up_enabled' => true,
'ramp_up_increment' => 50,
'ramp_up_max_limit' => 500,
'lead_mapping' => [
],
'inbox_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'variants' => [
[
'subject_template' => '<string>',
'email_content' => '<string>',
'variant_name' => 'A',
'variant_label' => '<string>',
'content_type' => '<string>',
'distribution_percent' => 100
]
],
'sequences' => [
[
'step_number' => 6,
'trigger_type' => '<string>',
'wait_days' => 15,
'variants' => [
[
'email_content' => '<string>',
'variant_name' => 'A',
'variant_label' => '<string>',
'subject_template' => '<string>',
'content_type' => '<string>',
'distribution_percent' => 100
]
],
'enable_unsubscribe' => true
]
],
'sequence_edits' => [
[
'action' => '<string>',
'sequence_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'step_number' => 2,
'trigger_type' => '<string>',
'wait_days' => 15,
'enable_unsubscribe' => true,
'variants' => [
[
'email_content' => '<string>',
'variant_name' => 'A',
'variant_label' => '<string>',
'subject_template' => '<string>',
'content_type' => '<string>',
'distribution_percent' => 100
]
]
]
],
'launch' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.coldsend.pro/api/public/v1/campaigns/{campaign_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"daily_limit_per_inbox\": 50,\n \"start_date\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\",\n \"sending_days\": [\n 123\n ],\n \"sending_window_start\": 11,\n \"sending_window_start_minute\": 29,\n \"sending_window_end\": 12,\n \"sending_window_end_minute\": 29,\n \"enable_tracking\": true,\n \"enable_unsubscribe\": true,\n \"enable_click_tracking\": true,\n \"ramp_up_enabled\": true,\n \"ramp_up_increment\": 50,\n \"ramp_up_max_limit\": 500,\n \"lead_mapping\": {},\n \"inbox_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"variants\": [\n {\n \"subject_template\": \"<string>\",\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ],\n \"sequences\": [\n {\n \"step_number\": 6,\n \"trigger_type\": \"<string>\",\n \"wait_days\": 15,\n \"variants\": [\n {\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"subject_template\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ],\n \"enable_unsubscribe\": true\n }\n ],\n \"sequence_edits\": [\n {\n \"action\": \"<string>\",\n \"sequence_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"step_number\": 2,\n \"trigger_type\": \"<string>\",\n \"wait_days\": 15,\n \"enable_unsubscribe\": true,\n \"variants\": [\n {\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"subject_template\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ]\n }\n ],\n \"launch\": false\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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))
}HttpResponse<String> response = Unirest.put("https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"daily_limit_per_inbox\": 50,\n \"start_date\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\",\n \"sending_days\": [\n 123\n ],\n \"sending_window_start\": 11,\n \"sending_window_start_minute\": 29,\n \"sending_window_end\": 12,\n \"sending_window_end_minute\": 29,\n \"enable_tracking\": true,\n \"enable_unsubscribe\": true,\n \"enable_click_tracking\": true,\n \"ramp_up_enabled\": true,\n \"ramp_up_increment\": 50,\n \"ramp_up_max_limit\": 500,\n \"lead_mapping\": {},\n \"inbox_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"variants\": [\n {\n \"subject_template\": \"<string>\",\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ],\n \"sequences\": [\n {\n \"step_number\": 6,\n \"trigger_type\": \"<string>\",\n \"wait_days\": 15,\n \"variants\": [\n {\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"subject_template\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ],\n \"enable_unsubscribe\": true\n }\n ],\n \"sequence_edits\": [\n {\n \"action\": \"<string>\",\n \"sequence_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"step_number\": 2,\n \"trigger_type\": \"<string>\",\n \"wait_days\": 15,\n \"enable_unsubscribe\": true,\n \"variants\": [\n {\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"subject_template\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ]\n }\n ],\n \"launch\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"daily_limit_per_inbox\": 50,\n \"start_date\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\",\n \"sending_days\": [\n 123\n ],\n \"sending_window_start\": 11,\n \"sending_window_start_minute\": 29,\n \"sending_window_end\": 12,\n \"sending_window_end_minute\": 29,\n \"enable_tracking\": true,\n \"enable_unsubscribe\": true,\n \"enable_click_tracking\": true,\n \"ramp_up_enabled\": true,\n \"ramp_up_increment\": 50,\n \"ramp_up_max_limit\": 500,\n \"lead_mapping\": {},\n \"inbox_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"variants\": [\n {\n \"subject_template\": \"<string>\",\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ],\n \"sequences\": [\n {\n \"step_number\": 6,\n \"trigger_type\": \"<string>\",\n \"wait_days\": 15,\n \"variants\": [\n {\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"subject_template\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ],\n \"enable_unsubscribe\": true\n }\n ],\n \"sequence_edits\": [\n {\n \"action\": \"<string>\",\n \"sequence_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"step_number\": 2,\n \"trigger_type\": \"<string>\",\n \"wait_days\": 15,\n \"enable_unsubscribe\": true,\n \"variants\": [\n {\n \"email_content\": \"<string>\",\n \"variant_name\": \"A\",\n \"variant_label\": \"<string>\",\n \"subject_template\": \"<string>\",\n \"content_type\": \"<string>\",\n \"distribution_percent\": 100\n }\n ]\n }\n ],\n \"launch\": false\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"campaign_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"status": "<string>",
"is_launch_ready": true,
"updated_at": "2023-11-07T05:31:56Z",
"missing_requirements": [
"<string>"
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
API key with format cs_live_xxx
Path Parameters
Body
Request schema for updating a campaign via public API.
This schema does NOT expose internal step mechanics. Simply provide the fields you want to update, and the system will handle validation automatically. Set 'launch=true' when you're ready to activate the campaign.
Campaign name (minimum 8 characters)
8 - 255Maximum emails per inbox per day (1-100)
1 <= x <= 100Campaign start date (ISO 8601 format)
Timezone for scheduling (IANA format)
100Days to send (1=Monday, 7=Sunday)
1 - 7 elementsSending window start hour (0-23)
0 <= x <= 23Sending window start minute (0-59)
0 <= x <= 59Sending window end hour (1-24)
1 <= x <= 24Sending window end minute (0-59). Must be 0 when sending_window_end is 24
0 <= x <= 59Enable open tracking
Enable unsubscribe link
Enable link click-through-rate (CTR) tracking. Requires a verified tracking domain.
Enable or disable gradual ramp-up of daily sending volume per inbox. Setting to true resets ramp-up progress for all assigned inboxes.
Additional emails per inbox per day added on each ramp-up week (1-100)
1 <= x <= 100Maximum daily emails per inbox once fully ramped (1-1000)
1 <= x <= 1000Column mapping from CSV to lead fields
Inbox IDs to use for sending
1Email variants for A/B testing. All variants must sum to 100% distribution.
Show child attributes
Show child attributes
Follow-up email sequences (max 10). Replaces all sequences — use for DRAFT campaigns only. For PAUSED campaigns, use 'sequence_edits' instead.
Show child attributes
Show child attributes
Action-based sequence modifications (add/edit/delete). Use for PAUSED campaigns to modify individual sequences without replacing all. Each item requires an 'action' field: 'add' (new sequence), 'edit' (modify existing, requires sequence_id), or 'delete' (remove, requires sequence_id).
Show child attributes
Show child attributes
Set to true when ready to activate the campaign. Campaign must have leads, inboxes, and email content.
Response
Campaign updated successfully
Response for public campaign update.
Campaign ID
Campaign name
Campaign status: DRAFT, ACTIVE, PAUSED, COMPLETED, or FAILED
Whether the campaign has all required components to launch
Last update timestamp
List of missing requirements before launch (empty if launch-ready)
Was this page helpful?

