Skip to main content
PUT
/
api
/
public
/
v1
/
campaigns
/
{campaign_id}
Update campaign
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_end": 12,
  "enable_tracking": true,
  "enable_unsubscribe": true,
  "lead_mapping": {},
  "inbox_ids": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "variants": [
    {
      "subject_template": "<string>",
      "email_content": "<string>",
      "variant_name": "A",
      "variant_label": "<string>",
      "distribution_percent": 100
    }
  ],
  "sequences": [
    {
      "step_number": 3,
      "trigger_type": "<string>",
      "wait_days": 15,
      "variants": [
        {
          "email_content": "<string>",
          "variant_name": "A",
          "variant_label": "<string>",
          "subject_template": "<string>",
          "distribution_percent": 100
        }
      ],
      "enable_unsubscribe": true
    }
  ],
  "launch": false
}
'
{
  "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>"
  ]
}

Authorizations

X-API-Key
string
header
required

API key with format cs_live_xxx

Path Parameters

campaign_id
string<uuid>
required

Body

application/json

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.

name
string | null

Campaign name (minimum 8 characters)

Required string length: 8 - 255
daily_limit_per_inbox
integer | null

Maximum emails per inbox per day (1-100)

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

Campaign start date (ISO 8601 format)

timezone
string | null

Timezone for scheduling (IANA format)

Maximum string length: 100
sending_days
integer[] | null

Days to send (1=Monday, 7=Sunday)

Required array length: 1 - 7 elements
sending_window_start
integer | null

Sending window start hour (0-23)

Required range: 0 <= x <= 23
sending_window_end
integer | null

Sending window end hour (1-24)

Required range: 1 <= x <= 24
enable_tracking
boolean | null

Enable open tracking

enable_unsubscribe
boolean | null

Enable unsubscribe link

lead_mapping
Lead Mapping · object

Column mapping from CSV to lead fields

inbox_ids
string<uuid>[] | null

Inbox IDs to use for sending

Minimum array length: 1
variants
PublicInlineVariantRequest · object[] | null

Email variants for A/B testing. All variants must sum to 100% distribution.

sequences
PublicSequenceRequest · object[] | null

Follow-up email sequences (max 3)

launch
boolean
default:false

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.

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

Campaign ID

name
string
required

Campaign name

status
string
required

Campaign status: DRAFT, ACTIVE, PAUSED, COMPLETED, or FAILED

is_launch_ready
boolean
required

Whether the campaign has all required components to launch

updated_at
string<date-time>
required

Last update timestamp

missing_requirements
string[]

List of missing requirements before launch (empty if launch-ready)