MailerUpdateCampaign¶
PUT mailer/campaign
Updates a campaign. Only the fields present in the request are changed.
A campaign that has already started rolling out keeps the content its queued emails were rendered with — editing it changes only what the remaining batches will say.
Access Control¶
Allowed roles: admin, leader, within the brand of the caller. Only the author or an admin may edit it.
Request¶
PUT https://{broker_domain}/mailer/campaign
{
"id": 3,
"scheduledAt": "2026-08-25T08:00:00Z"
}
{
"command": "MailerUpdateCampaign",
"extID": "1",
"data": {
"id": 3,
"scheduledAt": "2026-08-25T08:00:00Z"
}
}
const res = await platform.MailerUpdateCampaign({
id: 3,
scheduledAt: "2026-08-25T08:00:00Z"
});
Request Data¶
| Field | Type | Required | Description |
|---|---|---|---|
id |
int | Yes | Campaign id |
name |
string | No | Campaign name |
description |
string | No | Free-form note |
recipientConfig |
object | No | New recipient description |
templateId |
int | No | Template to render for every recipient |
subject |
string | No | Subject, when the content is passed inline |
html |
string | No | HTML body |
text |
string | No | Plain-text part; generated from the HTML when omitted |
structure |
array | No | Email builder tree |
profileId |
int | No | Explicit provider profile for the whole campaign |
kind |
enum | No | TRANSACTIONAL or MARKETING |
scheduledAt |
string | No | ISO 8601 start time; empty starts the rollout immediately |
status |
enum | No | DRAFT (default) or PENDING to hand it to the scheduler |
Response Data¶
{
"id": 3,
"name": "Summer promo",
"status": "PENDING",
"scheduledAt": "2026-08-25 08:00:00",
"updatedAt": "2026-08-24 14:31:07"
}
Errors¶
| Code | Error | Description |
|---|---|---|
403 |
PERMISSION_DENIED |
The campaign belongs to another manager |
404 |
NOT_FOUND |
Campaign, template, or profile not found in the brand |
409 |
CAMPAIGN_NOT_EDITABLE |
The campaign is already running or finished |