curl --request POST \
--url https://api.salessequencer.com/api/v1/campaigns/{campaign_id}/sequence \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"body": [
"<string>"
],
"sequence_json": "<string>",
"subject": [
"<string>"
],
"wait": [
123
]
}
'import requests
url = "https://api.salessequencer.com/api/v1/campaigns/{campaign_id}/sequence"
payload = {
"body": ["<string>"],
"sequence_json": "<string>",
"subject": ["<string>"],
"wait": [123]
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
body: JSON.stringify(['<string>']),
sequence_json: '<string>',
subject: ['<string>'],
wait: [123]
})
};
fetch('https://api.salessequencer.com/api/v1/campaigns/{campaign_id}/sequence', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Save the email sequence
Replaces the whole multi-step sequence (every step, each with A/B variants). Preferred input is sequence_json; if it is missing or not a JSON list, the flat repeatable subject/body/wait fields are used instead (one variant per step). A positive wait on step 2+ becomes a wait step of that many days; the first step’s wait is ignored. Refuses with flash ‘Write at least one email before saving.’ when every body is blank (nothing saved).
Minimum role: edit (x-min-role). Destructive: false (x-destructive).
curl --request POST \
--url https://api.salessequencer.com/api/v1/campaigns/{campaign_id}/sequence \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"body": [
"<string>"
],
"sequence_json": "<string>",
"subject": [
"<string>"
],
"wait": [
123
]
}
'import requests
url = "https://api.salessequencer.com/api/v1/campaigns/{campaign_id}/sequence"
payload = {
"body": ["<string>"],
"sequence_json": "<string>",
"subject": ["<string>"],
"wait": [123]
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
body: JSON.stringify(['<string>']),
sequence_json: '<string>',
subject: ['<string>'],
wait: [123]
})
};
fetch('https://api.salessequencer.com/api/v1/campaigns/{campaign_id}/sequence', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Authorizations
Path Parameters
Body
Fallback, repeatable, one per step. Used only when sequence_json is absent.
JSON list: [{"wait": , "variants": [{"subject": "...", "body": "..."}]}].
Fallback, repeatable, one per step. Used only when sequence_json is absent.
Fallback, repeatable, days to wait before each step after the first.
Response
Redirect to the sequence tab; flash 'Sequence saved'.