Skip to main content
POST
/
api
/
public
/
v1
/
campaigns
Create campaign
curl --request POST \
  --url https://api.coldsend.pro/api/public/v1/campaigns \
  --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": "America/New_York",
  "sending_days": [
    1,
    2,
    3,
    4,
    5
  ],
  "sending_window_start": 9,
  "sending_window_start_minute": 0,
  "sending_window_end": 17,
  "sending_window_end_minute": 0,
  "enable_tracking": false,
  "enable_unsubscribe": true,
  "ramp_up_enabled": false,
  "ramp_up_increment": 50,
  "ramp_up_max_limit": 500
}
'
{
  "success": true,
  "message": "<string>",
  "campaign_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "name": "<string>",
  "status": "<string>",
  "current_step": 123,
  "created_at": "2023-11-07T05:31:56Z"
}

Authorizations

X-API-Key
string
header
required

API key with format cs_live_xxx

Body

application/json

Request schema for public campaign creation.

name
string
required

Campaign name (minimum 8 characters). Use descriptive names like 'Q1 2024 Product Launch'.

Required string length: 8 - 255
daily_limit_per_inbox
integer | null

Maximum emails per inbox per day for this campaign. Recommended: 20-30 for new accounts, 50-80 for warmed accounts, 80-100 for established accounts. Set to null for no campaign-specific limit.

Required range: 1 <= x <= 100
start_date
string<date-time> | null

Campaign start date and time (ISO 8601 format). If not specified, campaign starts immediately upon activation. All times are interpreted in the specified timezone.

timezone
string
default:America/New_York

Timezone for campaign scheduling (IANA timezone format). Common values: America/New_York, Europe/London, America/Los_Angeles, Asia/Tokyo. All sending windows are interpreted in this timezone.

Maximum string length: 100
sending_days
integer[]

Days of the week to send emails where 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday, 7=Sunday. Best practice for B2B is [1,2,3,4,5] (Monday-Friday).

Required array length: 1 - 7 elements
sending_window_start
integer
default:9

Start hour for sending window in 24-hour format (0-23). Emails are only sent during the window. Example: 9 = 9:00 AM. Recommended for B2B: 9 (9 AM).

Required range: 0 <= x <= 23
sending_window_start_minute
integer
default:0

Start minute for sending window (0-59). Example: 30 = half past the hour.

Required range: 0 <= x <= 59
sending_window_end
integer
default:17

End hour for sending window in 24-hour format (1-24). Must be after sending_window_start. Example: 17 = 5:00 PM. Recommended for B2B: 17 (5 PM).

Required range: 1 <= x <= 24
sending_window_end_minute
integer
default:0

End minute for sending window (0-59). Must be 0 when sending_window_end is 24.

Required range: 0 <= x <= 59
enable_tracking
boolean
default:false

Enable email open tracking via tracking pixels. When enabled, inserts invisible 1x1 pixel to detect opens. Requires HTML email format. Note: Blocked by some privacy-focused email clients. Replies are always tracked regardless of this setting.

enable_unsubscribe
boolean
default:true

Automatically insert unsubscribe link in email footer. Strongly recommended to keep enabled for compliance with CAN-SPAM (US), CASL (Canada), and GDPR (EU). Adds one-click unsubscribe and honors List-Unsubscribe header.

ramp_up_enabled
boolean
default:false

Enable gradual ramp-up of daily sending volume per inbox. When enabled, the system starts at a low daily limit and incrementally increases it to ramp_up_max_limit over successive sending days. Recommended for new domains or inboxes to build sender reputation.

ramp_up_increment
integer | null

Additional emails per inbox per day added on each ramp-up day (1-100). Defaults to the system-configured value when omitted. Example: 5 means the daily limit grows by 5 each day.

Required range: 1 <= x <= 100
ramp_up_max_limit
integer | null

Maximum daily emails per inbox once fully ramped (1-1000). Defaults to the system-configured value when omitted. The ramp-up plateaus at this value and stays there.

Required range: 1 <= x <= 1000

Response

Campaign created successfully

Response for campaign creation.

success
boolean
required
message
string
required
campaign_id
string<uuid>
required

Created campaign ID

name
string
required

Campaign name

status
string
required

Campaign status (DRAFT)

current_step
integer
required

Current campaign creation step

created_at
string<date-time>
required

Campaign creation timestamp