v97

latestOpenAPI 3.1.0raw.githubusercontent.com2026-08-04231129815.9 KB
Campaigns

Update a draft campaign

Update a draft campaign's name, labels, content, audience, From/Reply-To settings, or campaign personalization data. Direct addresses create profiles when needed.

put/campaigns/{campaignId}

Path parameters

campaignIdstring required

Campaign ID

Request body

namestring

Updated campaign name

subjectstring

Updated email subject line

previewTextstring nullable

Updated inbox preview text. Set to null to clear it.

preheaderTextstring nullable

Compatibility alias for previewText.

trackingCodestring nullable

Campaign tracking code available to UTM templates as {{campaign.trackingCode}}. Send an empty string or null to clear it.

htmlstring

Updated email HTML content. Mutually exclusive with blocks.

blocksobject[]

Updated Sequenzy email blocks. Mutually exclusive with html. Put visual styling under styles; top-level style keys such as backgroundColor, backgroundOpacity, borderColor, borderWidth, and borderRadius are normalized into styles.

fromEmailstring email

Campaign From address. Its domain must be configured and verified.

fromNamestring

Display name for a newly created sender profile. Requires fromEmail; omit it when using senderProfileId, which already carries its own display name.

senderProfileIdstring

Existing sender profile ID. It already supplies both the From address and display name, so send it on its own and omit fromEmail and fromName.

replyTostring email

Reply-To email for this campaign. A profile is created when needed. Mutually exclusive with replyProfileId.

replyProfileIdstring

Reply profile ID for this company. It already supplies both the Reply-To address and display name, so send it on its own and omit replyTo and replyToName.

replyToNamestring

Display name for a newly created reply profile. Requires replyTo; omit it when using replyProfileId, which already carries its own display name.

ccEmailsstring[] nullable

Addresses CC'd on every recipient's email for this campaign. Send an empty array or null to clear them.

bccEmailsstring[] nullable

Addresses BCC'd on every recipient's email for this campaign. Send an empty array or null to clear them.

labelsstring[]

Replacement label names. Send an empty array to clear labels. Missing labels are created automatically.

labelstring[]

Compatibility alias for labels.

campaignDataobject nullable

Campaign-scoped JSON data available while rendering this campaign. Top-level arrays can contain up to 500 items. Set to null to clear it.

computedListsobject[]

Personalized list definitions computed from campaignData. Keys can use letters, numbers, underscores, and dots. Use maxItems to cap each subscriber's list length. Pass an empty array to clear computed lists.

targetListsobject nullable

Replacement campaign audience, using the same shapes as campaign create. Send null to clear saved targeting and choose the audience when scheduling; omit to leave it unchanged. Mutually exclusive with segmentId.

segmentIdstring

Shorthand for retargeting the draft at one saved segment. Equivalent to targetLists {"type":"segment","segmentId":"seg_123"}. Mutually exclusive with targetLists.

Example request

{
  "name": "April Launch",
  "subject": "A quick update",
  "previewText": "A short preview for the inbox",
  "preheaderText": "A short preview for the inbox",
  "html": "<p>Hello there!</p>",
  "replyTo": "support@example.com",
  "replyProfileId": "reply_abc123",
  "ccEmails": [
    "ops@example.com"
  ],
  "bccEmails": [
    "archive@example.com"
  ],
  "labels": [
    "edm",
    "api"
  ],
  "label": [
    "edm",
    "api"
  ],
  "campaignData": {
    "events": [
      {
        "id": "evt_123",
        "title": "Romeo and Juliet",
        "region": "Auckland",
        "genre": "theatre",
        "url": "https://example.com/events/evt_123"
      }
    ]
  },
  "computedLists": [
    {
      "key": "recommendedEvents",
      "source": "events",
      "maxItems": 6,
      "rules": [
        {
          "itemField": "region",
          "operator": "equals",
          "subscriberField": "region"
        },
        {
          "itemField": "genre",
          "operator": "in",
          "subscriberField": "interests"
        }
      ]
    }
  ]
}

Response

Campaign updated successfully

successboolean required
warningsstring[]

Non-blocking advisories about the blocks that were written. The write succeeded. Present when a field was not part of the block schema and was discarded, or when a supported field does not control what its name suggests for that block type - for example styles.backgroundColor on a button colors the band behind the button while the fill comes from buttonColor. Each message names the offending path and the fields that block does accept. A sequence email step update also reports the blocks the step's existing Style > Format added back on top of the submitted blocks, because the response echoes node config rather than the stored blocks. Absent when there is nothing to report.

Example response

{
  "success": true,
  "campaign": {
    "id": "camp_abc123",
    "name": "April Launch",
    "subject": "A quick update",
    "status": "draft",
    "labels": [
      "edm",
      "api"
    ],
    "replyProfileId": "reply_abc123",
    "replyToName": "Support",
    "replyToEmail": "support@example.com",
    "ccEmails": [
      "ops@example.com"
    ],
    "bccEmails": [
      "archive@example.com"
    ],
    "url": "https://sequenzy.com/dashboard/company/comp_abc123/campaign/camp_abc123",
    "previewUrl": "https://sequenzy.com/dashboard/company/comp_abc123/campaign/camp_abc123?step=review"
  },
  "warnings": [
    "blocks[0].styles.color is not a supported field and was ignored. Button label color comes from the block-level `buttonTextColor` field. Supported styles fields: backgroundColor, backgroundOpacity, bleed, borderColor, borderRadius, borderWidth, paddingBottom, paddingLeft, paddingRight, paddingTop, textAlign, textColor."
  ]
}