Saasco logoSaasco logo
Saasco logoSaasco logo

Introduction

OverviewGetting startedWhat is Saasco?

SDK

Quick startTrackingIdentifyConfigurationWidgetsProperties

MCP

Quick startHow it worksAuthorizationTool reference

REST API

Quick start
Set up Email MarketingDraft a campaign
getList Email CampaignsgetGet Email CampaignpostCreate Email CampaignputUpdate Email CampaignpostDuplicate Email CampaigndelDelete Email CampaignpostSend Email CampaignpostResume Sending Email CampaignpostStop Sending Email CampaignpostSend Test EmailgetCount Campaign EmailsgetGet Email Stats
Set up a workflow
Email MarketingCampaigns

Duplicate Email Campaign

Copies a campaign (its messages, audience, and settings) into a new DRAFT. The copy is named "<original> (Copy)", incrementing to (Copy 2) and beyond if that name is taken. Send counts, sent timestamps, and any A/B winner are reset, so the duplicate behaves like a fresh campaign rather than inheriting the original's results.

POST
/projects/{projectId}/email-campaigns/{campaignId}/duplicate

Authorization

Authorization
AuthorizationBearer <token>

In: header

Path Parameters

projectIdrequiredstring

ID of the project that owns the campaign.

campaignIdrequiredstring

ID of the campaign to copy.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://www.saasco.com/api/v2/projects/string/email-campaigns/string/duplicate"
{
  "id": "string",
  "createdAt": "string",
  "updatedAt": "string",
  "projectId": "string",
  "name": "string",
  "status": "DRAFT",
  "type": "STANDARD",
  "workflowId": "string",
  "workflowStepId": "string",
  "sentAt": "string",
  "contactListId": "string",
  "contactsFilterGroups": [],
  "lastSuccessContactId": "string",
  "lastSuccessContactCreatedAt": "string",
  "sendOrderByProperty": {
    "direction": "asc",
    "propertyKey": "string"
  },
  "abTestConfig": {
    "variable": "SUBJECT",
    "samplePercent": 20,
    "winnerMetric": "OPEN_RATE",
    "winnerWaitHours": 4,
    "winnerWaitUnit": "HOURS",
    "sendTimeDelayHours": 2,
    "sendTimeDelayUnit": "HOURS",
    "winnerMessageId": "string",
    "winnerSelectedAt": "string",
    "winnerRolloutAt": "string",
    "winnerWaitStartedAt": "string",
    "status": "AWAITING_SAMPLE",
    "samplePaginationEnd": 9007199254740991
  },
  "utmConfig": {
    "enabled": true,
    "params": {
      "campaign": "",
      "content": "",
      "medium": "",
      "source": "",
      "term": ""
    }
  },
  "sendCount": 0,
  "sendingTargetDurationMs": 9007199254740991,
  "sendPaginationCount": 0,
  "messages": [],
  "bcc": "string",
  "bodyHTML": "string",
  "bodyJSON": {
    "property1": null,
    "property2": null
  },
  "cc": "string",
  "fromDomain": "string",
  "fromEmailUsername": "string",
  "fromName": "string",
  "previewTextHTML": "string",
  "previewTextJSON": {
    "property1": null,
    "property2": null
  },
  "replyTo": "string",
  "scheduledAt": "string",
  "subjectHTML": "string",
  "subjectJSON": {
    "property1": null,
    "property2": null
  },
  "text": "string",
  "theme": {
    "body": {
      "align": "left",
      "background": "string",
      "container": "string"
    },
    "button": {
      "background": "string",
      "borderColor": "string",
      "borderSize": 0,
      "color": "string",
      "radius": 0
    },
    "link": {
      "color": "string"
    },
    "template": "string",
    "typography": {
      "h1": {
        "color": "string",
        "fontSize": 0,
        "lineHeight": 0
      },
      "h2": {
        "color": "string",
        "fontSize": 0,
        "lineHeight": 0
      },
      "h3": {
        "color": "string",
        "fontSize": 0,
        "lineHeight": 0
      },
      "p": {
        "color": "string",
        "fontSize": 0,
        "lineHeight": 0
      }
    }
  }
}
{
  "code": "BAD_REQUEST",
  "message": "Invalid input data",
  "issues": []
}
{
  "code": "UNAUTHORIZED",
  "message": "Authorization not provided",
  "issues": []
}
{
  "code": "FORBIDDEN",
  "message": "Insufficient access",
  "issues": []
}
{
  "code": "INTERNAL_SERVER_ERROR",
  "message": "Internal server error",
  "issues": []
}

Update Email Campaign

Updates a campaign's settings. Despite the PUT, only the fields present in `changes` are written. Anything omitted keeps its current value. Editing a campaign that has already sent changes future behaviour only; it does not alter or resend emails already delivered.

Delete Email Campaign

Permanently deletes a campaign and its messages. Only campaigns still in DRAFT can be deleted. Once a campaign has started sending it is rejected with 400, so delivery history is never destroyed this way. Cannot be undone.