PATCH
/campaigns/{id}/sequence/{stepId}

Partially updates one existing sequence step's copy and/or media while preserving its id, wiring, delays and other A/B variants. Use the step and variant ids returned by GET /campaigns/{id}. When variantId is omitted, variant A is updated; pass another existing variantId to update that variant without changing variant A. This endpoint is preferred over replacing the full sequence for copy, attachment and recorded-voice edits.

Authorization

bearerAuth
AuthorizationBearer <token>

An API key created under Settings → API & Webhooks.

In: header

Path Parameters

id*string
stepId*string

Stable sequence step id returned by the campaign detail.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Content fields depend on the target step type: message uses text/fallbackText; invite uses note/fallbackNote; InMail also accepts subject/fallbackSubject; AI voice note uses script/fallbackScript; comment post uses prompt. Message and InMail accept attachments and voice; recorded voice note accepts voice.

Content fields depend on the target step type: message uses text/fallbackText; invite uses note/fallbackNote; InMail also accepts subject/fallbackSubject; AI voice note uses script/fallbackScript; comment post uses prompt. Message and InMail accept attachments and voice; recorded voice note accepts voice.

Response Body

application/json

application/json

application/json

application/json

curl -X PATCH "https://example.com/campaigns/string/sequence/string" \  -H "Content-Type: application/json" \  -d '{    "text": "{{firstName}}, is that the kind of gap you run into too?"  }'
{  "data": {    "id": "string",    "name": "string",    "status": "draft",    "stats": {      "total": 0,      "done": 0,      "failed": 0    },    "aiInterestEnabled": true,    "linkedinAccountIds": [      "string"    ],    "excludeListIds": [      "string"    ],    "excludeOtherCampaigns": true,    "excludeOtherSenders": true,    "excludeSameSenderOtherCampaigns": true,    "schedule": {      "startDate": "2019-08-24T14:15:22Z",      "endDate": "2019-08-24T14:15:22Z",      "timezone": "string",      "activeHours": {        "from": "string",        "to": "string"      },      "activeDays": [        0      ]    },    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z",    "sequence": {      "steps": [        {          "id": "string",          "type": "visit_profile",          "parent": "string",          "branch": "yes",          "config": {},          "nextDelayHours": 0,          "branchDelays": {            "yes": 0,            "no": 0          }        }      ]    }  }}