Skip to main content
POST
Create campaign

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.

enable_click_tracking
boolean
default:false

Enable link click-through-rate (CTR) tracking. When enabled, links in emails are rewritten to route through a verified tracking domain, allowing you to measure how many recipients clicked links in your emails. Requires a verified tracking domain provisioned for one of your sending domains.

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