Replace email campaign steps

Deprecated

PATCH
/emails/campaigns/{campaignId}/steps

Replaces the full ordered list of steps (the sequence). The campaign must not be RUNNING or ARCHIVED. Steps after the first must have delay.amount > 0, and a step may have at most one disabled version. Changing the step count resets the cached stats. New integrations should use the multichannel /advanced campaign endpoints instead.

Authorization

apiKey
Authorization<token>

Your 48 character API key, sent as is (a Bearer prefix is tolerated). Create it at https://v3.emelia.io/settings/api.

In: header

Path Parameters

campaignId*string

Mongo ObjectId of the campaign.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/emails/campaigns/65f1a2b3c4d5e6f73478765e/steps" \  -H "Authorization: YOUR_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "steps": [      {        "delay": {          "amount": 0,          "unit": "DAYS"        },        "versions": [          {            "subject": "Quick question, {{firstName}}",            "message": "<p>Hi {{firstName}},</p>"          }        ]      },      {        "delay": {          "amount": 2,          "unit": "DAYS"        },        "versions": [          {            "subject": "",            "message": "<p>Following up.</p>"          }        ]      }    ]  }'
{  "success": true,  "campaign": {    "_id": "6650f1a2b839d8000b13890b",    "userId": "6650f1a2b839d800555fdeb3",    "name": "Q4 outreach: SaaS founders",    "status": "DRAFT",    "provider": "6650f1a2b839d800d6193fc9",    "useManyProviders": true,    "providersUsed": [      "6650f1a2b839d800c15749e7"    ],    "schedule": {      "bcc": "",      "dailyContact": 35,      "dailyLimit": 100,      "minInterval": 60,      "maxInterval": 180,      "blacklistUnsub": true,      "trackLinks": true,      "trackOpens": true,      "timeZone": "Europe/Paris",      "days": [        1      ],      "start": "08:00",      "end": "17:00",      "eventToStopMails": []    },    "steps": [      {        "_id": "6650f1a2b839d8004d4acc0a",        "delay": {          "amount": 1,          "unit": "DAYS"        },        "versions": [          {            "_id": "6650f1a2b839d800ef395699",            "subject": "Quick question about Nexora",            "message": "Hi Claire, thanks for your reply. Are you free for a call on Thursday?",            "disabled": false,            "rawHtml": true,            "attachments": [],            "options": {}          }        ]      }    ],    "recipients": {      "lists": [        {}      ],      "contacts": [        "6650f1a2b839d800cdc683a1"      ],      "processing": true    },    "zapierData": [      {        "webhookUrl": "https://hooks.yourcompany.com/emelia",        "events": []      }    ],    "createdAt": "2026-10-06T09:30:00.000Z",    "startAt": "2026-10-06T09:30:00.000Z",    "estimatedEnd": "2026-10-06T09:30:00.000Z",    "plannedStart": "2026-10-06T09:30:00.000Z"  }}