Less boo. More booked. Halloween offer: 30 days free on any paid plan. Claim 30 days freeEvery new account gets one free mailbox for warmup and replies. No domain to buy. See how it works

Skip to content

Update a campaign

API referenceCampaigns

From the Campaigns API reference. Requests use the base URL https://app.warmerly.com/api/v1 and an API key, see Authentication.

text
PATCH /campaigns/{id}

All fields optional: send only what you want to change.

FieldType
namestring (1-200 chars)
status"draft" \| "active" \| "paused" \| "completed" \| "archived"
dailyLimitinteger (1-50000)
stopOnReplyboolean
stopOnAutoReplyboolean
trackOpensboolean
trackClicksboolean
plainTextOnlyboolean
sendingDaysinteger[] (0-6, 0 = Sunday)
sendingHourStartinteger (0-23)
sendingHourEndinteger (0-23)
timezonevalid IANA timezone string
recipientWindowHourStart / recipientWindowHourEndinteger (0-23)
minWaitMinutesinteger (0-1440)
rampEnabledboolean
rampStartPerSenderinteger (1-500)
rampMaxPerSenderinteger (1-500)
rampStepPerDayinteger (1-100)
assignedToUserIdUUID or null
targetRepliesinteger (0-1000000) or null
targetLeadsinteger (0-1000000) or null
brief{ senderContext, offer, icp, tone? } (strings, up to 2000 characters each, tone up to 200) or null

Fields not in this table are ignored without an error. A body that fails validation returns 400 bad_request with a message naming the field.

status: "paused" and status: "active" behave exactly like pause and resume: only an active campaign can be paused and only a paused one resumed (otherwise 409 conflict), and they must be sent without other fields (otherwise 400 bad_request). Setting "draft", "completed" or "archived" is a plain write. To launch a draft, completed or archived campaign, use POST /campaigns/{id}/start.

bash
curl -X PATCH https://app.warmerly.com/api/v1/campaigns/b6a1e7b0-2f2b-4b7a-8e2a-1a2b3c4d5e6f \
  -H "X-Api-Key: wmv_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{ "dailyLimit": 75, "sendingHourStart": 8, "sendingHourEnd": 18 }'
json
{ "campaign": { "id": "b6a1e7b0-2f2b-4b7a-8e2a-1a2b3c4d5e6f", "dailyLimit": 75, "sendingHourStart": 8, "sendingHourEnd": 18, "...": "..." } }

To change status directly, use PATCH with { "status": "..." }, or prefer the dedicated start, pause, and resume actions below, which also validate that the campaign is actually ready to send.

Was this page helpful?