{
"error": {
"type": "invalid_request_error",
"code": "validation_failed",
"message": "One or more fields are invalid.",
"status": 400,
"requestId": "e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f",
"details": [
"name should not be empty"
]
}
}
{
"error": {
"type": "authentication_error",
"code": "unauthenticated",
"message": "Missing or invalid API key.",
"status": 401,
"requestId": "e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"
}
}
{
"error": {
"type": "authorization_error",
"code": "permission_denied",
"message": "This API key is missing the required scope.",
"status": 403,
"requestId": "e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"
}
}
{
"error": {
"type": "invalid_request_error",
"code": "conflict",
"message": "The request conflicts with an existing resource.",
"status": 409,
"requestId": "e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"
}
}
{
"error": {
"type": "invalid_request_error",
"code": "idempotency_key_reused",
"message": "The Idempotency-Key was already used with a different request body. Use a new key for a new operation.",
"status": 422,
"requestId": "e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"
}
}
{
"error": {
"type": "rate_limit_error",
"code": "rate_limited",
"message": "Too many requests. Retry after the interval in the Retry-After header.",
"status": 429,
"requestId": "e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f",
"retryAfter": 30
}
}
Subsequences
Update a subsequence
Partial update - only what you pass changes. Each settings section (trigger, start, sending) and sequence REPLACE the current one. The emails of a running subsequence cannot be replaced - pause it first. Needs a plan with subsequences (Pro+ and above) - otherwise 403 with code subsequences_plan_required. 409 campaign_busy = the campaign is being changed right now; retry in a few seconds.
Requires one of the following scopes: campaigns:write, campaigns:all, all:all.
PATCH
/
v1
/
subsequences
/
{id}
Update a subsequence
curl --request PATCH \ --url https://api.mailbeast.ai/v1/subsequences/{id} \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "name": "Interested - book a call (v2)", "settings": {}, "sequence": [ { "subject": "", "body": "<p>Hi {{first_name}}, here is my calendar: …</p>", "variants": [ { "subject": "", "body": "<p>Hi {{first_name}}, here is my calendar: …</p>", "isActive": true } ], "delayDays": 2, "delayHours": 0 } ], "position": 1}'
import requests
url = "https://api.mailbeast.ai/v1/subsequences/{id}"
payload = {
"name": "Interested - book a call (v2)",
"settings": {},
"sequence": [
{
"subject": "",
"body": "<p>Hi {{first_name}}, here is my calendar: …</p>",
"variants": [
{
"subject": "",
"body": "<p>Hi {{first_name}}, here is my calendar: …</p>",
"isActive": True
}
],
"delayDays": 2,
"delayHours": 0
}
],
"position": 1
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)
const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Interested - book a call (v2)',
settings: {},
sequence: [
{
subject: '',
body: JSON.stringify('<p>Hi {{first_name}}, here is my calendar: …</p>'),
variants: [
{
subject: '',
body: JSON.stringify('<p>Hi {{first_name}}, here is my calendar: …</p>'),
isActive: true
}
],
delayDays: 2,
delayHours: 0
}
],
position: 1
})
};
fetch('https://api.mailbeast.ai/v1/subsequences/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
{
"error": {
"type": "invalid_request_error",
"code": "validation_failed",
"message": "One or more fields are invalid.",
"status": 400,
"requestId": "e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f",
"details": [
"name should not be empty"
]
}
}
{
"error": {
"type": "authentication_error",
"code": "unauthenticated",
"message": "Missing or invalid API key.",
"status": 401,
"requestId": "e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"
}
}
{
"error": {
"type": "authorization_error",
"code": "permission_denied",
"message": "This API key is missing the required scope.",
"status": 403,
"requestId": "e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"
}
}
{
"error": {
"type": "invalid_request_error",
"code": "conflict",
"message": "The request conflicts with an existing resource.",
"status": 409,
"requestId": "e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"
}
}
{
"error": {
"type": "invalid_request_error",
"code": "idempotency_key_reused",
"message": "The Idempotency-Key was already used with a different request body. Use a new key for a new operation.",
"status": 422,
"requestId": "e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"
}
}
{
"error": {
"type": "rate_limit_error",
"code": "rate_limited",
"message": "Too many requests. Retry after the interval in the Retry-After header.",
"status": 429,
"requestId": "e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f",
"retryAfter": 30
}
}
Optional. A unique key you generate (max 255 chars, such as a UUID) that makes this request safe to retry. Retrying with the same key replays the original response instead of repeating the operation. Reusing a key with a different body returns 422.
Trigger, start and sending settings. Each section you pass REPLACES that section as a whole (omitted sections keep their current value; on create, the defaults). Whether the subsequence is on is not a setting - use /enable and /pause. Every other setting (mailboxes, tracking, unsubscribe link, stop rules, verification skips) is inherited from the campaign and follows its changes.
When supplied, REPLACES all emails of the subsequence (same rules as a campaign's sequence). A running subsequence's emails cannot be replaced - pause it first (400, nothing is written).
Why it sends or not, in one word: draft - off; starts_with_campaign - on, starts when the draft campaign starts; active - on and sending; paused - paused by you; paused_with_campaign - on, but the campaign is paused; stopped_campaign_ended - the campaign completed, was stopped or deleted; paused_requires_plan - the plan does not include subsequences; cant_start - on, but it cannot start: it has no email, or an email is missing content; waiting_restart - on, waiting for the completed campaign to be restarted.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"MailBeast API","description":"Task-shaped REST API for cold email at scale - campaigns, leads, deliverability, verification and lead discovery.","colors":{"primary":"#2F62E8","light":"#5D8DF6","dark":"#1E46B0"},"logo":{"light":"https://mintcdn.com/mail-beast-ai/wTQEP6MPos1XZJQD/logo/light.svg?fit=max\u0026auto=format\u0026n=wTQEP6MPos1XZJQD\u0026q=85\u0026s=aeac906ba6340f321596e4d877c72bf1","dark":"https://mintcdn.com/mail-beast-ai/wTQEP6MPos1XZJQD/logo/dark.svg?fit=max\u0026auto=format\u0026n=wTQEP6MPos1XZJQD\u0026q=85\u0026s=d545596dc15a153ea80a91602ce3bf0c"},"favicon":"https://mintcdn.com/mail-beast-ai/wTQEP6MPos1XZJQD/favicon.png?fit=max\u0026auto=format\u0026n=wTQEP6MPos1XZJQD\u0026q=85\u0026s=375d802479a055444b3bbd6544d40be9","navbar":{"primary":{"type":"button","label":"Dashboard","href":"https://app.mailbeast.ai"}},"footer":{"socials":{"website":"https://mailbeast.ai"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"mail-beast-ai","hasAudioNarration":false,"actualSubdomain":"mail-beast-ai","customDomains":["developer.mailbeast.ai"],"gitSource":{"type":"github","owner":"mark-digital-llc","repo":"mailbeast-api-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"34e7e6f5-e541-42d2-b00f-861b90431fc7","liveDeploymentHistoryId":"6aeb94b3ddb30f355ee1d1ac","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeb94b3ddb30f355ee1d1ac"},"feedback":{"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aeb94b3ddb30f355ee1d1ac","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"API Reference","count":55},{"language":"default","tag":"Guides","count":13},{"language":"default","tag":"Email Accounts","count":11},{"language":"default","tag":"Campaigns","count":10},{"language":"default","tag":"Subsequences","count":9},{"language":"default","tag":"Resources","count":8},{"language":"default","tag":"Leads","count":7},{"language":"default","tag":"Emails","count":6},{"language":"default","tag":"Get started","count":5},{"language":"default","tag":"Workspace","count":4}],"searchSettings":{"showContentSnippets":false}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/subsequences/update-a-subsequence","slug":"/api-reference/subsequences/update-a-subsequence","pageMetadata":{"title":"Update a subsequence","description":"Partial update - only what you pass changes. Each `settings` section (`trigger`, `start`, `sending`) and `sequence` REPLACE the current one. The emails of a running subsequence cannot be replaced - pause it first. Needs a plan with subsequences (Pro+ and above) - otherwise `403` with code `subsequences_plan_required`. `409 campaign_busy` = the campaign is being changed right now; retry in a few seconds.\n\nRequires one of the following scopes: `campaigns:write`, `campaigns:all`, `all:all`.","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/subsequences/{id}","href":"/api-reference/subsequences/update-a-subsequence","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Partial update - only what you pass changes. Each \", _jsx(_components.code, {\n children: \"settings\"\n }), \" section (\", _jsx(_components.code, {\n children: \"trigger\"\n }), \", \", _jsx(_components.code, {\n children: \"start\"\n }), \", \", _jsx(_components.code, {\n children: \"sending\"\n }), \") and \", _jsx(_components.code, {\n children: \"sequence\"\n }), \" REPLACE the current one. The emails of a running subsequence cannot be replaced - pause it first. Needs a plan with subsequences (Pro+ and above) - otherwise \", _jsx(_components.code, {\n children: \"403\"\n }), \" with code \", _jsx(_components.code, {\n children: \"subsequences_plan_required\"\n }), \". \", _jsx(_components.code, {\n children: \"409 campaign_busy\"\n }), \" = the campaign is being changed right now; retry in a few seconds.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Requires one of the following scopes: \", _jsx(_components.code, {\n children: \"campaigns:write\"\n }), \", \", _jsx(_components.code, {\n children: \"campaigns:all\"\n }), \", \", _jsx(_components.code, {\n children: \"all:all\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Update a subsequence","description":"Partial update - only what you pass changes. Each `settings` section (`trigger`, `start`, `sending`) and `sequence` REPLACE the current one. The emails of a running subsequence cannot be replaced - pause it first. Needs a plan with subsequences (Pro+ and above) - otherwise `403` with code `subsequences_plan_required`. `409 campaign_busy` = the campaign is being changed right now; retry in a few seconds.\n\nRequires one of the following scopes: `campaigns:write`, `campaigns:all`, `all:all`.","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/subsequences/{id}","href":"/api-reference/subsequences/update-a-subsequence","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Partial update - only what you pass changes. Each `settings` section (`trigger`, `start`, `sending`) and `sequence` REPLACE the current one. The emails of a running subsequence cannot be replaced - pause it first. Needs a plan with subsequences (Pro+ and above) - otherwise `403` with code `subsequences_plan_required`. `409 campaign_busy` = the campaign is being changed right now; retry in a few seconds.\n\nRequires one of the following scopes: `campaigns:write`, `campaigns:all`, `all:all`.","operationId":"subsequences_update","parameters":["d5ec432b-ae18-4cfe-ac20-c618f1ca774a","3574aaad-5221-4b72-b282-ab9927de970b"],"requestBody":"2c14c3a0-28a1-4255-a86d-01d52c73b981","responses":{"200":"27e71d10-2c8a-413b-a57c-8505aaedc066","400":"18f0bec7-0ba0-4a36-948c-8d569d113474","401":"78ff3f76-2aad-45d8-91c8-87e39ecf533a","403":"5dab36d4-7d85-4941-8911-59e25746e51f","404":"0f6c47ba-c965-4e0c-b844-20e7ca610c2c","409":"11f08502-0ff7-4e21-8905-7abe8b9b3912","422":"d3de54a4-0b3d-4585-b0e6-a0265ae99bc6","429":"fae910fb-8104-4886-894f-c362c9bd0ec7"},"security":["efcdb82d-ea76-4a73-a8e7-e7fd6323c0c2"],"summary":"Update a subsequence","tags":["Subsequences"],"method":"patch","type":"path","servers":["e914a309-44fa-4a4c-b571-a32c0fb4ed0a"],"path":"/v1/subsequences/{id}","baseUrlOptions":["https://api.mailbeast.ai"],"title":"Update a subsequence","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"d5ec432b-ae18-4cfe-ac20-c618f1ca774a":{"name":"id","required":true,"in":"path","description":"Subsequence id.","schema":{"type":"string","format":"uuid","example":"5b2f3c4d-6e7f-4a81-9b0c-1d2e3f4a5b6c","isRequired":true,"description":"Subsequence id.","uniqueKey":"","typeLabel":"string\u003cuuid>"}},"3574aaad-5221-4b72-b282-ab9927de970b":{"name":"Idempotency-Key","in":"header","description":"Optional. A unique key you generate (max 255 chars, such as a UUID) that makes this request safe to retry. Retrying with the same key replays the original response instead of repeating the operation. Reusing a key with a different body returns `422`.","required":false,"schema":{"type":"string","maxLength":255,"example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","isRequired":false,"description":"Optional. A unique key you generate (max 255 chars, such as a UUID) that makes this request safe to retry. Retrying with the same key replays the original response instead of repeating the operation. Reusing a key with a different body returns `422`.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","example":"Interested - book a call (v2)","maxLength":255,"uniqueKey":"name","typeLabel":"string"},"settings":{"type":"object","description":"Trigger, start and sending settings. Each section you pass REPLACES that section as a whole (omitted sections keep their current value; on create, the defaults). Whether the subsequence is on is not a setting - use `/enable` and `/pause`. Every other setting (mailboxes, tracking, unsubscribe link, stop rules, verification skips) is inherited from the campaign and follows its changes.","properties":{"trigger":{"type":"object","description":"Who enters. Default: no rules (manual only), listening to `main`.","required":["any","sources","filters"],"properties":{"any":{"maxItems":5,"description":"0-5 rules; ANY of them makes a lead enter. `[]` = manual only: leads enter only through `POST /v1/subsequences/{id}/leads` (or the dashboard).","type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["lead_status","replied","reply_contains","opened","clicked","sequence_finished_no_reply"],"example":"lead_status","description":"What makes a lead enter. `lead_status` - its status became one of `statuses` (AI-classified reply or set by you); `replied` - any reply; `reply_contains` - a reply containing one of `phrases`; `opened` / `clicked` - an open / a click (needs tracking on the campaign), timed by `when`; `sequence_finished_no_reply` - the lead got every step of the main sequence and did not reply within `waitDays`. Each kind can be used once.","isRequired":true,"uniqueKey":"settings.trigger.any.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"statuses":{"type":"array","example":["lead_replied_interested","lead_replied_meeting_request"],"description":"`lead_status` only (required there): the statuses that make a lead enter.","items":{"type":"string","enum":["lead_replied_interested","lead_replied_meeting_request","lead_replied_out_of_office","lead_replied_wrong_person","lead_replied_not_interested","lead_replied_uncategorized","lead_converted","lead_lost"],"uniqueKey":"settings.trigger.any.items.[INDEX].statuses.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"settings.trigger.any.items.[INDEX].statuses","typeLabel":"enum\u003cstring>[]"},"phrases":{"maxItems":20,"example":["pricing","more info"],"description":"`reply_contains` only (required there): 1-20 phrases, 2-100 characters each, matched case-insensitively.","type":"array","items":{"type":"string","uniqueKey":"settings.trigger.any.items.[INDEX].phrases.items.[INDEX]","typeLabel":"string"},"uniqueKey":"settings.trigger.any.items.[INDEX].phrases","typeLabel":"string[]"},"when":{"type":"object","description":"`opened` and `clicked` only (required there): when the lead enters.","required":["mode"],"properties":{"mode":{"type":"string","enum":["after_main_sequence","right_away"],"example":"after_main_sequence","description":"`after_main_sequence` (recommended): the lead finishes the main sequence first; if it did not reply but opened / clicked, it enters `waitDays` later. `right_away`: it enters at the open / click, and the rest of its main sequence is canceled.","isRequired":true,"uniqueKey":"settings.trigger.any.items.[INDEX].when.mode","typeLabel":"enum\u003cstring>"},"waitDays":{"type":"integer","minimum":0,"maximum":60,"example":0,"description":"Only with `after_main_sequence` (required there): days to wait after the main sequence ends.","uniqueKey":"settings.trigger.any.items.[INDEX].when.waitDays","typeLabel":"integer"}},"uniqueKey":"settings.trigger.any.items.[INDEX].when","typeLabel":"object"},"urlContains":{"type":"string","example":"/pricing","maxLength":500,"description":"`clicked` only (optional): count only clicks on links whose URL contains this text.","uniqueKey":"settings.trigger.any.items.[INDEX].urlContains","typeLabel":"string"},"waitDays":{"type":"integer","minimum":0,"maximum":60,"example":3,"description":"`sequence_finished_no_reply` only (required there): days to wait for a reply after the last email of the main sequence.","uniqueKey":"settings.trigger.any.items.[INDEX].waitDays","typeLabel":"integer"}},"required":["kind"],"uniqueKey":"settings.trigger.any.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"settings.trigger.any","typeLabel":"object[]"},"sources":{"example":["main"],"description":"Where the rules listen: `main` (the main sequence of the campaign) and/or ids of OTHER subsequences of the same campaign (e.g. a lead that replies \"Interested\" inside a re-engagement subsequence moves on to a \"book a call\" one). Always required: `[]` when `any` is empty, at least one source otherwise.","type":"array","items":{"type":"string","uniqueKey":"settings.trigger.sources.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"settings.trigger.sources","typeLabel":"string[]"},"filters":{"maxItems":5,"description":"0-5 filters; a lead enters only if ALL of them match.","type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["tag","custom_field","email_provider","engagement","replied","reached_step"],"example":"tag","description":"An extra condition every entering lead must meet (all filters must match). `tag` - lead tags (`op`: `has_any` / `has_none`, `values`); `custom_field` - a custom field (`field`, `op`: `equals` / `contains` / `is_empty` / `is_not_empty`, `value`); `email_provider` - `values` of `google` / `microsoft` / `other`; `engagement` - `op`: `opened_at_least` (with `emails`) / `not_opened` / `clicked` / `not_clicked`; `replied` - `value` true / false; `reached_step` - got at least step `atLeast` of the main sequence.","isRequired":true,"uniqueKey":"settings.trigger.filters.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"op":{"type":"string","example":"has_any","description":"Operator, see `kind`.","uniqueKey":"settings.trigger.filters.items.[INDEX].op","typeLabel":"string"},"values":{"example":["vip"],"description":"`tag` (tag names) and `email_provider` (`google` / `microsoft` / `other`).","type":"array","items":{"type":"string","uniqueKey":"settings.trigger.filters.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"uniqueKey":"settings.trigger.filters.items.[INDEX].values","typeLabel":"string[]"},"field":{"type":"string","example":"industry","description":"`custom_field`: the custom field name.","uniqueKey":"settings.trigger.filters.items.[INDEX].field","typeLabel":"string"},"value":{"oneOf":[{"type":"string","description":"`custom_field` with `equals` / `contains`: the text to compare (required there). `replied`: true or false.","uniqueKey":"settings.trigger.filters.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"boolean","description":"`custom_field` with `equals` / `contains`: the text to compare (required there). `replied`: true or false.","uniqueKey":"settings.trigger.filters.items.[INDEX].value.oneOf.1","typeLabel":"boolean"}],"uniqueKey":"settings.trigger.filters.items.[INDEX].value","typeLabel":"string | boolean"},"emails":{"type":"integer","minimum":1,"maximum":100,"description":"`engagement` with `opened_at_least`: number of emails opened.","uniqueKey":"settings.trigger.filters.items.[INDEX].emails","typeLabel":"integer"},"atLeast":{"type":"integer","minimum":1,"maximum":50,"description":"`reached_step`: the step number.","uniqueKey":"settings.trigger.filters.items.[INDEX].atLeast","typeLabel":"integer"}},"required":["kind"],"uniqueKey":"settings.trigger.filters.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"settings.trigger.filters","typeLabel":"object[]"}},"uniqueKey":"settings.trigger","typeLabel":"object"},"start":{"type":"object","description":"When the first email goes out after a lead enters. Default: `immediately`.","required":["mode"],"properties":{"mode":{"type":"string","enum":["immediately","delay","ooo_return"],"example":"delay","description":"When the first email of the subsequence goes out after a lead enters: `immediately`, after a `delay` (`amount` + `unit`, up to 365 days), or `ooo_return` - after the return date found in an out-of-office reply (only with a single `lead_status` rule for `lead_replied_out_of_office`). The first step has no delay of its own - this is it. Emails still go out only inside the sending schedule.","isRequired":true,"uniqueKey":"settings.start.mode","typeLabel":"enum\u003cstring>"},"amount":{"type":"integer","minimum":1,"example":1,"description":"`delay` only (required there).","uniqueKey":"settings.start.amount","typeLabel":"integer"},"unit":{"type":"string","enum":["minutes","hours","days"],"example":"hours","description":"`delay` only (required there).","uniqueKey":"settings.start.unit","typeLabel":"enum\u003cstring>"},"offsetDays":{"type":"integer","minimum":0,"maximum":30,"example":1,"description":"`ooo_return` only (required there): days after the return date (0 = on that day).","uniqueKey":"settings.start.offsetDays","typeLabel":"integer"},"withoutDate":{"type":"object","description":"`ooo_return` only (required there).","required":["mode"],"properties":{"mode":{"type":"string","enum":["delay","skip"],"example":"delay","description":"The auto-reply has no return date: start `days` after the auto-reply (`delay`) or do not enroll (`skip`).","isRequired":true,"uniqueKey":"settings.start.withoutDate.mode","typeLabel":"enum\u003cstring>"},"days":{"type":"integer","minimum":1,"maximum":90,"example":7,"description":"`delay` only (required there).","uniqueKey":"settings.start.withoutDate.days","typeLabel":"integer"}},"uniqueKey":"settings.start.withoutDate","typeLabel":"object"},"maxDaysAhead":{"oneOf":[{"type":"integer","minimum":1,"maximum":730,"example":120,"description":"`ooo_return` only (required there): skip a lead that is away longer than this many days; `null` = no limit.","uniqueKey":"settings.start.maxDaysAhead.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"maximum":730,"example":120,"description":"`ooo_return` only (required there): skip a lead that is away longer than this many days; `null` = no limit.","uniqueKey":"settings.start.maxDaysAhead.oneOf.1","typeLabel":"null"}],"uniqueKey":"settings.start.maxDaysAhead","typeLabel":"integer | null"}},"uniqueKey":"settings.start","typeLabel":"object"},"sending":{"type":"object","description":"Schedule and daily limit. Default: inherited from the campaign.","required":["schedule","dailyLimit"],"properties":{"schedule":{"type":"string","enum":["inherit","custom"],"example":"inherit","description":"`inherit` - the campaign's sending schedule; `custom` - the subsequence keeps its own schedule (edited in the dashboard).","isRequired":true,"uniqueKey":"settings.sending.schedule","typeLabel":"enum\u003cstring>"},"dailyLimit":{"type":"object","properties":{"mode":{"type":"string","enum":["inherit","custom","unlimited"],"example":"inherit","description":"`inherit` - the subsequence's emails count toward the campaign's daily limit and go out first, the campaign's own emails use the rest; `custom` - its own daily limit `value` on top of the campaign's; `unlimited` - only the mailboxes' own daily limits apply.","isRequired":true,"uniqueKey":"settings.sending.dailyLimit.mode","typeLabel":"enum\u003cstring>"},"value":{"type":"integer","minimum":1,"maximum":100000,"example":30,"description":"`custom` only (required there).","uniqueKey":"settings.sending.dailyLimit.value","typeLabel":"integer"}},"required":["mode"],"isRequired":true,"uniqueKey":"settings.sending.dailyLimit","typeLabel":"object"}},"uniqueKey":"settings.sending","typeLabel":"object"}},"uniqueKey":"settings","typeLabel":"object"},"sequence":{"minItems":1,"maxItems":20,"description":"When supplied, REPLACES all emails of the subsequence (same rules as a campaign's `sequence`). A running subsequence's emails cannot be replaced - pause it first (400, nothing is written).","type":"array","items":{"type":"object","properties":{"subject":{"type":"string","example":"","maxLength":500,"description":"Subject. Leave it EMPTY (\"\") to reply in the same thread as the conversation with the lead (recommended for the first step); a subject of its own starts a new thread. Merge tags as in campaigns (snake_case, e.g. {{first_name}}). Required unless you pass `variants`.","uniqueKey":"sequence.items.[INDEX].subject","typeLabel":"string"},"body":{"type":"string","example":"\u003cp>Hi {{first_name}}, here is my calendar: …\u003c/p>","description":"HTML body. Required unless you pass `variants`.","uniqueKey":"sequence.items.[INDEX].body","typeLabel":"string"},"variants":{"minItems":1,"maxItems":5,"description":"A/B variants of this step, instead of `subject` + `body` - the same rules as campaign steps (up to 5, lettered A, B, C… in order, leads split evenly between the active ones).","type":"array","items":{"type":"object","properties":{"subject":{"type":"string","example":"","maxLength":500,"description":"Subject. Leave it EMPTY (\"\") to reply in the same thread as the conversation with the lead (recommended for the first step); a subject of its own starts a new thread. Merge tags as in campaigns (snake_case, e.g. {{first_name}}).","isRequired":true,"uniqueKey":"sequence.items.[INDEX].variants.items.[INDEX].subject","typeLabel":"string"},"body":{"type":"string","example":"\u003cp>Hi {{first_name}}, here is my calendar: …\u003c/p>","description":"HTML body.","isRequired":true,"uniqueKey":"sequence.items.[INDEX].variants.items.[INDEX].body","typeLabel":"string"},"isActive":{"type":"boolean","example":true,"default":true,"description":"A switched-off variant is kept but not sent. At least one variant of each step must stay on.","uniqueKey":"sequence.items.[INDEX].variants.items.[INDEX].isActive","typeLabel":"boolean"}},"required":["subject","body"],"uniqueKey":"sequence.items.[INDEX].variants.items.[INDEX]","typeLabel":"object"},"uniqueKey":"sequence.items.[INDEX].variants","typeLabel":"object[]"},"delayDays":{"type":"integer","example":2,"minimum":0,"maximum":365,"description":"Days to wait after the previous step. Must be 0 (or omitted) on the first step: when the first email goes out is set by `settings.start`. From step 2 on, `delayDays` + `delayHours` must add up to at least 1 hour.","uniqueKey":"sequence.items.[INDEX].delayDays","typeLabel":"integer"},"delayHours":{"type":"integer","example":0,"minimum":0,"maximum":23,"description":"Additional hours to wait after the previous step. Must be 0 (or omitted) on the first step.","uniqueKey":"sequence.items.[INDEX].delayHours","typeLabel":"integer"}},"uniqueKey":"sequence.items.[INDEX]","typeLabel":"object"},"uniqueKey":"sequence","typeLabel":"object[]"},"position":{"type":"integer","minimum":1,"maximum":10000,"example":1,"description":"Position among the subsequences of the campaign (1 = first). When one event matches several subsequences, the lead enters the first one.","uniqueKey":"position","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"Interested - book a call (v2)","settings":{},"sequence":[{"subject":"","body":"\u003cp>Hi {{first_name}}, here is my calendar: …\u003c/p>","variants":[{"subject":"","body":"\u003cp>Hi {{first_name}}, here is my calendar: …\u003c/p>","isActive":true}],"delayDays":2,"delayHours":0}],"position":1}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"27e71d10-2c8a-413b-a57c-8505aaedc066":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"5b2f3c4d-6e7f-4a81-9b0c-1d2e3f4a5b6c","isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid>"},"campaignId":{"type":"string","format":"uuid","example":"a7d4e2f1-08b3-4c65-9e7a-1b2c3d4e5f60","description":"The campaign this subsequence belongs to.","isRequired":true,"uniqueKey":"campaignId","typeLabel":"string\u003cuuid>"},"name":{"type":"string","example":"Interested - book a call","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"position":{"type":"integer","example":1,"description":"Order among the campaign's subsequences (1 = first): when one event matches several, the lead enters the first.","isRequired":true,"uniqueKey":"position","typeLabel":"integer"},"status":{"type":"string","enum":["draft","scheduled","active","paused","stopped","completed","failed"],"example":"active","description":"Lifecycle status, same vocabulary as campaigns: `draft` / `paused` = off, `active` = on.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"enabled":{"type":"boolean","example":true,"description":"Whether it is turned on (`/enable` / `/pause`). A subsequence of a draft campaign stays `draft` while on - it starts with the campaign.","isRequired":true,"uniqueKey":"enabled","typeLabel":"boolean"},"state":{"type":"string","enum":["draft","starts_with_campaign","active","paused","paused_with_campaign","stopped_campaign_ended","paused_requires_plan","cant_start","waiting_restart"],"example":"active","description":"Why it sends or not, in one word: `draft` - off; `starts_with_campaign` - on, starts when the draft campaign starts; `active` - on and sending; `paused` - paused by you; `paused_with_campaign` - on, but the campaign is paused; `stopped_campaign_ended` - the campaign completed, was stopped or deleted; `paused_requires_plan` - the plan does not include subsequences; `cant_start` - on, but it cannot start: it has no email, or an email is missing content; `waiting_restart` - on, waiting for the completed campaign to be restarted.","isRequired":true,"uniqueKey":"state","typeLabel":"enum\u003cstring>"},"settings":{"type":"object","properties":{"trigger":{"type":"object","properties":{"any":{"maxItems":5,"description":"0-5 rules; ANY of them makes a lead enter. `[]` = manual only: leads enter only through `POST /v1/subsequences/{id}/leads` (or the dashboard).","type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["lead_status","replied","reply_contains","opened","clicked","sequence_finished_no_reply"],"example":"lead_status","description":"What makes a lead enter. `lead_status` - its status became one of `statuses` (AI-classified reply or set by you); `replied` - any reply; `reply_contains` - a reply containing one of `phrases`; `opened` / `clicked` - an open / a click (needs tracking on the campaign), timed by `when`; `sequence_finished_no_reply` - the lead got every step of the main sequence and did not reply within `waitDays`. Each kind can be used once.","isRequired":true,"uniqueKey":"settings.trigger.any.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"statuses":{"type":"array","example":["lead_replied_interested","lead_replied_meeting_request"],"description":"`lead_status` only (required there): the statuses that make a lead enter.","items":{"type":"string","enum":["lead_replied_interested","lead_replied_meeting_request","lead_replied_out_of_office","lead_replied_wrong_person","lead_replied_not_interested","lead_replied_uncategorized","lead_converted","lead_lost"],"uniqueKey":"settings.trigger.any.items.[INDEX].statuses.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"settings.trigger.any.items.[INDEX].statuses","typeLabel":"enum\u003cstring>[]"},"phrases":{"maxItems":20,"example":["pricing","more info"],"description":"`reply_contains` only (required there): 1-20 phrases, 2-100 characters each, matched case-insensitively.","type":"array","items":{"type":"string","uniqueKey":"settings.trigger.any.items.[INDEX].phrases.items.[INDEX]","typeLabel":"string"},"uniqueKey":"settings.trigger.any.items.[INDEX].phrases","typeLabel":"string[]"},"when":{"type":"object","description":"`opened` and `clicked` only (required there): when the lead enters.","required":["mode"],"properties":{"mode":{"type":"string","enum":["after_main_sequence","right_away"],"example":"after_main_sequence","description":"`after_main_sequence` (recommended): the lead finishes the main sequence first; if it did not reply but opened / clicked, it enters `waitDays` later. `right_away`: it enters at the open / click, and the rest of its main sequence is canceled.","isRequired":true,"uniqueKey":"settings.trigger.any.items.[INDEX].when.mode","typeLabel":"enum\u003cstring>"},"waitDays":{"type":"integer","minimum":0,"maximum":60,"example":0,"description":"Only with `after_main_sequence` (required there): days to wait after the main sequence ends.","uniqueKey":"settings.trigger.any.items.[INDEX].when.waitDays","typeLabel":"integer"}},"uniqueKey":"settings.trigger.any.items.[INDEX].when","typeLabel":"object"},"urlContains":{"type":"string","example":"/pricing","maxLength":500,"description":"`clicked` only (optional): count only clicks on links whose URL contains this text.","uniqueKey":"settings.trigger.any.items.[INDEX].urlContains","typeLabel":"string"},"waitDays":{"type":"integer","minimum":0,"maximum":60,"example":3,"description":"`sequence_finished_no_reply` only (required there): days to wait for a reply after the last email of the main sequence.","uniqueKey":"settings.trigger.any.items.[INDEX].waitDays","typeLabel":"integer"}},"required":["kind"],"uniqueKey":"settings.trigger.any.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"settings.trigger.any","typeLabel":"object[]"},"sources":{"example":["main"],"description":"Where the rules listen: `main` (the main sequence of the campaign) and/or ids of OTHER subsequences of the same campaign (e.g. a lead that replies \"Interested\" inside a re-engagement subsequence moves on to a \"book a call\" one). Always required: `[]` when `any` is empty, at least one source otherwise.","type":"array","items":{"type":"string","uniqueKey":"settings.trigger.sources.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"settings.trigger.sources","typeLabel":"string[]"},"filters":{"maxItems":5,"description":"0-5 filters; a lead enters only if ALL of them match.","type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["tag","custom_field","email_provider","engagement","replied","reached_step"],"example":"tag","description":"An extra condition every entering lead must meet (all filters must match). `tag` - lead tags (`op`: `has_any` / `has_none`, `values`); `custom_field` - a custom field (`field`, `op`: `equals` / `contains` / `is_empty` / `is_not_empty`, `value`); `email_provider` - `values` of `google` / `microsoft` / `other`; `engagement` - `op`: `opened_at_least` (with `emails`) / `not_opened` / `clicked` / `not_clicked`; `replied` - `value` true / false; `reached_step` - got at least step `atLeast` of the main sequence.","isRequired":true,"uniqueKey":"settings.trigger.filters.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"op":{"type":"string","example":"has_any","description":"Operator, see `kind`.","uniqueKey":"settings.trigger.filters.items.[INDEX].op","typeLabel":"string"},"values":{"example":["vip"],"description":"`tag` (tag names) and `email_provider` (`google` / `microsoft` / `other`).","type":"array","items":{"type":"string","uniqueKey":"settings.trigger.filters.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"uniqueKey":"settings.trigger.filters.items.[INDEX].values","typeLabel":"string[]"},"field":{"type":"string","example":"industry","description":"`custom_field`: the custom field name.","uniqueKey":"settings.trigger.filters.items.[INDEX].field","typeLabel":"string"},"value":{"oneOf":[{"type":"string","description":"`custom_field` with `equals` / `contains`: the text to compare (required there). `replied`: true or false.","uniqueKey":"settings.trigger.filters.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"boolean","description":"`custom_field` with `equals` / `contains`: the text to compare (required there). `replied`: true or false.","uniqueKey":"settings.trigger.filters.items.[INDEX].value.oneOf.1","typeLabel":"boolean"}],"uniqueKey":"settings.trigger.filters.items.[INDEX].value","typeLabel":"string | boolean"},"emails":{"type":"integer","minimum":1,"maximum":100,"description":"`engagement` with `opened_at_least`: number of emails opened.","uniqueKey":"settings.trigger.filters.items.[INDEX].emails","typeLabel":"integer"},"atLeast":{"type":"integer","minimum":1,"maximum":50,"description":"`reached_step`: the step number.","uniqueKey":"settings.trigger.filters.items.[INDEX].atLeast","typeLabel":"integer"}},"required":["kind"],"uniqueKey":"settings.trigger.filters.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"settings.trigger.filters","typeLabel":"object[]"}},"required":["any","sources","filters"],"isRequired":true,"uniqueKey":"settings.trigger","typeLabel":"object"},"start":{"type":"object","properties":{"mode":{"type":"string","enum":["immediately","delay","ooo_return"],"example":"delay","description":"When the first email of the subsequence goes out after a lead enters: `immediately`, after a `delay` (`amount` + `unit`, up to 365 days), or `ooo_return` - after the return date found in an out-of-office reply (only with a single `lead_status` rule for `lead_replied_out_of_office`). The first step has no delay of its own - this is it. Emails still go out only inside the sending schedule.","isRequired":true,"uniqueKey":"settings.start.mode","typeLabel":"enum\u003cstring>"},"amount":{"type":"integer","minimum":1,"example":1,"description":"`delay` only (required there).","uniqueKey":"settings.start.amount","typeLabel":"integer"},"unit":{"type":"string","enum":["minutes","hours","days"],"example":"hours","description":"`delay` only (required there).","uniqueKey":"settings.start.unit","typeLabel":"enum\u003cstring>"},"offsetDays":{"type":"integer","minimum":0,"maximum":30,"example":1,"description":"`ooo_return` only (required there): days after the return date (0 = on that day).","uniqueKey":"settings.start.offsetDays","typeLabel":"integer"},"withoutDate":{"type":"object","description":"`ooo_return` only (required there).","required":["mode"],"properties":{"mode":{"type":"string","enum":["delay","skip"],"example":"delay","description":"The auto-reply has no return date: start `days` after the auto-reply (`delay`) or do not enroll (`skip`).","isRequired":true,"uniqueKey":"settings.start.withoutDate.mode","typeLabel":"enum\u003cstring>"},"days":{"type":"integer","minimum":1,"maximum":90,"example":7,"description":"`delay` only (required there).","uniqueKey":"settings.start.withoutDate.days","typeLabel":"integer"}},"uniqueKey":"settings.start.withoutDate","typeLabel":"object"},"maxDaysAhead":{"oneOf":[{"type":"integer","minimum":1,"maximum":730,"example":120,"description":"`ooo_return` only (required there): skip a lead that is away longer than this many days; `null` = no limit.","uniqueKey":"settings.start.maxDaysAhead.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"maximum":730,"example":120,"description":"`ooo_return` only (required there): skip a lead that is away longer than this many days; `null` = no limit.","uniqueKey":"settings.start.maxDaysAhead.oneOf.1","typeLabel":"null"}],"uniqueKey":"settings.start.maxDaysAhead","typeLabel":"integer | null"}},"required":["mode"],"isRequired":true,"uniqueKey":"settings.start","typeLabel":"object"},"sending":{"type":"object","properties":{"schedule":{"type":"string","enum":["inherit","custom"],"example":"inherit","description":"`inherit` - the campaign's sending schedule; `custom` - the subsequence keeps its own schedule (edited in the dashboard).","isRequired":true,"uniqueKey":"settings.sending.schedule","typeLabel":"enum\u003cstring>"},"dailyLimit":{"type":"object","properties":{"mode":{"type":"string","enum":["inherit","custom","unlimited"],"example":"inherit","description":"`inherit` - the subsequence's emails count toward the campaign's daily limit and go out first, the campaign's own emails use the rest; `custom` - its own daily limit `value` on top of the campaign's; `unlimited` - only the mailboxes' own daily limits apply.","isRequired":true,"uniqueKey":"settings.sending.dailyLimit.mode","typeLabel":"enum\u003cstring>"},"value":{"type":"integer","minimum":1,"maximum":100000,"example":30,"description":"`custom` only (required there).","uniqueKey":"settings.sending.dailyLimit.value","typeLabel":"integer"}},"required":["mode"],"isRequired":true,"uniqueKey":"settings.sending.dailyLimit","typeLabel":"object"}},"required":["schedule","dailyLimit"],"isRequired":true,"uniqueKey":"settings.sending","typeLabel":"object"}},"required":["trigger","start","sending"],"isRequired":true,"uniqueKey":"settings","typeLabel":"object"},"sequence":{"description":"The emails of the subsequence - the same shape as a campaign's `sequence`. A step with an empty `subject` replies in the same thread.","type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","isRequired":true,"uniqueKey":"sequence.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"subject":{"type":"string","example":"Quick question about {{company_name}}","description":"Subject of the first variant (a copy of `variants[0].subject`). Leave it out when you send the step back with `variants`.","isRequired":true,"uniqueKey":"sequence.items.[INDEX].subject","typeLabel":"string"},"body":{"type":"string","example":"\u003cp>Hi {{first_name}}, …\u003c/p>","description":"Body of the first variant (a copy of `variants[0].body`). Leave it out when you send the step back with `variants`.","isRequired":true,"uniqueKey":"sequence.items.[INDEX].body","typeLabel":"string"},"delayDays":{"type":"number","example":0,"isRequired":true,"uniqueKey":"sequence.items.[INDEX].delayDays","typeLabel":"number"},"delayHours":{"type":"number","example":0,"isRequired":true,"uniqueKey":"sequence.items.[INDEX].delayHours","typeLabel":"number"},"variants":{"description":"A/B variants of this step, by letter (A, B, C…). A step written with `subject` + `body` has a single variant `A`.","type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"b3f1a2c4-5d6e-4f70-8a9b-0c1d2e3f4a5b","description":"Variant id. Pass it as `variantId` to POST /v1/campaigns/{id}/test-email.","isRequired":true,"uniqueKey":"sequence.items.[INDEX].variants.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"label":{"type":"string","example":"A","description":"A/B variant letter.","isRequired":true,"uniqueKey":"sequence.items.[INDEX].variants.items.[INDEX].label","typeLabel":"string"},"subject":{"type":"string","example":"Quick question about {{company_name}}","isRequired":true,"uniqueKey":"sequence.items.[INDEX].variants.items.[INDEX].subject","typeLabel":"string"},"body":{"type":"string","example":"\u003cp>Hi {{first_name}}, …\u003c/p>","isRequired":true,"uniqueKey":"sequence.items.[INDEX].variants.items.[INDEX].body","typeLabel":"string"},"isActive":{"type":"boolean","example":true,"description":"Whether this variant is enabled. It is sent only while its step and the campaign are active too. Leads are split evenly between the enabled variants of a step; A/B auto-optimization switches the losing ones off.","isRequired":true,"uniqueKey":"sequence.items.[INDEX].variants.items.[INDEX].isActive","typeLabel":"boolean"}},"required":["id","label","subject","body","isActive"],"uniqueKey":"sequence.items.[INDEX].variants.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"sequence.items.[INDEX].variants","typeLabel":"object[]"}},"required":["id","subject","body","delayDays","delayHours","variants"],"uniqueKey":"sequence.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"sequence","typeLabel":"object[]"},"counters":{"type":"object","description":"All-time counters (not limited to a period).","required":["entered","waiting","inProgress","replied","positive","ended"],"properties":{"entered":{"type":"number","example":42,"description":"Leads that ever entered.","isRequired":true,"uniqueKey":"counters.entered","typeLabel":"number"},"waiting":{"type":"number","example":3,"description":"Entered, first email scheduled for later (e.g. after an out-of-office return date).","isRequired":true,"uniqueKey":"counters.waiting","typeLabel":"number"},"inProgress":{"type":"number","example":12,"description":"Currently in the subsequence (entered and not ended).","isRequired":true,"uniqueKey":"counters.inProgress","typeLabel":"number"},"replied":{"type":"number","example":9,"description":"Leads that replied to an email of the subsequence.","isRequired":true,"uniqueKey":"counters.replied","typeLabel":"number"},"positive":{"type":"number","example":5,"description":"Leads that replied and whose status in the subsequence is positive now (interested, meeting request, converted) — a subset of replied.","isRequired":true,"uniqueKey":"counters.positive","typeLabel":"number"},"ended":{"type":"number","example":30,"description":"Entries no longer in progress (all emails sent, replied, status changed, removed, moved to another subsequence…): entered = inProgress + ended.","isRequired":true,"uniqueKey":"counters.ended","typeLabel":"number"}},"isRequired":true,"uniqueKey":"counters","typeLabel":"object"},"nextStartAt":{"oneOf":[{"type":"string","format":"date-time","description":"When the next waiting lead gets its first email; null when nobody is waiting.","isRequired":true,"uniqueKey":"nextStartAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When the next waiting lead gets its first email; null when nobody is waiting.","isRequired":true,"uniqueKey":"nextStartAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"nextStartAt","typeLabel":"string\u003cdate-time> | null"},"createdAt":{"type":"string","format":"date-time","example":"2026-10-28T08:00:00.000Z","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string\u003cdate-time>"}},"required":["id","campaignId","name","position","status","enabled","state","settings","sequence","counters","nextStartAt","createdAt"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"5b2f3c4d-6e7f-4a81-9b0c-1d2e3f4a5b6c","campaignId":"a7d4e2f1-08b3-4c65-9e7a-1b2c3d4e5f60","name":"Interested - book a call","position":1,"status":"active","enabled":true,"state":"active","settings":{"trigger":{"any":[{"kind":"lead_status","statuses":["lead_replied_interested","lead_replied_meeting_request"],"phrases":["pricing","more info"],"when":{"mode":"after_main_sequence","waitDays":0},"urlContains":"/pricing","waitDays":3}],"sources":["main"],"filters":[{"kind":"tag","op":"has_any","values":["vip"],"field":"industry","value":"\u003cstring>","emails":50,"atLeast":25}]},"start":{"mode":"delay","amount":1,"unit":"hours","offsetDays":1,"withoutDate":{"mode":"delay","days":7},"maxDaysAhead":120},"sending":{"schedule":"inherit","dailyLimit":{"mode":"inherit","value":30}}},"sequence":[{"id":"9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","subject":"Quick question about {{company_name}}","body":"\u003cp>Hi {{first_name}}, …\u003c/p>","delayDays":0,"delayHours":0,"variants":[{"id":"b3f1a2c4-5d6e-4f70-8a9b-0c1d2e3f4a5b","label":"A","subject":"Quick question about {{company_name}}","body":"\u003cp>Hi {{first_name}}, …\u003c/p>","isActive":true}]}],"counters":{"entered":42,"waiting":3,"inProgress":12,"replied":9,"positive":5,"ended":30},"nextStartAt":"2023-11-07T05:31:56Z","createdAt":"2026-10-28T08:00:00.000Z"}}},"exampleType":"generated"}},"exampleType":"generated"},"18f0bec7-0ba0-4a36-948c-8d569d113474":{"description":"The request body or parameters failed validation.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","example":"authorization_error","description":"Broad error class.","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","example":"permission_denied","description":"Stable machine-readable code to switch on.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"This API key is missing the required scope.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"status":{"type":"number","example":403,"isRequired":true,"uniqueKey":"error.status","typeLabel":"number"},"requestId":{"type":"string","example":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f","description":"Correlation id - quote it in support requests.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"details":{"description":"Field-level validation messages (present on validation errors).","example":["name should not be empty"],"type":"array","items":{"type":"string","uniqueKey":"error.details.items.[INDEX]","typeLabel":"string"},"uniqueKey":"error.details","typeLabel":"string[]"},"retryAfter":{"type":"number","description":"Seconds to wait before retrying (present on 429 responses).","example":30,"uniqueKey":"error.retryAfter","typeLabel":"number"}},"required":["type","code","message","status","requestId"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"type":"invalid_request_error","code":"validation_failed","message":"One or more fields are invalid.","status":400,"requestId":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f","details":["name should not be empty"]}},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request_error","code":"validation_failed","message":"One or more fields are invalid.","status":400,"requestId":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f","details":["name should not be empty"]}}}},"exampleType":"examples"}},"exampleType":"examples"},"78ff3f76-2aad-45d8-91c8-87e39ecf533a":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","example":"authorization_error","description":"Broad error class.","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","example":"permission_denied","description":"Stable machine-readable code to switch on.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"This API key is missing the required scope.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"status":{"type":"number","example":403,"isRequired":true,"uniqueKey":"error.status","typeLabel":"number"},"requestId":{"type":"string","example":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f","description":"Correlation id - quote it in support requests.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"details":{"description":"Field-level validation messages (present on validation errors).","example":["name should not be empty"],"type":"array","items":{"type":"string","uniqueKey":"error.details.items.[INDEX]","typeLabel":"string"},"uniqueKey":"error.details","typeLabel":"string[]"},"retryAfter":{"type":"number","description":"Seconds to wait before retrying (present on 429 responses).","example":30,"uniqueKey":"error.retryAfter","typeLabel":"number"}},"required":["type","code","message","status","requestId"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"type":"authentication_error","code":"unauthenticated","message":"Missing or invalid API key.","status":401,"requestId":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"}},"examples":{"Example":{"title":"Example","value":{"error":{"type":"authentication_error","code":"unauthenticated","message":"Missing or invalid API key.","status":401,"requestId":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"}}}},"exampleType":"examples"}},"exampleType":"examples"},"5dab36d4-7d85-4941-8911-59e25746e51f":{"description":"The key lacks a required scope, or the plan does not include API access.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","example":"authorization_error","description":"Broad error class.","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","example":"permission_denied","description":"Stable machine-readable code to switch on.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"This API key is missing the required scope.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"status":{"type":"number","example":403,"isRequired":true,"uniqueKey":"error.status","typeLabel":"number"},"requestId":{"type":"string","example":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f","description":"Correlation id - quote it in support requests.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"details":{"description":"Field-level validation messages (present on validation errors).","example":["name should not be empty"],"type":"array","items":{"type":"string","uniqueKey":"error.details.items.[INDEX]","typeLabel":"string"},"uniqueKey":"error.details","typeLabel":"string[]"},"retryAfter":{"type":"number","description":"Seconds to wait before retrying (present on 429 responses).","example":30,"uniqueKey":"error.retryAfter","typeLabel":"number"}},"required":["type","code","message","status","requestId"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"type":"authorization_error","code":"permission_denied","message":"This API key is missing the required scope.","status":403,"requestId":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"}},"examples":{"Example":{"title":"Example","value":{"error":{"type":"authorization_error","code":"permission_denied","message":"This API key is missing the required scope.","status":403,"requestId":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"}}}},"exampleType":"examples"}},"exampleType":"examples"},"0f6c47ba-c965-4e0c-b844-20e7ca610c2c":{"description":"The resource does not exist in your workspace.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","example":"authorization_error","description":"Broad error class.","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","example":"permission_denied","description":"Stable machine-readable code to switch on.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"This API key is missing the required scope.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"status":{"type":"number","example":403,"isRequired":true,"uniqueKey":"error.status","typeLabel":"number"},"requestId":{"type":"string","example":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f","description":"Correlation id - quote it in support requests.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"details":{"description":"Field-level validation messages (present on validation errors).","example":["name should not be empty"],"type":"array","items":{"type":"string","uniqueKey":"error.details.items.[INDEX]","typeLabel":"string"},"uniqueKey":"error.details","typeLabel":"string[]"},"retryAfter":{"type":"number","description":"Seconds to wait before retrying (present on 429 responses).","example":30,"uniqueKey":"error.retryAfter","typeLabel":"number"}},"required":["type","code","message","status","requestId"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"type":"invalid_request_error","code":"not_found","message":"Resource not found.","status":404,"requestId":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"}},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request_error","code":"not_found","message":"Resource not found.","status":404,"requestId":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"}}}},"exampleType":"examples"}},"exampleType":"examples"},"11f08502-0ff7-4e21-8905-7abe8b9b3912":{"description":"The request conflicts with current state - e.g. a request with the same Idempotency-Key is still being processed, or the operation partially applied.\n\nThe request conflicts with current state - e.g. a request with the same Idempotency-Key is still being processed, or the operation partially applied.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","example":"authorization_error","description":"Broad error class.","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","example":"permission_denied","description":"Stable machine-readable code to switch on.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"This API key is missing the required scope.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"status":{"type":"number","example":403,"isRequired":true,"uniqueKey":"error.status","typeLabel":"number"},"requestId":{"type":"string","example":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f","description":"Correlation id - quote it in support requests.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"details":{"description":"Field-level validation messages (present on validation errors).","example":["name should not be empty"],"type":"array","items":{"type":"string","uniqueKey":"error.details.items.[INDEX]","typeLabel":"string"},"uniqueKey":"error.details","typeLabel":"string[]"},"retryAfter":{"type":"number","description":"Seconds to wait before retrying (present on 429 responses).","example":30,"uniqueKey":"error.retryAfter","typeLabel":"number"}},"required":["type","code","message","status","requestId"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"type":"invalid_request_error","code":"conflict","message":"The request conflicts with an existing resource.","status":409,"requestId":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"}},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request_error","code":"conflict","message":"The request conflicts with an existing resource.","status":409,"requestId":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"}}}},"exampleType":"examples"}},"exampleType":"examples"},"d3de54a4-0b3d-4585-b0e6-a0265ae99bc6":{"description":"The Idempotency-Key was already used with a different request body. Use a new key for a new operation.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","example":"authorization_error","description":"Broad error class.","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","example":"permission_denied","description":"Stable machine-readable code to switch on.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"This API key is missing the required scope.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"status":{"type":"number","example":403,"isRequired":true,"uniqueKey":"error.status","typeLabel":"number"},"requestId":{"type":"string","example":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f","description":"Correlation id - quote it in support requests.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"details":{"description":"Field-level validation messages (present on validation errors).","example":["name should not be empty"],"type":"array","items":{"type":"string","uniqueKey":"error.details.items.[INDEX]","typeLabel":"string"},"uniqueKey":"error.details","typeLabel":"string[]"},"retryAfter":{"type":"number","description":"Seconds to wait before retrying (present on 429 responses).","example":30,"uniqueKey":"error.retryAfter","typeLabel":"number"}},"required":["type","code","message","status","requestId"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"type":"invalid_request_error","code":"idempotency_key_reused","message":"The Idempotency-Key was already used with a different request body. Use a new key for a new operation.","status":422,"requestId":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"}},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request_error","code":"idempotency_key_reused","message":"The Idempotency-Key was already used with a different request body. Use a new key for a new operation.","status":422,"requestId":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f"}}}},"exampleType":"examples"}},"exampleType":"examples"},"fae910fb-8104-4886-894f-c362c9bd0ec7":{"description":"Rate limit exceeded - retry after the interval in the Retry-After header.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","example":"authorization_error","description":"Broad error class.","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","example":"permission_denied","description":"Stable machine-readable code to switch on.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"This API key is missing the required scope.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"status":{"type":"number","example":403,"isRequired":true,"uniqueKey":"error.status","typeLabel":"number"},"requestId":{"type":"string","example":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f","description":"Correlation id - quote it in support requests.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"},"details":{"description":"Field-level validation messages (present on validation errors).","example":["name should not be empty"],"type":"array","items":{"type":"string","uniqueKey":"error.details.items.[INDEX]","typeLabel":"string"},"uniqueKey":"error.details","typeLabel":"string[]"},"retryAfter":{"type":"number","description":"Seconds to wait before retrying (present on 429 responses).","example":30,"uniqueKey":"error.retryAfter","typeLabel":"number"}},"required":["type","code","message","status","requestId"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"type":"rate_limit_error","code":"rate_limited","message":"Too many requests. Retry after the interval in the Retry-After header.","status":429,"requestId":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f","retryAfter":30}},"examples":{"Example":{"title":"Example","value":{"error":{"type":"rate_limit_error","code":"rate_limited","message":"Too many requests. Retry after the interval in the Retry-After header.","status":429,"requestId":"e4f1c0b2-6a3d-4b8e-9f21-0a1b2c3d4e5f","retryAfter":30}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"efcdb82d-ea76-4a73-a8e7-e7fd6323c0c2":{"ApiKey":{"scheme":"bearer","bearerFormat":"mb_live_…","type":"http","scopes":[],"schemeName":"ApiKey"}}},"servers":{"e914a309-44fa-4a4c-b571-a32c0fb4ed0a":{"url":"https://api.mailbeast.ai"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"scheme":"bearer","bearerFormat":"mb_live_…","type":"http","scopes":[],"schemeName":"ApiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"ApiKey","name":"Authorization"}],"title":"ApiKey"}]},"originalFileLocation":"openapi.json"},"subdomain":"mail-beast-ai","siteName":"MailBeast API","title":"Update a subsequence - MailBeast API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T20:25:28.831Z","originalFileLocation":"api-reference/subsequences/update-a-subsequence.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Partial update - only what you pass changes. Each settings section (trigger, start, sending) and sequence REPLACE the current one. The emails of a running subsequence cannot be replaced - pause it first. Needs a plan with subsequences (Pro+ and above) - otherwise 403 with code subsequences_plan_required. 409 campaign_busy = the campaign is being changed right now; retry in a few seconds. Requires one of the following scopes: campaigns:write, campaigns:all, all:all.\">\u003cmeta data-mint-head name=\"application-name\" content=\"MailBeast API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mail-beast-ai/WJNHEBup3U7XmwP7/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/mail-beast-ai/WJNHEBup3U7XmwP7/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mail-beast-ai/WJNHEBup3U7XmwP7/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/mail-beast-ai/WJNHEBup3U7XmwP7/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/mail-beast-ai/WJNHEBup3U7XmwP7/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mail-beast-ai/WJNHEBup3U7XmwP7/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mail-beast-ai/WJNHEBup3U7XmwP7/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/mail-beast-ai/WJNHEBup3U7XmwP7/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/mail-beast-ai/WJNHEBup3U7XmwP7/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update a subsequence - MailBeast API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Partial update - only what you pass changes. Each settings section (trigger, start, sending) and sequence REPLACE the current one. The emails of a running subsequence cannot be replaced - pause it first. Needs a plan with subsequences (Pro+ and above) - otherwise 403 with code subsequences_plan_required. 409 campaign_busy = the campaign is being changed right now; retry in a few seconds. Requires one of the following scopes: campaigns:write, campaigns:all, all:all.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"MailBeast API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.mailbeast.ai/api-reference/subsequences/update-a-subsequence\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://mail-beast-ai.mintlify.app/_mintlify/api/og/v2?division=Subsequences\u0026amp;title=Update+a+subsequence\u0026amp;description=Partial+update+-+only+what+you+pass+changes.+Each+%60settings%60+section+%28%60trigger%60%2C+%60start%60%2C+%60sending%60%29+and+%60sequence%60+REPLACE+the+current+one.+The+emails+of+a+run\u0026amp;theme=deee3b5723542dabe22142b2\u0026amp;signature=1fa5f5802142b17ebb185d5b9ce565ed023ebda50a7cb8f0a5b04edd6a44dedd\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Update a subsequence - MailBeast API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Partial update - only what you pass changes. Each settings section (trigger, start, sending) and sequence REPLACE the current one. The emails of a running subsequence cannot be replaced - pause it first. Needs a plan with subsequences (Pro+ and above) - otherwise 403 with code subsequences_plan_required. 409 campaign_busy = the campaign is being changed right now; retry in a few seconds. Requires one of the following scopes: campaigns:write, campaigns:all, all:all.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://mail-beast-ai.mintlify.app/_mintlify/api/og/v2?division=Subsequences\u0026amp;title=Update+a+subsequence\u0026amp;description=Partial+update+-+only+what+you+pass+changes.+Each+%60settings%60+section+%28%60trigger%60%2C+%60start%60%2C+%60sending%60%29+and+%60sequence%60+REPLACE+the+current+one.+The+emails+of+a+run\u0026amp;theme=deee3b5723542dabe22142b2\u0026amp;signature=1fa5f5802142b17ebb185d5b9ce565ed023ebda50a7cb8f0a5b04edd6a44dedd\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/mail-beast-ai/WJNHEBup3U7XmwP7/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"MailBeast API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2F62E8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.mailbeast.ai/api-reference/subsequences/update-a-subsequence\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/subsequences/update-a-subsequence.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.mailbeast.ai/#organization\",\"name\":\"MailBeast API\",\"url\":\"https://developer.mailbeast.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/mail-beast-ai/wTQEP6MPos1XZJQD/logo/light.svg?fit=max\u0026auto=format\u0026n=wTQEP6MPos1XZJQD\u0026q=85\u0026s=aeac906ba6340f321596e4d877c72bf1\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.mailbeast.ai#website\",\"name\":\"MailBeast API\",\"url\":\"https://developer.mailbeast.ai\",\"publisher\":{\"@id\":\"https://developer.mailbeast.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.mailbeast.ai/api-reference/subsequences/update-a-subsequence#webpage\",\"url\":\"https://developer.mailbeast.ai/api-reference/subsequences/update-a-subsequence\",\"name\":\"Update a subsequence\",\"description\":\"Partial update - only what you pass changes. Each settings section (trigger, start, sending) and sequence REPLACE the current one. The emails of a running subsequence cannot be replaced - pause it first. Needs a plan with subsequences (Pro+ and above) - otherwise 403 with code subsequences_plan_required. 409 campaign_busy = the campaign is being changed right now; retry in a few seconds. Requires one of the following scopes: campaigns:write, campaigns:all, all:all.\",\"dateModified\":\"2026-11-04T20:25:28.831Z\",\"isPartOf\":{\"@id\":\"https://developer.mailbeast.ai#website\"},\"breadcrumb\":{\"@id\":\"https://developer.mailbeast.ai/api-reference/subsequences/update-a-subsequence#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.mailbeast.ai/api-reference/subsequences/update-a-subsequence#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Subsequences\",\"item\":\"https://developer.mailbeast.ai/api-reference/subsequences/create-a-subsequence\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Update a subsequence\",\"item\":\"https://developer.mailbeast.ai/api-reference/subsequences/update-a-subsequence\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developer.mailbeast.ai/api-reference/subsequences/update-a-subsequence#apireference\",\"headline\":\"Update a subsequence\",\"name\":\"Update a subsequence\",\"description\":\"Partial update - only what you pass changes. Each settings section (trigger, start, sending) and sequence REPLACE the current one. The emails of a running subsequence cannot be replaced - pause it first. Needs a plan with subsequences (Pro+ and above) - otherwise 403 with code subsequences_plan_required. 409 campaign_busy = the campaign is being changed right now; retry in a few seconds. Requires one of the following scopes: campaigns:write, campaigns:all, all:all.\",\"url\":\"https://developer.mailbeast.ai/api-reference/subsequences/update-a-subsequence\",\"mainEntityOfPage\":{\"@id\":\"https://developer.mailbeast.ai/api-reference/subsequences/update-a-subsequence#webpage\"},\"dateModified\":\"2026-11-04T20:25:28.831Z\",\"publisher\":{\"@id\":\"https://developer.mailbeast.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.mailbeast.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"MailBeast API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"MailBeast API","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"Lead Finder","pages":[{"title":"List lead searches","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/lead-searches","href":"/api-reference/lead-finder/list-lead-searches"},{"title":"Get a lead search","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/lead-searches/{id}","href":"/api-reference/lead-finder/get-a-lead-search"}]},{"group":"Email Accounts","pages":[{"title":"Connect mailboxes","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/accounts","href":"/api-reference/email-accounts/connect-mailboxes"},{"title":"List mailboxes","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/accounts","href":"/api-reference/email-accounts/list-mailboxes"},{"title":"Get a mailbox","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/accounts/{id}","href":"/api-reference/email-accounts/get-a-mailbox"},{"title":"Update a mailbox","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/accounts/{id}","href":"/api-reference/email-accounts/update-a-mailbox"},{"title":"Delete a mailbox","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/accounts/{id}","href":"/api-reference/email-accounts/delete-a-mailbox"},{"title":"Bulk update mailboxes","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/accounts/bulk","href":"/api-reference/email-accounts/bulk-update-mailboxes"},{"title":"Verification result","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/accounts/{id}/verification","href":"/api-reference/email-accounts/verification-result"},{"title":"Pause a mailbox","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/accounts/{id}/pause","href":"/api-reference/email-accounts/pause-a-mailbox"},{"title":"Resume a mailbox","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/accounts/{id}/resume","href":"/api-reference/email-accounts/resume-a-mailbox"},{"title":"Start OAuth connect","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/accounts/oauth/{provider}/init","href":"/api-reference/email-accounts/start-oauth-connect"},{"title":"Poll OAuth connect","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/accounts/oauth/{provider}/status","href":"/api-reference/email-accounts/poll-oauth-connect"}]},{"group":"Campaigns","pages":[{"title":"Create a campaign","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/campaigns","href":"/api-reference/campaigns/create-a-campaign"},{"title":"Start campaign","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/campaigns/{id}/start","href":"/api-reference/campaigns/start-campaign"},{"title":"Pause campaign","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/campaigns/{id}/pause","href":"/api-reference/campaigns/pause-campaign"},{"title":"Resume campaign","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/campaigns/{id}/resume","href":"/api-reference/campaigns/resume-campaign"},{"title":"Send a test email","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/campaigns/{id}/test-email","href":"/api-reference/campaigns/send-a-test-email"},{"title":"List campaigns","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/campaigns","href":"/api-reference/campaigns/list-campaigns"},{"title":"Get a campaign","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/campaigns/{id}","href":"/api-reference/campaigns/get-a-campaign"},{"title":"Update a campaign","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/campaigns/{id}","href":"/api-reference/campaigns/update-a-campaign"},{"title":"Delete a campaign","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/campaigns/{id}","href":"/api-reference/campaigns/delete-a-campaign"},{"title":"Campaign send status","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/campaigns/{id}/status","href":"/api-reference/campaigns/campaign-send-status"}]},{"group":"Subsequences","pages":[{"title":"Create a subsequence","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/campaigns/{id}/subsequences","href":"/api-reference/subsequences/create-a-subsequence"},{"title":"List subsequences of a campaign","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/campaigns/{id}/subsequences","href":"/api-reference/subsequences/list-subsequences-of-a-campaign"},{"title":"Get a subsequence","description":"One subsequence: trigger, start and sending settings, every email step with its A/B variants, whether it is on and why it is (not) sending, and its counters.\n\nRequires one of the following scopes: `campaigns:read`, `campaigns:all`, `all:read`, `all:all`.","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/subsequences/{id}","href":"/api-reference/subsequences/get-a-subsequence"},{"title":"Update a subsequence","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/subsequences/{id}","href":"/api-reference/subsequences/update-a-subsequence"},{"title":"Delete a subsequence","description":"Delete a subsequence. Its scheduled emails are canceled; leads in it do not return to the main sequence. Turning off (or deleting) the campaign's last subsequence that is on lets a campaign whose main sequence has finished complete on its own (unless it keeps active when leads run out); /enable then needs a restart in the dashboard. `409 campaign_busy` = the campaign is being changed right now; retry in a few seconds.\n\nRequires one of the following scopes: `campaigns:write`, `campaigns:all`, `all:all`.","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/subsequences/{id}","href":"/api-reference/subsequences/delete-a-subsequence"},{"title":"Turn a subsequence on","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/subsequences/{id}/enable","href":"/api-reference/subsequences/turn-a-subsequence-on"},{"title":"Pause a subsequence","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/subsequences/{id}/pause","href":"/api-reference/subsequences/pause-a-subsequence"},{"title":"Resume a subsequence","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/subsequences/{id}/resume","href":"/api-reference/subsequences/resume-a-subsequence"},{"title":"Move leads into a subsequence","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/subsequences/{id}/leads","href":"/api-reference/subsequences/move-leads-into-a-subsequence"}]},{"group":"Emails","pages":[{"title":"List emails","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/emails","href":"/api-reference/emails/list-emails"},{"title":"Get an email","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/emails/{id}","href":"/api-reference/emails/get-an-email"},{"title":"Reply to an email","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/emails/{id}/reply","href":"/api-reference/emails/reply-to-an-email"},{"title":"Forward an email","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/emails/{id}/forward","href":"/api-reference/emails/forward-an-email"},{"title":"Count unread emails","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/emails/unread/count","href":"/api-reference/emails/count-unread-emails"},{"title":"Mark a conversation read","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/threads/{id}/read","href":"/api-reference/emails/mark-a-conversation-read"}]},{"group":"Leads","pages":[{"title":"Add leads","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/campaigns/{cid}/leads","href":"/api-reference/leads/add-leads"},{"title":"List campaign leads","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/campaigns/{cid}/leads","href":"/api-reference/leads/list-campaign-leads"},{"title":"Get a lead","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/campaigns/{cid}/leads/{leadId}","href":"/api-reference/leads/get-a-lead"},{"title":"Update a lead","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/campaigns/{cid}/leads/{leadId}","href":"/api-reference/leads/update-a-lead"},{"title":"Delete a lead","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/campaigns/{cid}/leads/{leadId}","href":"/api-reference/leads/delete-a-lead"},{"title":"Bulk mutate leads","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/campaigns/{cid}/leads/mutate","href":"/api-reference/leads/bulk-mutate-leads"},{"title":"Search leads by email","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/leads/search","href":"/api-reference/leads/search-leads-by-email"}]},{"group":"API Keys","pages":[{"title":"Create an API key","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/api-keys","href":"/api-reference/api-keys/create-an-api-key"},{"title":"List API keys","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/api-keys","href":"/api-reference/api-keys/list-api-keys"},{"title":"Delete an API key","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/api-keys/{id}","href":"/api-reference/api-keys/delete-an-api-key"}]},{"group":"Workspace","pages":[{"title":"Current usage","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/usage","href":"/api-reference/workspace/current-usage"},{"title":"Current usage for one limit","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/usage/{limitType}","href":"/api-reference/workspace/current-usage-for-one-limit"},{"title":"Subscription","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/account/subscription","href":"/api-reference/workspace/subscription"},{"title":"Workspace identity","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/workspace","href":"/api-reference/workspace/workspace-identity"}]},{"group":"Analytics","pages":[{"title":"Campaign analytics","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/campaigns/{id}/analytics","href":"/api-reference/analytics/campaign-analytics"},{"title":"Campaign analytics over time","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/campaigns/{id}/analytics/timeseries","href":"/api-reference/analytics/campaign-analytics-over-time"},{"title":"Workspace analytics roll-up","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/campaigns/analytics/overview","href":"/api-reference/analytics/workspace-analytics-roll-up"}]}]}]},"basePath":"","title":"Update a subsequence - MailBeast API","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","Page-BAvA99GL.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}