Adds one sequence step. sequenceNumber is the step’s 0-based slot within its list - the main sequence, or the lane named by parentStepId and branchKey - and must be free (409 STEP_POSITION_TAKEN), except the slot of the list’s closing condition, which adds the step just before it; the whole campaign is then renumbered. A condition step (conditionType invite_accepted or clicked_link, daysBetween as its 1-30 day window, type: manual, no content) closes its list and splits the leads into a yes lane and a no lane; add steps to a lane by passing the condition’s id as parentStepId. An A/B split (conditionType ab_split, daysBetween 0, optional splitArms, 50/50 by default) sends each lead down arm a or arm b in the weights’ proportions, by a fixed hash of the lead and the split, so a lead keeps its arm; it may be the first step; fill an arm with branchKey a or b. Conditions and splits can only be added before the campaign starts (409 SEQUENCE_STRUCTURE_LOCKED). daysBetween is the wait after the previous step (after the campaign start for step 0). type: manual sends your subject/body as written, with tokens and spintax substituted per lead at send time; type: ai_generated writes its own topic and title with AI when the step is created and renders each message per lead (do not send topic); type: ai_reply drafts a reply from the topic you supply and parks it for approval. linkedin_visit and linkedin_like steps carry no message at all. A linkedin_connection step may not follow a linkedin_message step (422 STEP_ORDER_INVALID). Only the token owner may add steps. Rate limit: 30 requests/minute and 1,000/day per token owner, shared by every campaign, scheduled-send, campaign-template and knowledge-hub endpoint.
Errors:
404CAMPAIGN_NOT_FOUND — No campaign with this id exists, it belongs to another account (including a campaign delegated to you or shared by your team’s visibility settings), or it has been deleted.
409STEP_POSITION_TAKEN — A step already occupies this slot of its list, and it is not the list’s closing condition.
409SEQUENCE_BUSY — Another change to this campaign’s steps is still being saved. Retry in a few seconds.
409SEQUENCE_STRUCTURE_LOCKED — The campaign has started, or leads already walk it, and its sequence has a condition or would gain one: its shape can no longer change.
422STEP_ORDER_INVALID — A linkedin_connection step would follow a linkedin_message step.
422CONDITION_NOT_LAST_IN_LIST — The target list ends with a condition step: nothing can be placed after it, so a list holds at most one condition.
422PARENT_STEP_NOT_A_CONDITION — parentStepId is not the id of a condition step in this campaign.
422MULTIPLE_CONNECTIONS_ON_PATH — The lead’s path through the sequence already has a linkedin_connection step.
422MESSAGE_ON_NO_LANE_OF_INVITE_CONDITION — A linkedin_message step was placed in the no lane of an invite_accepted condition, whose leads never connected.
422CONDITION_ANCHOR_MISSING — The condition has nothing to check on its path: invite_accepted needs an earlier linkedin_connection step, clicked_link an earlier email step.
422CONDITION_DUPLICATE_ON_PATH — An earlier condition on the same path already checks the same step for the same signal.
422LANE_BRANCH_KEY_INVALID — branchKey does not name a lane of parentStepId: yes or no under a signal condition, a or b under an ab_split.
422SPLIT_ARMS_INVALID — splitArms was sent for a step that is not an ab_split, or its arms are not a then b with weights adding up to 100.
422AB_SPLIT_DISABLED — A/B splits are not available on this account yet.
422MESSAGE_FIRST_IN_CLICK_LANE — A linkedin_message would open a lane of a clicked_link condition, whose leads may not be connected yet.
422VALIDATION_FAILED — Unknown key, missing channel/sequenceNumber/daysBetween, a value out of range, a topic on an ai_generated step, a missing topic on an ai_reply step, or content on a linkedin_visit / linkedin_like step; param names the field.
429RATE_LIMITED — More than 30 campaign requests in a minute, or 1,000 in a day, for this token owner (the bucket is shared by every /business/campaigns, /business/scheduled-sends, /business/campaign-templates and /business/knowledge-hubs call).
500UNEXPECTED_ERROR — The step could not be stored, or AI topic generation failed for an ai_generated step.
Requires one of the following token scopes: campaigns.
Step channel: email, linkedin_connection (connection request), linkedin_message (message to an accepted connection), linkedin_visit (profile visit, no content), linkedin_like (reaction to a recent post, no content), inmail (LinkedIn InMail, consumes InMail credits), dialer (phone-call task for a rep), todo (free-form human task) or condition (a branch point: it waits for conditionType and routes each lead down its yes or no lane; an ab_split routes each lead at once down arm a or arm b, by a fixed hash of the lead and the split, in the weights' proportions). A linkedin_connection step cannot come after a linkedin_message step (422 STEP_ORDER_INVALID).
The step's 0-based slot within its list: the main sequence, or the lane named by parentStepId and branchKey. The slot must be free (409 STEP_POSITION_TAKEN), so send the list's length to append; the one taken slot accepted is that of the list's closing condition, which adds the step just before it. A condition step is always appended to its list, and nothing can be placed after a list's closing condition (422 CONDITION_NOT_LAST_IN_LIST).
Whole days to wait after the previous step (or after the campaign start for the first step) before this one is due, 0-90. On a condition step it is the window instead: how many days, 1-30, the condition waits for its signal before routing the lead down the no lane. An ab_split never waits: send 0.
manual (default) sends your subject/body as written; ai_generated writes a topic and title with AI at creation and renders each message per lead at send time (send no topic; it is generated); ai_reply is an AI-drafted reply that waits for approval and needs a topic. A condition step is always manual.
Subject line for a manual step (up to 500 characters, may be empty); becomes the step title. Rejected on linkedin_visit, linkedin_like and condition steps, which carry no message.
Message body for a manual step (up to 20000 characters; {Variable} tokens and spintax substitute at send time). On a linkedin_connection step this is the invitation note, capped at LinkedIn's 200-character limit. Rejected on linkedin_visit, linkedin_like and condition steps, which carry no message.
Free text: what this step should say, in your own words — there is no fixed set of topics. 1-500 characters. Required for ai_reply, rejected for ai_generated (which generates its own) and for linkedin_visit / linkedin_like / condition steps. Stored but not rendered on a manual step.
Accepted values: bare email addresses such as ops@example.com — a display name or angle brackets is rejected, up to 320 characters each. Every address you list is copied on every send of this step, up to 10 addresses. Only an email step actually sends them: on any other channel the value is stored and never used.
Which lane of parentStepId: yes (the condition's signal arrived in time) or no; under an ab_split, the arm a or b (422 LANE_BRANCH_KEY_INVALID otherwise). Sent together with parentStepId.
Condition steps only, and required on them: invite_accepted waits for the invite of the nearest earlier linkedin_connection step on the lead's path to be accepted; clicked_link waits for a click on a link in the nearest earlier email step on the path; ab_split waits for nothing and sends each lead down arm a or arm b in the splitArms weights' proportions (a fixed hash of the lead and the split, so a lead keeps its arm), and may be the first step. Conditions can only be added before the campaign starts (409 SEQUENCE_STRUCTURE_LOCKED).
ab_split steps only: both arms, a then b, each { key, label?, weight }, with whole-percent weights adding up to 100. Omitted means a and b at 50 each. An arm may stay empty to hold leads out.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Fuse API","colors":{"primary":"#22857C","light":"#34C7BA","dark":"#22857C"},"logo":{"light":"https://mintcdn.com/fuseai/HxYNa2W1WI8CM0N4/logo/light.svg?fit=max\u0026auto=format\u0026n=HxYNa2W1WI8CM0N4\u0026q=85\u0026s=c9afa73057eb802e14743fbb297c60d5","dark":"https://mintcdn.com/fuseai/HxYNa2W1WI8CM0N4/logo/dark.svg?fit=max\u0026auto=format\u0026n=HxYNa2W1WI8CM0N4\u0026q=85\u0026s=1fc8cdcdfa374184a0d0be9a3559e3ae"},"favicon":{"light":"https://mintcdn.com/fuseai/HxYNa2W1WI8CM0N4/favicon/light.svg?fit=max\u0026auto=format\u0026n=HxYNa2W1WI8CM0N4\u0026q=85\u0026s=ac736774fcb3b9a1a851b2993948e5ec","dark":"https://mintcdn.com/fuseai/HxYNa2W1WI8CM0N4/favicon/dark.svg?fit=max\u0026auto=format\u0026n=HxYNa2W1WI8CM0N4\u0026q=85\u0026s=32e317b320fd34552ab3990cd8a717a4"},"api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","python","javascript"],"prefill":true}},"background":{"color":{"light":"#FFFFFF","dark":"#161615"}},"navbar":{"links":[{"href":"mailto:support@fuseai.com","label":"Support"}],"primary":{"type":"button","label":"Open Fuse","href":"https://app.tryfuse.ai"}},"footer":{"socials":{"website":"https://fuseai.com","linkedin":"https://www.linkedin.com/company/fuseaicom"}},"contextual":{"options":["copy","view","claude","cursor"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"fuseai","hasAudioNarration":false,"actualSubdomain":"fuseai","customDomains":["docs.fuseai.com"],"gitSource":{"type":"github","owner":"kompassai-com","repo":"api-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae37b777a4e4821c08feade","collectionId":"5bacfad1-97dd-4f59-945f-2a160fb2f0c7","liveDeploymentHistoryId":"6ae37b777a4e4821c08feade","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae37b777a4e4821c08feade","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"API Reference","count":157},{"language":"default","tag":"Documentation","count":50},{"language":"default","tag":"Agents","count":27},{"language":"default","tag":"Knowledge hubs","count":18},{"language":"default","tag":"Lists","count":17},{"language":"default","tag":"Campaigns","count":15},{"language":"default","tag":"Guides","count":14},{"language":"default","tag":"Workflows","count":10},{"language":"default","tag":"Data","count":9},{"language":"default","tag":"Account","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#topbar-cta-button .bg-primary-dark{background-color:rgb(0 0 0)}.dark #topbar-cta-button .bg-primary-dark{background-color:rgb(255 255 255)}.dark #topbar-cta-button .text-white,.dark #topbar-cta-button .text-white\\/90{color:rgb(0 0 0)}"}],"page":{"pagePath":"api-reference/campaign-steps/add-a-sequence-step","slug":"/api-reference/campaign-steps/add-a-sequence-step","pageMetadata":{"title":"Add a sequence step","description":"Adds one sequence step. `sequenceNumber` is the step's 0-based slot within its list - the main sequence, or the lane named by `parentStepId` and `branchKey` - and must be free (409 STEP_POSITION_TAKEN), except the slot of the list's closing condition, which adds the step just before it; the whole campaign is then renumbered. A `condition` step (`conditionType` invite_accepted or clicked_link, `daysBetween` as its 1-30 day window, `type: manual`, no content) closes its list and splits the leads into a yes lane and a no lane; add steps to a lane by passing the condition's id as `parentStepId`. An A/B split (`conditionType` ab_split, `daysBetween` 0, optional `splitArms`, 50/50 by default) sends each lead down arm a or arm b in the weights' proportions, by a fixed hash of the lead and the split, so a lead keeps its arm; it may be the first step; fill an arm with `branchKey` a or b. Conditions and splits can only be added before the campaign starts (409 SEQUENCE_STRUCTURE_LOCKED). `daysBetween` is the wait after the previous step (after the campaign start for step 0). `type: manual` sends your `subject`/`body` as written, with {Variable} tokens and spintax substituted per lead at send time; `type: ai_generated` writes its own topic and title with AI when the step is created and renders each message per lead (do not send `topic`); `type: ai_reply` drafts a reply from the `topic` you supply and parks it for approval. `linkedin_visit` and `linkedin_like` steps carry no message at all. A `linkedin_connection` step may not follow a `linkedin_message` step (422 STEP_ORDER_INVALID). Only the token owner may add steps. Rate limit: 30 requests/minute and 1,000/day per token owner, shared by every campaign, scheduled-send, campaign-template and knowledge-hub endpoint.\n\nErrors:\n- `404` `CAMPAIGN_NOT_FOUND` — No campaign with this id exists, it belongs to another account (including a campaign delegated to you or shared by your team's visibility settings), or it has been deleted.\n- `409` `STEP_POSITION_TAKEN` — A step already occupies this slot of its list, and it is not the list's closing condition.\n- `409` `SEQUENCE_BUSY` — Another change to this campaign's steps is still being saved. Retry in a few seconds.\n- `409` `SEQUENCE_STRUCTURE_LOCKED` — The campaign has started, or leads already walk it, and its sequence has a condition or would gain one: its shape can no longer change.\n- `422` `STEP_ORDER_INVALID` — A linkedin_connection step would follow a linkedin_message step.\n- `422` `CONDITION_NOT_LAST_IN_LIST` — The target list ends with a condition step: nothing can be placed after it, so a list holds at most one condition.\n- `422` `PARENT_STEP_NOT_A_CONDITION` — parentStepId is not the id of a condition step in this campaign.\n- `422` `MULTIPLE_CONNECTIONS_ON_PATH` — The lead's path through the sequence already has a linkedin_connection step.\n- `422` `MESSAGE_ON_NO_LANE_OF_INVITE_CONDITION` — A linkedin_message step was placed in the no lane of an invite_accepted condition, whose leads never connected.\n- `422` `CONDITION_ANCHOR_MISSING` — The condition has nothing to check on its path: invite_accepted needs an earlier linkedin_connection step, clicked_link an earlier email step.\n- `422` `CONDITION_DUPLICATE_ON_PATH` — An earlier condition on the same path already checks the same step for the same signal.\n- `422` `LANE_BRANCH_KEY_INVALID` — branchKey does not name a lane of parentStepId: yes or no under a signal condition, a or b under an ab_split.\n- `422` `SPLIT_ARMS_INVALID` — splitArms was sent for a step that is not an ab_split, or its arms are not a then b with weights adding up to 100.\n- `422` `AB_SPLIT_DISABLED` — A/B splits are not available on this account yet.\n- `422` `MESSAGE_FIRST_IN_CLICK_LANE` — A linkedin_message would open a lane of a clicked_link condition, whose leads may not be connected yet.\n- `422` `VALIDATION_FAILED` — Unknown key, missing channel/sequenceNumber/daysBetween, a value out of range, a topic on an ai_generated step, a missing topic on an ai_reply step, or content on a linkedin_visit / linkedin_like step; `param` names the field.\n- `429` `RATE_LIMITED` — More than 30 campaign requests in a minute, or 1,000 in a day, for this token owner (the bucket is shared by every /business/campaigns, /business/scheduled-sends, /business/campaign-templates and /business/knowledge-hubs call).\n- `500` `UNEXPECTED_ERROR` — The step could not be stored, or AI topic generation failed for an ai_generated step.\n\nRequires one of the following token scopes: campaigns.","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/steps","href":"/api-reference/campaign-steps/add-a-sequence-step","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 li: \"li\",\n p: \"p\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Adds one sequence step. \", _jsx(_components.code, {\n children: \"sequenceNumber\"\n }), \" is the step’s 0-based slot within its list - the main sequence, or the lane named by \", _jsx(_components.code, {\n children: \"parentStepId\"\n }), \" and \", _jsx(_components.code, {\n children: \"branchKey\"\n }), \" - and must be free (409 STEP_POSITION_TAKEN), except the slot of the list’s closing condition, which adds the step just before it; the whole campaign is then renumbered. A \", _jsx(_components.code, {\n children: \"condition\"\n }), \" step (\", _jsx(_components.code, {\n children: \"conditionType\"\n }), \" invite_accepted or clicked_link, \", _jsx(_components.code, {\n children: \"daysBetween\"\n }), \" as its 1-30 day window, \", _jsx(_components.code, {\n children: \"type: manual\"\n }), \", no content) closes its list and splits the leads into a yes lane and a no lane; add steps to a lane by passing the condition’s id as \", _jsx(_components.code, {\n children: \"parentStepId\"\n }), \". An A/B split (\", _jsx(_components.code, {\n children: \"conditionType\"\n }), \" ab_split, \", _jsx(_components.code, {\n children: \"daysBetween\"\n }), \" 0, optional \", _jsx(_components.code, {\n children: \"splitArms\"\n }), \", 50/50 by default) sends each lead down arm a or arm b in the weights’ proportions, by a fixed hash of the lead and the split, so a lead keeps its arm; it may be the first step; fill an arm with \", _jsx(_components.code, {\n children: \"branchKey\"\n }), \" a or b. Conditions and splits can only be added before the campaign starts (409 SEQUENCE_STRUCTURE_LOCKED). \", _jsx(_components.code, {\n children: \"daysBetween\"\n }), \" is the wait after the previous step (after the campaign start for step 0). \", _jsx(_components.code, {\n children: \"type: manual\"\n }), \" sends your \", _jsx(_components.code, {\n children: \"subject\"\n }), \"/\", _jsx(_components.code, {\n children: \"body\"\n }), \" as written, with \", \" tokens and spintax substituted per lead at send time; \", _jsx(_components.code, {\n children: \"type: ai_generated\"\n }), \" writes its own topic and title with AI when the step is created and renders each message per lead (do not send \", _jsx(_components.code, {\n children: \"topic\"\n }), \"); \", _jsx(_components.code, {\n children: \"type: ai_reply\"\n }), \" drafts a reply from the \", _jsx(_components.code, {\n children: \"topic\"\n }), \" you supply and parks it for approval. \", _jsx(_components.code, {\n children: \"linkedin_visit\"\n }), \" and \", _jsx(_components.code, {\n children: \"linkedin_like\"\n }), \" steps carry no message at all. A \", _jsx(_components.code, {\n children: \"linkedin_connection\"\n }), \" step may not follow a \", _jsx(_components.code, {\n children: \"linkedin_message\"\n }), \" step (422 STEP_ORDER_INVALID). Only the token owner may add steps. Rate limit: 30 requests/minute and 1,000/day per token owner, shared by every campaign, scheduled-send, campaign-template and knowledge-hub endpoint.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Errors:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"404\"\n }), \" \", _jsx(_components.code, {\n children: \"CAMPAIGN_NOT_FOUND\"\n }), \" — No campaign with this id exists, it belongs to another account (including a campaign delegated to you or shared by your team’s visibility settings), or it has been deleted.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"409\"\n }), \" \", _jsx(_components.code, {\n children: \"STEP_POSITION_TAKEN\"\n }), \" — A step already occupies this slot of its list, and it is not the list’s closing condition.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"409\"\n }), \" \", _jsx(_components.code, {\n children: \"SEQUENCE_BUSY\"\n }), \" — Another change to this campaign’s steps is still being saved. Retry in a few seconds.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"409\"\n }), \" \", _jsx(_components.code, {\n children: \"SEQUENCE_STRUCTURE_LOCKED\"\n }), \" — The campaign has started, or leads already walk it, and its sequence has a condition or would gain one: its shape can no longer change.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"STEP_ORDER_INVALID\"\n }), \" — A linkedin_connection step would follow a linkedin_message step.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"CONDITION_NOT_LAST_IN_LIST\"\n }), \" — The target list ends with a condition step: nothing can be placed after it, so a list holds at most one condition.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"PARENT_STEP_NOT_A_CONDITION\"\n }), \" — parentStepId is not the id of a condition step in this campaign.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"MULTIPLE_CONNECTIONS_ON_PATH\"\n }), \" — The lead’s path through the sequence already has a linkedin_connection step.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"MESSAGE_ON_NO_LANE_OF_INVITE_CONDITION\"\n }), \" — A linkedin_message step was placed in the no lane of an invite_accepted condition, whose leads never connected.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"CONDITION_ANCHOR_MISSING\"\n }), \" — The condition has nothing to check on its path: invite_accepted needs an earlier linkedin_connection step, clicked_link an earlier email step.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"CONDITION_DUPLICATE_ON_PATH\"\n }), \" — An earlier condition on the same path already checks the same step for the same signal.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"LANE_BRANCH_KEY_INVALID\"\n }), \" — branchKey does not name a lane of parentStepId: yes or no under a signal condition, a or b under an ab_split.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"SPLIT_ARMS_INVALID\"\n }), \" — splitArms was sent for a step that is not an ab_split, or its arms are not a then b with weights adding up to 100.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"AB_SPLIT_DISABLED\"\n }), \" — A/B splits are not available on this account yet.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"MESSAGE_FIRST_IN_CLICK_LANE\"\n }), \" — A linkedin_message would open a lane of a clicked_link condition, whose leads may not be connected yet.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"VALIDATION_FAILED\"\n }), \" — Unknown key, missing channel/sequenceNumber/daysBetween, a value out of range, a topic on an ai_generated step, a missing topic on an ai_reply step, or content on a linkedin_visit / linkedin_like step; \", _jsx(_components.code, {\n children: \"param\"\n }), \" names the field.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"429\"\n }), \" \", _jsx(_components.code, {\n children: \"RATE_LIMITED\"\n }), \" — More than 30 campaign requests in a minute, or 1,000 in a day, for this token owner (the bucket is shared by every /business/campaigns, /business/scheduled-sends, /business/campaign-templates and /business/knowledge-hubs call).\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"500\"\n }), \" \", _jsx(_components.code, {\n children: \"UNEXPECTED_ERROR\"\n }), \" — The step could not be stored, or AI topic generation failed for an ai_generated step.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Requires one of the following token scopes: campaigns.\"\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":"Add a sequence step","description":"Adds one sequence step. `sequenceNumber` is the step's 0-based slot within its list - the main sequence, or the lane named by `parentStepId` and `branchKey` - and must be free (409 STEP_POSITION_TAKEN), except the slot of the list's closing condition, which adds the step just before it; the whole campaign is then renumbered. A `condition` step (`conditionType` invite_accepted or clicked_link, `daysBetween` as its 1-30 day window, `type: manual`, no content) closes its list and splits the leads into a yes lane and a no lane; add steps to a lane by passing the condition's id as `parentStepId`. An A/B split (`conditionType` ab_split, `daysBetween` 0, optional `splitArms`, 50/50 by default) sends each lead down arm a or arm b in the weights' proportions, by a fixed hash of the lead and the split, so a lead keeps its arm; it may be the first step; fill an arm with `branchKey` a or b. Conditions and splits can only be added before the campaign starts (409 SEQUENCE_STRUCTURE_LOCKED). `daysBetween` is the wait after the previous step (after the campaign start for step 0). `type: manual` sends your `subject`/`body` as written, with {Variable} tokens and spintax substituted per lead at send time; `type: ai_generated` writes its own topic and title with AI when the step is created and renders each message per lead (do not send `topic`); `type: ai_reply` drafts a reply from the `topic` you supply and parks it for approval. `linkedin_visit` and `linkedin_like` steps carry no message at all. A `linkedin_connection` step may not follow a `linkedin_message` step (422 STEP_ORDER_INVALID). Only the token owner may add steps. Rate limit: 30 requests/minute and 1,000/day per token owner, shared by every campaign, scheduled-send, campaign-template and knowledge-hub endpoint.\n\nErrors:\n- `404` `CAMPAIGN_NOT_FOUND` — No campaign with this id exists, it belongs to another account (including a campaign delegated to you or shared by your team's visibility settings), or it has been deleted.\n- `409` `STEP_POSITION_TAKEN` — A step already occupies this slot of its list, and it is not the list's closing condition.\n- `409` `SEQUENCE_BUSY` — Another change to this campaign's steps is still being saved. Retry in a few seconds.\n- `409` `SEQUENCE_STRUCTURE_LOCKED` — The campaign has started, or leads already walk it, and its sequence has a condition or would gain one: its shape can no longer change.\n- `422` `STEP_ORDER_INVALID` — A linkedin_connection step would follow a linkedin_message step.\n- `422` `CONDITION_NOT_LAST_IN_LIST` — The target list ends with a condition step: nothing can be placed after it, so a list holds at most one condition.\n- `422` `PARENT_STEP_NOT_A_CONDITION` — parentStepId is not the id of a condition step in this campaign.\n- `422` `MULTIPLE_CONNECTIONS_ON_PATH` — The lead's path through the sequence already has a linkedin_connection step.\n- `422` `MESSAGE_ON_NO_LANE_OF_INVITE_CONDITION` — A linkedin_message step was placed in the no lane of an invite_accepted condition, whose leads never connected.\n- `422` `CONDITION_ANCHOR_MISSING` — The condition has nothing to check on its path: invite_accepted needs an earlier linkedin_connection step, clicked_link an earlier email step.\n- `422` `CONDITION_DUPLICATE_ON_PATH` — An earlier condition on the same path already checks the same step for the same signal.\n- `422` `LANE_BRANCH_KEY_INVALID` — branchKey does not name a lane of parentStepId: yes or no under a signal condition, a or b under an ab_split.\n- `422` `SPLIT_ARMS_INVALID` — splitArms was sent for a step that is not an ab_split, or its arms are not a then b with weights adding up to 100.\n- `422` `AB_SPLIT_DISABLED` — A/B splits are not available on this account yet.\n- `422` `MESSAGE_FIRST_IN_CLICK_LANE` — A linkedin_message would open a lane of a clicked_link condition, whose leads may not be connected yet.\n- `422` `VALIDATION_FAILED` — Unknown key, missing channel/sequenceNumber/daysBetween, a value out of range, a topic on an ai_generated step, a missing topic on an ai_reply step, or content on a linkedin_visit / linkedin_like step; `param` names the field.\n- `429` `RATE_LIMITED` — More than 30 campaign requests in a minute, or 1,000 in a day, for this token owner (the bucket is shared by every /business/campaigns, /business/scheduled-sends, /business/campaign-templates and /business/knowledge-hubs call).\n- `500` `UNEXPECTED_ERROR` — The step could not be stored, or AI topic generation failed for an ai_generated step.\n\nRequires one of the following token scopes: campaigns.","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/steps","href":"/api-reference/campaign-steps/add-a-sequence-step","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"createCampaignStep","summary":"Add a sequence step","tags":["Campaign steps"],"security":["e687f3c6-9e45-4d18-a4c6-fc00975ad1a2"],"parameters":["e9d49620-6199-435f-b872-effedd453c67"],"responses":{"201":"8ff86c98-81bd-40f2-8015-f777400d8d68","400":"4b47b74b-c821-4bdf-a527-01d2bd53ae94","401":"ff749596-ee96-40da-8f63-ef98bd31bf2d","402":"ba21e98c-c4ef-41d6-a75b-07112a6a20e7","403":"cf125dea-6858-4a77-995d-136ec7b2a9f6","404":"52ab4058-50b0-4636-b54e-db6ba494e8c1","409":"936d6e1a-2009-4d79-8bed-f02a5aa32f4b","422":"71cbcc96-260e-4f75-bd3d-a9d1480d28a9","429":"a9a9e693-8957-40e2-af0a-f8ead170dc18","500":"56392f06-ccfb-4f6f-8a18-609d335ec2eb"},"description":"Adds one sequence step. `sequenceNumber` is the step's 0-based slot within its list - the main sequence, or the lane named by `parentStepId` and `branchKey` - and must be free (409 STEP_POSITION_TAKEN), except the slot of the list's closing condition, which adds the step just before it; the whole campaign is then renumbered. A `condition` step (`conditionType` invite_accepted or clicked_link, `daysBetween` as its 1-30 day window, `type: manual`, no content) closes its list and splits the leads into a yes lane and a no lane; add steps to a lane by passing the condition's id as `parentStepId`. An A/B split (`conditionType` ab_split, `daysBetween` 0, optional `splitArms`, 50/50 by default) sends each lead down arm a or arm b in the weights' proportions, by a fixed hash of the lead and the split, so a lead keeps its arm; it may be the first step; fill an arm with `branchKey` a or b. Conditions and splits can only be added before the campaign starts (409 SEQUENCE_STRUCTURE_LOCKED). `daysBetween` is the wait after the previous step (after the campaign start for step 0). `type: manual` sends your `subject`/`body` as written, with {Variable} tokens and spintax substituted per lead at send time; `type: ai_generated` writes its own topic and title with AI when the step is created and renders each message per lead (do not send `topic`); `type: ai_reply` drafts a reply from the `topic` you supply and parks it for approval. `linkedin_visit` and `linkedin_like` steps carry no message at all. A `linkedin_connection` step may not follow a `linkedin_message` step (422 STEP_ORDER_INVALID). Only the token owner may add steps. Rate limit: 30 requests/minute and 1,000/day per token owner, shared by every campaign, scheduled-send, campaign-template and knowledge-hub endpoint.\n\nErrors:\n- `404` `CAMPAIGN_NOT_FOUND` — No campaign with this id exists, it belongs to another account (including a campaign delegated to you or shared by your team's visibility settings), or it has been deleted.\n- `409` `STEP_POSITION_TAKEN` — A step already occupies this slot of its list, and it is not the list's closing condition.\n- `409` `SEQUENCE_BUSY` — Another change to this campaign's steps is still being saved. Retry in a few seconds.\n- `409` `SEQUENCE_STRUCTURE_LOCKED` — The campaign has started, or leads already walk it, and its sequence has a condition or would gain one: its shape can no longer change.\n- `422` `STEP_ORDER_INVALID` — A linkedin_connection step would follow a linkedin_message step.\n- `422` `CONDITION_NOT_LAST_IN_LIST` — The target list ends with a condition step: nothing can be placed after it, so a list holds at most one condition.\n- `422` `PARENT_STEP_NOT_A_CONDITION` — parentStepId is not the id of a condition step in this campaign.\n- `422` `MULTIPLE_CONNECTIONS_ON_PATH` — The lead's path through the sequence already has a linkedin_connection step.\n- `422` `MESSAGE_ON_NO_LANE_OF_INVITE_CONDITION` — A linkedin_message step was placed in the no lane of an invite_accepted condition, whose leads never connected.\n- `422` `CONDITION_ANCHOR_MISSING` — The condition has nothing to check on its path: invite_accepted needs an earlier linkedin_connection step, clicked_link an earlier email step.\n- `422` `CONDITION_DUPLICATE_ON_PATH` — An earlier condition on the same path already checks the same step for the same signal.\n- `422` `LANE_BRANCH_KEY_INVALID` — branchKey does not name a lane of parentStepId: yes or no under a signal condition, a or b under an ab_split.\n- `422` `SPLIT_ARMS_INVALID` — splitArms was sent for a step that is not an ab_split, or its arms are not a then b with weights adding up to 100.\n- `422` `AB_SPLIT_DISABLED` — A/B splits are not available on this account yet.\n- `422` `MESSAGE_FIRST_IN_CLICK_LANE` — A linkedin_message would open a lane of a clicked_link condition, whose leads may not be connected yet.\n- `422` `VALIDATION_FAILED` — Unknown key, missing channel/sequenceNumber/daysBetween, a value out of range, a topic on an ai_generated step, a missing topic on an ai_reply step, or content on a linkedin_visit / linkedin_like step; `param` names the field.\n- `429` `RATE_LIMITED` — More than 30 campaign requests in a minute, or 1,000 in a day, for this token owner (the bucket is shared by every /business/campaigns, /business/scheduled-sends, /business/campaign-templates and /business/knowledge-hubs call).\n- `500` `UNEXPECTED_ERROR` — The step could not be stored, or AI topic generation failed for an ai_generated step.\n\nRequires one of the following token scopes: campaigns.","requestBody":"9c271ae0-fbb0-43bc-a8b3-4e10b0c52c0b","method":"post","type":"path","servers":["4ca8b996-e74f-447c-8937-bc591ab08d00"],"path":"/business/campaigns/{campaignId}/steps","baseUrlOptions":["https://api.tryfuse.ai/api/v1"],"title":"Add a sequence step","codeSamples":[],"requestExampleLanguages":["bash","python","javascript"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[{"body.sequenceNumber":25,"body.daysBetween":45,"body.type":"manual","body.subject":"\u003cstring>","body.body":"\u003cunknown>","body.topic":"\u003cstring>","body.cc.items.0":"jsmith@example.com","body.parentStepId.oneOf.0":"\u003cstring>","body.splitArms.items.0.weight":50,"body.splitArms.items.0.label.oneOf.0":"\u003cstring>"}]},"dependencies":{"parameters":{"e9d49620-6199-435f-b872-effedd453c67":{"name":"campaignId","in":"path","required":true,"description":"The campaign's id (24-character hex ObjectId), as returned by POST /business/campaigns or as the campaignId of a GET /business/campaigns row.","schema":{"type":"string","description":"The campaign's id (24-character hex ObjectId), as returned by POST /business/campaigns or as the campaignId of a GET /business/campaigns row.","isRequired":true,"uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"channel":{"type":"string","enum":["email","linkedin_connection","linkedin_message","linkedin_visit","linkedin_like","inmail","dialer","todo","condition"],"description":"Step channel: email, linkedin_connection (connection request), linkedin_message (message to an accepted connection), linkedin_visit (profile visit, no content), linkedin_like (reaction to a recent post, no content), inmail (LinkedIn InMail, consumes InMail credits), dialer (phone-call task for a rep), todo (free-form human task) or condition (a branch point: it waits for `conditionType` and routes each lead down its yes or no lane; an ab_split routes each lead at once down arm a or arm b, by a fixed hash of the lead and the split, in the weights' proportions). A linkedin_connection step cannot come after a linkedin_message step (422 STEP_ORDER_INVALID).","isRequired":true,"uniqueKey":"channel","typeLabel":"enum\u003cstring>"},"sequenceNumber":{"type":"integer","minimum":0,"maximum":50,"description":"The step's 0-based slot within its list: the main sequence, or the lane named by parentStepId and branchKey. The slot must be free (409 STEP_POSITION_TAKEN), so send the list's length to append; the one taken slot accepted is that of the list's closing condition, which adds the step just before it. A condition step is always appended to its list, and nothing can be placed after a list's closing condition (422 CONDITION_NOT_LAST_IN_LIST).","isRequired":true,"uniqueKey":"sequenceNumber","typeLabel":"integer"},"daysBetween":{"type":"integer","minimum":0,"maximum":90,"description":"Whole days to wait after the previous step (or after the campaign start for the first step) before this one is due, 0-90. On a condition step it is the window instead: how many days, 1-30, the condition waits for its signal before routing the lead down the no lane. An ab_split never waits: send 0.","isRequired":true,"uniqueKey":"daysBetween","typeLabel":"integer"},"type":{"type":"string","enum":["manual","ai_generated","ai_reply"],"default":"manual","description":"manual (default) sends your subject/body as written; ai_generated writes a topic and title with AI at creation and renders each message per lead at send time (send no topic; it is generated); ai_reply is an AI-drafted reply that waits for approval and needs a topic. A condition step is always manual.","uniqueKey":"type","typeLabel":"enum\u003cstring>"},"subject":{"type":"string","maxLength":500,"description":"Subject line for a manual step (up to 500 characters, may be empty); becomes the step title. Rejected on linkedin_visit, linkedin_like and condition steps, which carry no message.","uniqueKey":"subject","typeLabel":"string"},"body":{"description":"Message body for a manual step (up to 20000 characters; {Variable} tokens and spintax substitute at send time). On a linkedin_connection step this is the invitation note, capped at LinkedIn's 200-character limit. Rejected on linkedin_visit, linkedin_like and condition steps, which carry no message.","uniqueKey":"body","typeLabel":"any"},"topic":{"type":"string","minLength":1,"maxLength":500,"description":"Free text: what this step should say, in your own words — there is no fixed set of topics. 1-500 characters. Required for ai_reply, rejected for ai_generated (which generates its own) and for linkedin_visit / linkedin_like / condition steps. Stored but not rendered on a manual step.","uniqueKey":"topic","typeLabel":"string"},"cc":{"type":"array","items":{"type":"string","format":"email","maxLength":320,"description":"A bare email address, up to 320 characters.","uniqueKey":"cc.items.[INDEX]","typeLabel":"string\u003cemail>"},"maxItems":10,"description":"Accepted values: bare email addresses such as ops@example.com — a display name or angle brackets is rejected, up to 320 characters each. Every address you list is copied on every send of this step, up to 10 addresses. Only an email step actually sends them: on any other channel the value is stored and never used.","uniqueKey":"cc","typeLabel":"string\u003cemail>[]"},"parentStepId":{"oneOf":[{"type":"string","description":"The id of the condition step whose lane this step goes into. Omit (or null) for the main sequence. Sent together with branchKey.","uniqueKey":"parentStepId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The id of the condition step whose lane this step goes into. Omit (or null) for the main sequence. Sent together with branchKey.","uniqueKey":"parentStepId.oneOf.1","typeLabel":"null"}],"uniqueKey":"parentStepId","typeLabel":"string | null"},"branchKey":{"oneOf":[{"type":"string","enum":["yes","no","a","b",null],"description":"Which lane of parentStepId: yes (the condition's signal arrived in time) or no; under an ab_split, the arm a or b (422 LANE_BRANCH_KEY_INVALID otherwise). Sent together with parentStepId.","uniqueKey":"branchKey.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["yes","no","a","b",null],"description":"Which lane of parentStepId: yes (the condition's signal arrived in time) or no; under an ab_split, the arm a or b (422 LANE_BRANCH_KEY_INVALID otherwise). Sent together with parentStepId.","uniqueKey":"branchKey.oneOf.1","typeLabel":"null"}],"uniqueKey":"branchKey","typeLabel":"enum\u003cstring> | null"},"conditionType":{"type":"string","enum":["invite_accepted","clicked_link","ab_split"],"description":"Condition steps only, and required on them: invite_accepted waits for the invite of the nearest earlier linkedin_connection step on the lead's path to be accepted; clicked_link waits for a click on a link in the nearest earlier email step on the path; ab_split waits for nothing and sends each lead down arm a or arm b in the splitArms weights' proportions (a fixed hash of the lead and the split, so a lead keeps its arm), and may be the first step. Conditions can only be added before the campaign starts (409 SEQUENCE_STRUCTURE_LOCKED).","uniqueKey":"conditionType","typeLabel":"enum\u003cstring>"},"splitArms":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["a","b"],"description":"The arm: a or b.","isRequired":true,"uniqueKey":"splitArms.items.[INDEX].key","typeLabel":"enum\u003cstring>"},"weight":{"type":"integer","minimum":0,"maximum":100,"description":"The whole percent of leads routed to this arm, 0-100.","isRequired":true,"uniqueKey":"splitArms.items.[INDEX].weight","typeLabel":"integer"},"label":{"oneOf":[{"type":"string","maxLength":40,"description":"An optional name for the arm, up to 40 characters.","uniqueKey":"splitArms.items.[INDEX].label.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":40,"description":"An optional name for the arm, up to 40 characters.","uniqueKey":"splitArms.items.[INDEX].label.oneOf.1","typeLabel":"null"}],"uniqueKey":"splitArms.items.[INDEX].label","typeLabel":"string | null"}},"required":["key","weight"],"uniqueKey":"splitArms.items.[INDEX]","typeLabel":"object"},"description":"ab_split steps only: both arms, a then b, each { key, label?, weight }, with whole-percent weights adding up to 100. Omitted means a and b at 50 each. An arm may stay empty to hold leads out.","uniqueKey":"splitArms","typeLabel":"object[]"}},"required":["channel","sequenceNumber","daysBetween"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"sequenceNumber":25,"daysBetween":45,"type":"manual","subject":"\u003cstring>","body":"\u003cunknown>","topic":"\u003cstring>","cc":["jsmith@example.com"],"parentStepId":"\u003cstring>","splitArms":[{"weight":50,"label":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"8ff86c98-81bd-40f2-8015-f777400d8d68":{"description":"Success","headers":{"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests permitted in the current window."},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests remaining in the current window."},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the current window resets."}},"content":{"application/json":{"schema":{"type":"object","properties":{"step":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"step.id","typeLabel":"string"},"channel":{"oneOf":[{"type":"string","enum":["email","linkedin_connection","linkedin_message","linkedin_visit","linkedin_like","inmail","dialer","todo","condition",null],"isRequired":true,"uniqueKey":"step.channel.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["email","linkedin_connection","linkedin_message","linkedin_visit","linkedin_like","inmail","dialer","todo","condition",null],"isRequired":true,"uniqueKey":"step.channel.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"step.channel","typeLabel":"enum\u003cstring> | null"},"type":{"oneOf":[{"type":"string","enum":["manual","ai_generated","ai_reply",null],"description":"How the step's message is produced.","isRequired":true,"uniqueKey":"step.type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["manual","ai_generated","ai_reply",null],"description":"How the step's message is produced.","isRequired":true,"uniqueKey":"step.type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"step.type","typeLabel":"enum\u003cstring> | null"},"sequenceNumber":{"oneOf":[{"type":"integer","description":"0-based position in the sequence tree, read depth-first: a condition, then its yes lane, then its no lane.","isRequired":true,"uniqueKey":"step.sequenceNumber.oneOf.0","typeLabel":"integer"},{"type":"null","description":"0-based position in the sequence tree, read depth-first: a condition, then its yes lane, then its no lane.","isRequired":true,"uniqueKey":"step.sequenceNumber.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"step.sequenceNumber","typeLabel":"integer | null"},"daysBetween":{"oneOf":[{"type":"integer","description":"Whole days to wait after the previous step.","isRequired":true,"uniqueKey":"step.daysBetween.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Whole days to wait after the previous step.","isRequired":true,"uniqueKey":"step.daysBetween.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"step.daysBetween","typeLabel":"integer | null"},"title":{"oneOf":[{"type":"string","description":"Editor label; set from the subject on a manual step and generated with the topic on an AI step.","isRequired":true,"uniqueKey":"step.title.oneOf.0","typeLabel":"string"},{"type":"null","description":"Editor label; set from the subject on a manual step and generated with the topic on an AI step.","isRequired":true,"uniqueKey":"step.title.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"step.title","typeLabel":"string | null"},"topic":{"oneOf":[{"type":"string","description":"Brief an AI step writes each message from; null on an unwritten manual step.","isRequired":true,"uniqueKey":"step.topic.oneOf.0","typeLabel":"string"},{"type":"null","description":"Brief an AI step writes each message from; null on an unwritten manual step.","isRequired":true,"uniqueKey":"step.topic.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"step.topic","typeLabel":"string | null"},"subject":{"oneOf":[{"type":"string","description":"Manual subject line; null when the step has no template yet or is AI-written.","isRequired":true,"uniqueKey":"step.subject.oneOf.0","typeLabel":"string"},{"type":"null","description":"Manual subject line; null when the step has no template yet or is AI-written.","isRequired":true,"uniqueKey":"step.subject.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"step.subject","typeLabel":"string | null"},"body":{"oneOf":[{"type":"string","description":"Manual message body; null when the step has no template yet or is AI-written.","isRequired":true,"uniqueKey":"step.body.oneOf.0","typeLabel":"string"},{"type":"null","description":"Manual message body; null when the step has no template yet or is AI-written.","isRequired":true,"uniqueKey":"step.body.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"step.body","typeLabel":"string | null"},"cc":{"type":"array","items":{"type":"string","uniqueKey":"step.cc.items.[INDEX]","typeLabel":"string"},"description":"Addresses copied on every send of this step (email only).","isRequired":true,"uniqueKey":"step.cc","typeLabel":"string[]"},"parentStepId":{"oneOf":[{"type":"string","description":"The condition step whose lane this step is in; null on the main sequence.","isRequired":true,"uniqueKey":"step.parentStepId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The condition step whose lane this step is in; null on the main sequence.","isRequired":true,"uniqueKey":"step.parentStepId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"step.parentStepId","typeLabel":"string | null"},"branchKey":{"oneOf":[{"type":"string","enum":["yes","no","a","b",null],"description":"Which lane of parentStepId: yes when the condition's signal arrived in time, no otherwise; the arm a or b under an ab_split; null on the main sequence.","isRequired":true,"uniqueKey":"step.branchKey.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["yes","no","a","b",null],"description":"Which lane of parentStepId: yes when the condition's signal arrived in time, no otherwise; the arm a or b under an ab_split; null on the main sequence.","isRequired":true,"uniqueKey":"step.branchKey.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"step.branchKey","typeLabel":"enum\u003cstring> | null"},"conditionType":{"oneOf":[{"type":"string","enum":["invite_accepted","clicked_link","ab_split",null],"description":"Condition steps only: the signal the condition waits for, its daysBetween being the window in days; ab_split waits for nothing (daysBetween 0).","isRequired":true,"uniqueKey":"step.conditionType.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["invite_accepted","clicked_link","ab_split",null],"description":"Condition steps only: the signal the condition waits for, its daysBetween being the window in days; ab_split waits for nothing (daysBetween 0).","isRequired":true,"uniqueKey":"step.conditionType.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"step.conditionType","typeLabel":"enum\u003cstring> | null"},"splitArms":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["a","b"],"isRequired":true,"uniqueKey":"step.splitArms.oneOf.0.items.[INDEX].key","typeLabel":"enum\u003cstring>"},"label":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"step.splitArms.oneOf.0.items.[INDEX].label.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"step.splitArms.oneOf.0.items.[INDEX].label.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"step.splitArms.oneOf.0.items.[INDEX].label","typeLabel":"string | null"},"weight":{"type":"integer","isRequired":true,"uniqueKey":"step.splitArms.oneOf.0.items.[INDEX].weight","typeLabel":"integer"}},"required":["key","label","weight"],"uniqueKey":"step.splitArms.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"ab_split steps only: arm a then arm b, each with its optional name and the whole percent of leads routed to it; null on other steps.","isRequired":true,"uniqueKey":"step.splitArms.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"key":{"type":"string","enum":["a","b"]},"label":{"oneOf":[{"type":"string"},{"type":"null"}]},"weight":{"type":"integer"}},"required":["key","label","weight"]},"description":"ab_split steps only: arm a then arm b, each with its optional name and the whole percent of leads routed to it; null on other steps.","isRequired":true,"uniqueKey":"step.splitArms.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"step.splitArms","typeLabel":"object[] | null"},"splitWeightsChangedAt":{"oneOf":[{"type":"string","description":"ab_split steps only: when the weights last changed after the campaign started (ISO 8601); null until then.","isRequired":true,"uniqueKey":"step.splitWeightsChangedAt.oneOf.0","typeLabel":"string"},{"type":"null","description":"ab_split steps only: when the weights last changed after the campaign started (ISO 8601); null until then.","isRequired":true,"uniqueKey":"step.splitWeightsChangedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"step.splitWeightsChangedAt","typeLabel":"string | null"}},"required":["id","channel","type","sequenceNumber","daysBetween","title","topic","subject","body","cc","parentStepId","branchKey","conditionType","splitArms","splitWeightsChangedAt"],"isRequired":true,"uniqueKey":"step","typeLabel":"object"}},"required":["step"],"uniqueKey":"","typeLabel":"object"},"example":{"step":{"id":"6a8dce2ef83628aea1088041","channel":"email","type":"manual","sequenceNumber":1,"daysBetween":2,"title":"probe step subject","topic":null,"subject":"Following up on BrightPay's finance hiring","body":"\u003cp>Hi {Contact First Name}, circling back on my note last week.\u003c/p>","cc":["ops@yourcompany.com"]}},"examples":{"Example":{"title":"Example","value":{"step":{"id":"6a8dce2ef83628aea1088041","channel":"email","type":"manual","sequenceNumber":1,"daysBetween":2,"title":"probe step subject","topic":null,"subject":"Following up on BrightPay's finance hiring","body":"\u003cp>Hi {Contact First Name}, circling back on my note last week.\u003c/p>","cc":["ops@yourcompany.com"]}}}},"exampleType":"examples"}},"exampleType":"examples"},"4b47b74b-c821-4bdf-a527-01d2bd53ae94":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"ff749596-ee96-40da-8f63-ef98bd31bf2d":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"ba21e98c-c4ef-41d6-a75b-07112a6a20e7":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"cf125dea-6858-4a77-995d-136ec7b2a9f6":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"52ab4058-50b0-4636-b54e-db6ba494e8c1":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"936d6e1a-2009-4d79-8bed-f02a5aa32f4b":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"71cbcc96-260e-4f75-bd3d-a9d1480d28a9":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"a9a9e693-8957-40e2-af0a-f8ead170dc18":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"56392f06-ccfb-4f6f-8a18-609d335ec2eb":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"e687f3c6-9e45-4d18-a4c6-fc00975ad1a2":{"basicAuth":{"type":"http","scheme":"basic","description":"Your API token (`af_…`) as the Basic-auth username, with an empty password.","scopes":[],"schemeName":"basicAuth"}}},"servers":{"4ca8b996-e74f-447c-8937-bc591ab08d00":{"url":"https://api.tryfuse.ai/api/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"basic","description":"Your API token (`af_…`) as the Basic-auth username, with an empty password.","scopes":[],"schemeName":"basicAuth"},"schema":{"title":"Basic Auth","type":"object","description":"Your API token (`af_…`) as the Basic-auth username, with an empty password.","isRequired":true,"properties":{"username":{"type":"string","uniqueKey":"username","isRequired":true,"typeLabel":"string","deprecated":false},"password":{"type":"string","uniqueKey":"password","isRequired":true,"typeLabel":"string","deprecated":false}},"additionalProperties":false,"deprecated":false},"schemeName":"basicAuth","name":"Authorization"}],"title":"basicAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"fuseai","siteName":"Fuse API","title":"Add a sequence step - Fuse API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T16:59:46.158Z","originalFileLocation":"api-reference/campaign-steps/add-a-sequence-step.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=\"Adds one sequence step. sequenceNumber is the step\u0026#x27;s 0-based slot within its list - the main sequence, or the lane named by parentStepId and branchKey - and must be free (409 STEP_POSITION_TAKEN), except the slot of the list\u0026#x27;s closing condition, which adds the step just before it; the whole campaign is then renumbered. A condition step (conditionType invite_accepted or clicked_link, daysBetween as its 1-30 day window, type: manual, no content) closes its list and splits the leads into a yes lane and a no lane; add steps to a lane by passing the condition\u0026#x27;s id as parentStepId. An A/B split (conditionType ab_split, daysBetween 0, optional splitArms, 50/50 by default) sends each lead down arm a or arm b in the weights\u0026#x27; proportions, by a fixed hash of the lead and the split, so a lead keeps its arm; it may be the first step; fill an arm with branchKey a or b. Conditions and splits can only be added before the campaign starts (409 SEQUENCE_STRUCTURE_LOCKED). daysBetween is the wait after the previous step (after the campaign start for step 0). type: manual sends your subject/body as written, with {Variable} tokens and spintax substituted per lead at send time; type: ai_generated writes its own topic and title with AI when the step is created and renders each message per lead (do not send topic); type: ai_reply drafts a reply from the topic you supply and parks it for approval. linkedin_visit and linkedin_like steps carry no message at all. A linkedin_connection step may not follow a linkedin_message step (422 STEP_ORDER_INVALID). Only the token owner may add steps. Rate limit: 30 requests/minute and 1,000/day per token owner, shared by every campaign, scheduled-send, campaign-template and knowledge-hub endpoint. Errors: - 404 CAMPAIGN_NOT_FOUND — No campaign with this id exists, it belongs to another account (including a campaign delegated to you or shared by your team\u0026#x27;s visibility settings), or it has been deleted. - 409 STEP_POSITION_TAKEN — A step already occupies this slot of its list, and it is not the list\u0026#x27;s closing condition. - 409 SEQUENCE_BUSY — Another change to this campaign\u0026#x27;s steps is still being saved. Retry in a few seconds. - 409 SEQUENCE_STRUCTURE_LOCKED — The campaign has started, or leads already walk it, and its sequence has a condition or would gain one: its shape can no longer change. - 422 STEP_ORDER_INVALID — A linkedin_connection step would follow a linkedin_message step. - 422 CONDITION_NOT_LAST_IN_LIST — The target list ends with a condition step: nothing can be placed after it, so a list holds at most one condition. - 422 PARENT_STEP_NOT_A_CONDITION — parentStepId is not the id of a condition step in this campaign. - 422 MULTIPLE_CONNECTIONS_ON_PATH — The lead\u0026#x27;s path through the sequence already has a linkedin_connection step. - 422 MESSAGE_ON_NO_LANE_OF_INVITE_CONDITION — A linkedin_message step was placed in the no lane of an invite_accepted condition, whose leads never connected. - 422 CONDITION_ANCHOR_MISSING — The condition has nothing to check on its path: invite_accepted needs an earlier linkedin_connection step, clicked_link an earlier email step. - 422 CONDITION_DUPLICATE_ON_PATH — An earlier condition on the same path already checks the same step for the same signal. - 422 LANE_BRANCH_KEY_INVALID — branchKey does not name a lane of parentStepId: yes or no under a signal condition, a or b under an ab_split. - 422 SPLIT_ARMS_INVALID — splitArms was sent for a step that is not an ab_split, or its arms are not a then b with weights adding up to 100. - 422 AB_SPLIT_DISABLED — A/B splits are not available on this account yet. - 422 MESSAGE_FIRST_IN_CLICK_LANE — A linkedin_message would open a lane of a clicked_link condition, whose leads may not be connected yet. - 422 VALIDATION_FAILED — Unknown key, missing channel/sequenceNumber/daysBetween, a value out of range, a topic on an ai_generated step, a missing topic on an ai_reply step, or content on a linkedin_visit / linkedin_like step; param names the field. - 429 RATE_LIMITED — More than 30 campaign requests in a minute, or 1,000 in a day, for this token owner (the bucket is shared by every /business/campaigns, /business/scheduled-sends, /business/campaign-templates and /business/knowledge-hubs call). - 500 UNEXPECTED_ERROR — The step could not be stored, or AI topic generation failed for an ai_generated step. Requires one of the following token scopes: campaigns.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Fuse 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/fuseai/tzdaGJCdazH9bA6t/_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/fuseai/tzdaGJCdazH9bA6t/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/fuseai/tzdaGJCdazH9bA6t/_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/fuseai/tzdaGJCdazH9bA6t/_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/fuseai/tzdaGJCdazH9bA6t/_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/fuseai/tzdaGJCdazH9bA6t/_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/fuseai/tzdaGJCdazH9bA6t/_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/fuseai/tzdaGJCdazH9bA6t/_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/fuseai/tzdaGJCdazH9bA6t/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Add a sequence step - Fuse API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Adds one sequence step. sequenceNumber is the step\u0026#x27;s 0-based slot within its list - the main sequence, or the lane named by parentStepId and branchKey - and must be free (409 STEP_POSITION_TAKEN), except the slot of the list\u0026#x27;s closing condition, which adds the step just before it; the whole campaign is then renumbered. A condition step (conditionType invite_accepted or clicked_link, daysBetween as its 1-30 day window, type: manual, no content) closes its list and splits the leads into a yes lane and a no lane; add steps to a lane by passing the condition\u0026#x27;s id as parentStepId. An A/B split (conditionType ab_split, daysBetween 0, optional splitArms, 50/50 by default) sends each lead down arm a or arm b in the weights\u0026#x27; proportions, by a fixed hash of the lead and the split, so a lead keeps its arm; it may be the first step; fill an arm with branchKey a or b. Conditions and splits can only be added before the campaign starts (409 SEQUENCE_STRUCTURE_LOCKED). daysBetween is the wait after the previous step (after the campaign start for step 0). type: manual sends your subject/body as written, with {Variable} tokens and spintax substituted per lead at send time; type: ai_generated writes its own topic and title with AI when the step is created and renders each message per lead (do not send topic); type: ai_reply drafts a reply from the topic you supply and parks it for approval. linkedin_visit and linkedin_like steps carry no message at all. A linkedin_connection step may not follow a linkedin_message step (422 STEP_ORDER_INVALID). Only the token owner may add steps. Rate limit: 30 requests/minute and 1,000/day per token owner, shared by every campaign, scheduled-send, campaign-template and knowledge-hub endpoint. Errors: - 404 CAMPAIGN_NOT_FOUND — No campaign with this id exists, it belongs to another account (including a campaign delegated to you or shared by your team\u0026#x27;s visibility settings), or it has been deleted. - 409 STEP_POSITION_TAKEN — A step already occupies this slot of its list, and it is not the list\u0026#x27;s closing condition. - 409 SEQUENCE_BUSY — Another change to this campaign\u0026#x27;s steps is still being saved. Retry in a few seconds. - 409 SEQUENCE_STRUCTURE_LOCKED — The campaign has started, or leads already walk it, and its sequence has a condition or would gain one: its shape can no longer change. - 422 STEP_ORDER_INVALID — A linkedin_connection step would follow a linkedin_message step. - 422 CONDITION_NOT_LAST_IN_LIST — The target list ends with a condition step: nothing can be placed after it, so a list holds at most one condition. - 422 PARENT_STEP_NOT_A_CONDITION — parentStepId is not the id of a condition step in this campaign. - 422 MULTIPLE_CONNECTIONS_ON_PATH — The lead\u0026#x27;s path through the sequence already has a linkedin_connection step. - 422 MESSAGE_ON_NO_LANE_OF_INVITE_CONDITION — A linkedin_message step was placed in the no lane of an invite_accepted condition, whose leads never connected. - 422 CONDITION_ANCHOR_MISSING — The condition has nothing to check on its path: invite_accepted needs an earlier linkedin_connection step, clicked_link an earlier email step. - 422 CONDITION_DUPLICATE_ON_PATH — An earlier condition on the same path already checks the same step for the same signal. - 422 LANE_BRANCH_KEY_INVALID — branchKey does not name a lane of parentStepId: yes or no under a signal condition, a or b under an ab_split. - 422 SPLIT_ARMS_INVALID — splitArms was sent for a step that is not an ab_split, or its arms are not a then b with weights adding up to 100. - 422 AB_SPLIT_DISABLED — A/B splits are not available on this account yet. - 422 MESSAGE_FIRST_IN_CLICK_LANE — A linkedin_message would open a lane of a clicked_link condition, whose leads may not be connected yet. - 422 VALIDATION_FAILED — Unknown key, missing channel/sequenceNumber/daysBetween, a value out of range, a topic on an ai_generated step, a missing topic on an ai_reply step, or content on a linkedin_visit / linkedin_like step; param names the field. - 429 RATE_LIMITED — More than 30 campaign requests in a minute, or 1,000 in a day, for this token owner (the bucket is shared by every /business/campaigns, /business/scheduled-sends, /business/campaign-templates and /business/knowledge-hubs call). - 500 UNEXPECTED_ERROR — The step could not be stored, or AI topic generation failed for an ai_generated step. Requires one of the following token scopes: campaigns.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Fuse API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.fuseai.com/api-reference/campaign-steps/add-a-sequence-step\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://fuseai.mintlify.app/_mintlify/api/og/v2?division=Campaign+steps\u0026amp;title=Add+a+sequence+step\u0026amp;description=Adds+one+sequence+step.+%60sequenceNumber%60+is+the+step%27s+0-based+slot+within+its+list+-+the+main+sequence%2C+or+the+lane+named+by+%60parentStepId%60+and+%60branchKey%60+-+a\u0026amp;theme=6edc0ab12d2194e24d86a864\u0026amp;signature=8eb54b5f3fcb64d387618054d2b295d59091cd6de519ba47ddd8e44eab50fa01\">\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=\"Add a sequence step - Fuse API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Adds one sequence step. sequenceNumber is the step\u0026#x27;s 0-based slot within its list - the main sequence, or the lane named by parentStepId and branchKey - and must be free (409 STEP_POSITION_TAKEN), except the slot of the list\u0026#x27;s closing condition, which adds the step just before it; the whole campaign is then renumbered. A condition step (conditionType invite_accepted or clicked_link, daysBetween as its 1-30 day window, type: manual, no content) closes its list and splits the leads into a yes lane and a no lane; add steps to a lane by passing the condition\u0026#x27;s id as parentStepId. An A/B split (conditionType ab_split, daysBetween 0, optional splitArms, 50/50 by default) sends each lead down arm a or arm b in the weights\u0026#x27; proportions, by a fixed hash of the lead and the split, so a lead keeps its arm; it may be the first step; fill an arm with branchKey a or b. Conditions and splits can only be added before the campaign starts (409 SEQUENCE_STRUCTURE_LOCKED). daysBetween is the wait after the previous step (after the campaign start for step 0). type: manual sends your subject/body as written, with {Variable} tokens and spintax substituted per lead at send time; type: ai_generated writes its own topic and title with AI when the step is created and renders each message per lead (do not send topic); type: ai_reply drafts a reply from the topic you supply and parks it for approval. linkedin_visit and linkedin_like steps carry no message at all. A linkedin_connection step may not follow a linkedin_message step (422 STEP_ORDER_INVALID). Only the token owner may add steps. Rate limit: 30 requests/minute and 1,000/day per token owner, shared by every campaign, scheduled-send, campaign-template and knowledge-hub endpoint. Errors: - 404 CAMPAIGN_NOT_FOUND — No campaign with this id exists, it belongs to another account (including a campaign delegated to you or shared by your team\u0026#x27;s visibility settings), or it has been deleted. - 409 STEP_POSITION_TAKEN — A step already occupies this slot of its list, and it is not the list\u0026#x27;s closing condition. - 409 SEQUENCE_BUSY — Another change to this campaign\u0026#x27;s steps is still being saved. Retry in a few seconds. - 409 SEQUENCE_STRUCTURE_LOCKED — The campaign has started, or leads already walk it, and its sequence has a condition or would gain one: its shape can no longer change. - 422 STEP_ORDER_INVALID — A linkedin_connection step would follow a linkedin_message step. - 422 CONDITION_NOT_LAST_IN_LIST — The target list ends with a condition step: nothing can be placed after it, so a list holds at most one condition. - 422 PARENT_STEP_NOT_A_CONDITION — parentStepId is not the id of a condition step in this campaign. - 422 MULTIPLE_CONNECTIONS_ON_PATH — The lead\u0026#x27;s path through the sequence already has a linkedin_connection step. - 422 MESSAGE_ON_NO_LANE_OF_INVITE_CONDITION — A linkedin_message step was placed in the no lane of an invite_accepted condition, whose leads never connected. - 422 CONDITION_ANCHOR_MISSING — The condition has nothing to check on its path: invite_accepted needs an earlier linkedin_connection step, clicked_link an earlier email step. - 422 CONDITION_DUPLICATE_ON_PATH — An earlier condition on the same path already checks the same step for the same signal. - 422 LANE_BRANCH_KEY_INVALID — branchKey does not name a lane of parentStepId: yes or no under a signal condition, a or b under an ab_split. - 422 SPLIT_ARMS_INVALID — splitArms was sent for a step that is not an ab_split, or its arms are not a then b with weights adding up to 100. - 422 AB_SPLIT_DISABLED — A/B splits are not available on this account yet. - 422 MESSAGE_FIRST_IN_CLICK_LANE — A linkedin_message would open a lane of a clicked_link condition, whose leads may not be connected yet. - 422 VALIDATION_FAILED — Unknown key, missing channel/sequenceNumber/daysBetween, a value out of range, a topic on an ai_generated step, a missing topic on an ai_reply step, or content on a linkedin_visit / linkedin_like step; param names the field. - 429 RATE_LIMITED — More than 30 campaign requests in a minute, or 1,000 in a day, for this token owner (the bucket is shared by every /business/campaigns, /business/scheduled-sends, /business/campaign-templates and /business/knowledge-hubs call). - 500 UNEXPECTED_ERROR — The step could not be stored, or AI topic generation failed for an ai_generated step. Requires one of the following token scopes: campaigns.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://fuseai.mintlify.app/_mintlify/api/og/v2?division=Campaign+steps\u0026amp;title=Add+a+sequence+step\u0026amp;description=Adds+one+sequence+step.+%60sequenceNumber%60+is+the+step%27s+0-based+slot+within+its+list+-+the+main+sequence%2C+or+the+lane+named+by+%60parentStepId%60+and+%60branchKey%60+-+a\u0026amp;theme=6edc0ab12d2194e24d86a864\u0026amp;signature=8eb54b5f3fcb64d387618054d2b295d59091cd6de519ba47ddd8e44eab50fa01\">\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/fuseai/tzdaGJCdazH9bA6t/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Fuse API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#22857C\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.fuseai.com/api-reference/campaign-steps/add-a-sequence-step\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/campaign-steps/add-a-sequence-step.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.fuseai.com/#organization\",\"name\":\"Fuse API\",\"url\":\"https://docs.fuseai.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/fuseai/HxYNa2W1WI8CM0N4/logo/light.svg?fit=max\u0026auto=format\u0026n=HxYNa2W1WI8CM0N4\u0026q=85\u0026s=c9afa73057eb802e14743fbb297c60d5\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.fuseai.com#website\",\"name\":\"Fuse API\",\"url\":\"https://docs.fuseai.com\",\"publisher\":{\"@id\":\"https://docs.fuseai.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.fuseai.com/api-reference/campaign-steps/add-a-sequence-step#webpage\",\"url\":\"https://docs.fuseai.com/api-reference/campaign-steps/add-a-sequence-step\",\"name\":\"Add a sequence step\",\"description\":\"Adds one sequence step. sequenceNumber is the step's 0-based slot within its list - the main sequence, or the lane named by parentStepId and branchKey - and must be free (409 STEP_POSITION_TAKEN), except the slot of the list's closing condition, which adds the step just before it; the whole campaign is then renumbered. A condition step (conditionType invite_accepted or clicked_link, daysBetween as its 1-30 day window, type: manual, no content) closes its list and splits the leads into a yes lane and a no lane; add steps to a lane by passing the condition's id as parentStepId. An A/B split (conditionType ab_split, daysBetween 0, optional splitArms, 50/50 by default) sends each lead down arm a or arm b in the weights' proportions, by a fixed hash of the lead and the split, so a lead keeps its arm; it may be the first step; fill an arm with branchKey a or b. Conditions and splits can only be added before the campaign starts (409 SEQUENCE_STRUCTURE_LOCKED). daysBetween is the wait after the previous step (after the campaign start for step 0). type: manual sends your subject/body as written, with {Variable} tokens and spintax substituted per lead at send time; type: ai_generated writes its own topic and title with AI when the step is created and renders each message per lead (do not send topic); type: ai_reply drafts a reply from the topic you supply and parks it for approval. linkedin_visit and linkedin_like steps carry no message at all. A linkedin_connection step may not follow a linkedin_message step (422 STEP_ORDER_INVALID). Only the token owner may add steps. Rate limit: 30 requests/minute and 1,000/day per token owner, shared by every campaign, scheduled-send, campaign-template and knowledge-hub endpoint. Errors: - 404 CAMPAIGN_NOT_FOUND — No campaign with this id exists, it belongs to another account (including a campaign delegated to you or shared by your team's visibility settings), or it has been deleted. - 409 STEP_POSITION_TAKEN — A step already occupies this slot of its list, and it is not the list's closing condition. - 409 SEQUENCE_BUSY — Another change to this campaign's steps is still being saved. Retry in a few seconds. - 409 SEQUENCE_STRUCTURE_LOCKED — The campaign has started, or leads already walk it, and its sequence has a condition or would gain one: its shape can no longer change. - 422 STEP_ORDER_INVALID — A linkedin_connection step would follow a linkedin_message step. - 422 CONDITION_NOT_LAST_IN_LIST — The target list ends with a condition step: nothing can be placed after it, so a list holds at most one condition. - 422 PARENT_STEP_NOT_A_CONDITION — parentStepId is not the id of a condition step in this campaign. - 422 MULTIPLE_CONNECTIONS_ON_PATH — The lead's path through the sequence already has a linkedin_connection step. - 422 MESSAGE_ON_NO_LANE_OF_INVITE_CONDITION — A linkedin_message step was placed in the no lane of an invite_accepted condition, whose leads never connected. - 422 CONDITION_ANCHOR_MISSING — The condition has nothing to check on its path: invite_accepted needs an earlier linkedin_connection step, clicked_link an earlier email step. - 422 CONDITION_DUPLICATE_ON_PATH — An earlier condition on the same path already checks the same step for the same signal. - 422 LANE_BRANCH_KEY_INVALID — branchKey does not name a lane of parentStepId: yes or no under a signal condition, a or b under an ab_split. - 422 SPLIT_ARMS_INVALID — splitArms was sent for a step that is not an ab_split, or its arms are not a then b with weights adding up to 100. - 422 AB_SPLIT_DISABLED — A/B splits are not available on this account yet. - 422 MESSAGE_FIRST_IN_CLICK_LANE — A linkedin_message would open a lane of a clicked_link condition, whose leads may not be connected yet. - 422 VALIDATION_FAILED — Unknown key, missing channel/sequenceNumber/daysBetween, a value out of range, a topic on an ai_generated step, a missing topic on an ai_reply step, or content on a linkedin_visit / linkedin_like step; param names the field. - 429 RATE_LIMITED — More than 30 campaign requests in a minute, or 1,000 in a day, for this token owner (the bucket is shared by every /business/campaigns, /business/scheduled-sends, /business/campaign-templates and /business/knowledge-hubs call). - 500 UNEXPECTED_ERROR — The step could not be stored, or AI topic generation failed for an ai_generated step. Requires one of the following token scopes: campaigns.\",\"dateModified\":\"2026-10-29T16:59:46.158Z\",\"isPartOf\":{\"@id\":\"https://docs.fuseai.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.fuseai.com/api-reference/campaign-steps/add-a-sequence-step#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.fuseai.com/api-reference/campaign-steps/add-a-sequence-step#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Fuse API\",\"item\":\"https://docs.fuseai.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Add a sequence step\",\"item\":\"https://docs.fuseai.com/api-reference/campaign-steps/add-a-sequence-step\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.fuseai.com/api-reference/campaign-steps/add-a-sequence-step#apireference\",\"headline\":\"Add a sequence step\",\"name\":\"Add a sequence step\",\"description\":\"Adds one sequence step. sequenceNumber is the step's 0-based slot within its list - the main sequence, or the lane named by parentStepId and branchKey - and must be free (409 STEP_POSITION_TAKEN), except the slot of the list's closing condition, which adds the step just before it; the whole campaign is then renumbered. A condition step (conditionType invite_accepted or clicked_link, daysBetween as its 1-30 day window, type: manual, no content) closes its list and splits the leads into a yes lane and a no lane; add steps to a lane by passing the condition's id as parentStepId. An A/B split (conditionType ab_split, daysBetween 0, optional splitArms, 50/50 by default) sends each lead down arm a or arm b in the weights' proportions, by a fixed hash of the lead and the split, so a lead keeps its arm; it may be the first step; fill an arm with branchKey a or b. Conditions and splits can only be added before the campaign starts (409 SEQUENCE_STRUCTURE_LOCKED). daysBetween is the wait after the previous step (after the campaign start for step 0). type: manual sends your subject/body as written, with {Variable} tokens and spintax substituted per lead at send time; type: ai_generated writes its own topic and title with AI when the step is created and renders each message per lead (do not send topic); type: ai_reply drafts a reply from the topic you supply and parks it for approval. linkedin_visit and linkedin_like steps carry no message at all. A linkedin_connection step may not follow a linkedin_message step (422 STEP_ORDER_INVALID). Only the token owner may add steps. Rate limit: 30 requests/minute and 1,000/day per token owner, shared by every campaign, scheduled-send, campaign-template and knowledge-hub endpoint. Errors: - 404 CAMPAIGN_NOT_FOUND — No campaign with this id exists, it belongs to another account (including a campaign delegated to you or shared by your team's visibility settings), or it has been deleted. - 409 STEP_POSITION_TAKEN — A step already occupies this slot of its list, and it is not the list's closing condition. - 409 SEQUENCE_BUSY — Another change to this campaign's steps is still being saved. Retry in a few seconds. - 409 SEQUENCE_STRUCTURE_LOCKED — The campaign has started, or leads already walk it, and its sequence has a condition or would gain one: its shape can no longer change. - 422 STEP_ORDER_INVALID — A linkedin_connection step would follow a linkedin_message step. - 422 CONDITION_NOT_LAST_IN_LIST — The target list ends with a condition step: nothing can be placed after it, so a list holds at most one condition. - 422 PARENT_STEP_NOT_A_CONDITION — parentStepId is not the id of a condition step in this campaign. - 422 MULTIPLE_CONNECTIONS_ON_PATH — The lead's path through the sequence already has a linkedin_connection step. - 422 MESSAGE_ON_NO_LANE_OF_INVITE_CONDITION — A linkedin_message step was placed in the no lane of an invite_accepted condition, whose leads never connected. - 422 CONDITION_ANCHOR_MISSING — The condition has nothing to check on its path: invite_accepted needs an earlier linkedin_connection step, clicked_link an earlier email step. - 422 CONDITION_DUPLICATE_ON_PATH — An earlier condition on the same path already checks the same step for the same signal. - 422 LANE_BRANCH_KEY_INVALID — branchKey does not name a lane of parentStepId: yes or no under a signal condition, a or b under an ab_split. - 422 SPLIT_ARMS_INVALID — splitArms was sent for a step that is not an ab_split, or its arms are not a then b with weights adding up to 100. - 422 AB_SPLIT_DISABLED — A/B splits are not available on this account yet. - 422 MESSAGE_FIRST_IN_CLICK_LANE — A linkedin_message would open a lane of a clicked_link condition, whose leads may not be connected yet. - 422 VALIDATION_FAILED — Unknown key, missing channel/sequenceNumber/daysBetween, a value out of range, a topic on an ai_generated step, a missing topic on an ai_reply step, or content on a linkedin_visit / linkedin_like step; param names the field. - 429 RATE_LIMITED — More than 30 campaign requests in a minute, or 1,000 in a day, for this token owner (the bucket is shared by every /business/campaigns, /business/scheduled-sends, /business/campaign-templates and /business/knowledge-hubs call). - 500 UNEXPECTED_ERROR — The step could not be stored, or AI topic generation failed for an ai_generated step. Requires one of the following token scopes: campaigns.\",\"url\":\"https://docs.fuseai.com/api-reference/campaign-steps/add-a-sequence-step\",\"mainEntityOfPage\":{\"@id\":\"https://docs.fuseai.com/api-reference/campaign-steps/add-a-sequence-step#webpage\"},\"dateModified\":\"2026-10-29T16:59:46.158Z\",\"publisher\":{\"@id\":\"https://docs.fuseai.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.fuseai.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Fuse API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Fuse API","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API Reference","groups":[{"group":"Lists","pages":[{"title":"List the token owner's prospect lists","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists","href":"/api-reference/lists/list-the-token-owners-prospect-lists"},{"title":"Create a prospect list","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists","href":"/api-reference/lists/create-a-prospect-list"},{"title":"Get one list's metadata","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}","href":"/api-reference/lists/get-one-lists-metadata"},{"title":"Delete a list","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/lists/{listId}","href":"/api-reference/lists/delete-a-list"},{"title":"Rename a list or move it between folders","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/lists/{listId}","href":"/api-reference/lists/rename-a-list-or-move-it-between-folders"},{"title":"Copy rows from one list into another","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/save-to-list","href":"/api-reference/lists/copy-rows-from-one-list-into-another"},{"title":"Build a company list from a contact list's companies","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/derive-company-list","href":"/api-reference/lists/build-a-company-list-from-a-contact-lists-companies"},{"title":"Distinct values a company list carries for a field","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/filter-values","href":"/api-reference/lists/distinct-values-a-company-list-carries-for-a-field"},{"title":"List a list's contacts (with ids and column values)","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/rows","href":"/api-reference/lists/list-a-lists-contacts-with-ids-and-column-values"},{"title":"Add existing contacts to a list (by id)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/members","href":"/api-reference/lists/add-existing-contacts-to-a-list-by-id"},{"title":"Remove contacts from a list","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/lists/{listId}/members","href":"/api-reference/lists/remove-contacts-from-a-list"},{"title":"Upload new contact data into a list (RAW upload)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/contacts","href":"/api-reference/lists/upload-new-contact-data-into-a-list-raw-upload"},{"title":"Enrich a list's contacts in place","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/enrich","href":"/api-reference/lists/enrich-a-lists-contacts-in-place"},{"title":"Push a list's contacts into a connected CRM","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/crm-push","href":"/api-reference/lists/push-a-lists-contacts-into-a-connected-crm"},{"title":"Presigned upload for a large import file","deprecated":null,"version":null,"openapi":"/openapi.json post /business/imports/presign","href":"/api-reference/lists/presigned-upload-for-a-large-import-file"},{"title":"Start an import (parse + suggested mapping)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/imports","href":"/api-reference/lists/start-an-import-parse-+-suggested-mapping"},{"title":"Commit an import into a list","deprecated":null,"version":null,"openapi":"/openapi.json post /business/imports/{importId}/commit","href":"/api-reference/lists/commit-an-import-into-a-list"}]},{"group":"Custom columns","pages":[{"title":"List a list's custom column definitions","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/columns","href":"/api-reference/custom-columns/list-a-lists-custom-column-definitions"},{"title":"Create a custom column on a list","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/columns","href":"/api-reference/custom-columns/create-a-custom-column-on-a-list"},{"title":"Delete a custom column (its values go with it)","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/lists/{listId}/columns/{columnId}","href":"/api-reference/custom-columns/delete-a-custom-column-its-values-go-with-it"},{"title":"Write custom column values (keyed by contact id)","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/lists/{listId}/columns/{columnId}/values","href":"/api-reference/custom-columns/write-custom-column-values-keyed-by-contact-id"}]},{"group":"Smart columns","pages":[{"title":"Add an AI column that researches every row","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/smart-columns","href":"/api-reference/smart-columns/add-an-ai-column-that-researches-every-row"},{"title":"Poll a smart-column run","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/smart-columns/{jobId}/status","href":"/api-reference/smart-columns/poll-a-smart-column-run"},{"title":"A smart column's definition and run state","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/smart-columns/{columnId}","href":"/api-reference/smart-columns/a-smart-columns-definition-and-run-state"},{"title":"Rename a smart column, change its prompt or providers","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/lists/{listId}/smart-columns/{columnId}","href":"/api-reference/smart-columns/rename-a-smart-column-change-its-prompt-or-providers"},{"title":"Run a smart column again","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/smart-columns/{columnId}/rerun","href":"/api-reference/smart-columns/run-a-smart-column-again"},{"title":"Where a smart-column cell's value came from","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/rows/{contactId}/columns/{columnId}/provenance","href":"/api-reference/smart-columns/where-a-smart-column-cells-value-came-from"}]},{"group":"Exports","pages":[{"title":"Start an async CSV export of a list (returns a jobId)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/export","href":"/api-reference/exports/start-an-async-csv-export-of-a-list-returns-a-jobid"},{"title":"Poll an export job (presigned download URL when completed)","deprecated":null,"version":null,"openapi":"/openapi.json get /business/exports/{jobId}","href":"/api-reference/exports/poll-an-export-job-presigned-download-url-when-completed"}]},{"group":"Campaigns","pages":[{"title":"List the token owner's campaigns with headline analytics","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns","href":"/api-reference/campaigns/list-the-token-owners-campaigns-with-headline-analytics"},{"title":"Create a draft campaign","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns","href":"/api-reference/campaigns/create-a-draft-campaign"},{"title":"Get a campaign's status","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}","href":"/api-reference/campaigns/get-a-campaigns-status"},{"title":"Stop and delete a campaign","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/campaigns/{campaignId}","href":"/api-reference/campaigns/stop-and-delete-a-campaign"},{"title":"Update a campaign's settings","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/campaigns/{campaignId}","href":"/api-reference/campaigns/update-a-campaigns-settings"},{"title":"List a campaign's sequence steps","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/steps","href":"/api-reference/campaigns/list-a-campaigns-sequence-steps"},{"title":"Edit a sequence step","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/campaigns/{campaignId}/steps/{stepId}","href":"/api-reference/campaigns/edit-a-sequence-step"},{"title":"Approve (activate) a draft campaign","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/approve","href":"/api-reference/campaigns/approve-activate-a-draft-campaign"},{"title":"Stop an active campaign (approve re-activates it)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/stop","href":"/api-reference/campaigns/stop-an-active-campaign-approve-re-activates-it"},{"title":"Copy a campaign as a fresh draft","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/duplicate","href":"/api-reference/campaigns/copy-a-campaign-as-a-fresh-draft"},{"title":"The personalization variables this campaign's steps can use","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/variables","href":"/api-reference/campaigns/the-personalization-variables-this-campaigns-steps-can-use"},{"title":"A campaign's headline metrics since `since`","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/stats","href":"/api-reference/campaigns/a-campaigns-headline-metrics-since-`since`"},{"title":"The campaign's leads with their per-step state","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/leads","href":"/api-reference/campaigns/the-campaigns-leads-with-their-per-step-state"},{"title":"Export the campaign's leads to CSV","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/leads/export","href":"/api-reference/campaigns/export-the-campaigns-leads-to-csv"},{"title":"Per-arm results of a campaign's A/B splits","description":"For each A/B split in the campaign's sequence: per arm, the leads routed to it and their share, the leads it reached, LinkedIn invitations sent and accepted, human replies, positive replies and meetings booked (rates are per lead routed), bounces and unsubscribes; for all time and, once the split's weights changed on the running campaign, for the leads the split routed since (leads the change moved to the other arm count in all time only, in their new arm). Each split also carries `replySeries`, its replies per arm over time. `since` and `to` keep only the leads that entered an arm in that range; leads waiting at a split are counted whatever the range. A lead counts in the arm it is in, whatever step it replied to. There is no winner and no significance test: `isSmallSample` is true below 20 replies across both arms, where a gap is most likely chance. Only the token owner's own campaigns resolve here. Rate limit: 30 requests/minute and 1,000/day per token owner, shared by every campaign, scheduled-send, campaign-template and knowledge-hub endpoint.\n\nErrors:\n- `404` `CAMPAIGN_NOT_FOUND` — No campaign with this id exists, it belongs to another account (including a campaign delegated to you or shared by your team's visibility settings), or it has been deleted.\n- `422` `VALIDATION_FAILED` — campaignId is not a 24-character hex id, since or to is not an ISO 8601 date-time, since is in the future, to is earlier than since, or timezone is not a known IANA name.\n- `429` `RATE_LIMITED` — More than 30 campaign requests in a minute, or 1,000 in a day, for this token owner (the bucket is shared by every /business/campaigns, /business/scheduled-sends, /business/campaign-templates and /business/knowledge-hubs call).\n- `500` `UNEXPECTED_ERROR` — An unhandled failure; the detail stays in our logs and is never returned.\n\nRequires one of the following token scopes: campaigns.","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/split-results","href":"/api-reference/campaigns/per-arm-results-of-a-campaigns-ab-splits"}]},{"group":"Campaign steps","pages":[{"title":"Add a sequence step","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/steps","href":"/api-reference/campaign-steps/add-a-sequence-step"},{"title":"Remove a sequence step","description":"Removes one sequence step; removing a `condition` step removes both of its lanes with it. The remaining steps are renumbered so `sequenceNumber` stays contiguous from 0. Queued sends already created for the removed step are not retro-actively deleted. Only the token owner may delete steps. Rate limit: 30 requests/minute and 1,000/day per token owner, shared by every campaign, scheduled-send, campaign-template and knowledge-hub endpoint.\n\nErrors:\n- `404` `CAMPAIGN_NOT_FOUND` — No campaign with this id exists, it belongs to another account (including a campaign delegated to you or shared by your team's visibility settings), or it has been deleted.\n- `404` `SEQUENCE_STEP_NOT_FOUND` — No step with this id belongs to this campaign.\n- `409` `SEQUENCE_BUSY` — Another change to this campaign's steps is still being saved. Retry in a few seconds.\n- `409` `SEQUENCE_STRUCTURE_LOCKED` — The campaign has started, or leads already walk it, and its sequence has a condition: its steps can no longer be removed.\n- `422` `CONDITION_ANCHOR_MISSING` — The step is the one a later condition checks (its nearest earlier linkedin_connection or email step).\n- `422` `CONDITION_DUPLICATE_ON_PATH` — Without the step, a later condition would check the same step for the same signal as an earlier condition on its path.\n- `422` `MESSAGE_FIRST_IN_CLICK_LANE` — Without the step, a linkedin_message would open a lane of a clicked_link condition, whose leads may not be connected yet.\n- `422` `VALIDATION_FAILED` — campaignId or stepId is not a 24-character hex id.\n- `429` `RATE_LIMITED` — More than 30 campaign requests in a minute, or 1,000 in a day, for this token owner (the bucket is shared by every /business/campaigns, /business/scheduled-sends, /business/campaign-templates and /business/knowledge-hubs call).\n- `500` `UNEXPECTED_ERROR` — An unhandled failure; the detail stays in our logs and is never returned.\n\nRequires one of the following token scopes: campaigns.","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/campaigns/{campaignId}/steps/{stepId}","href":"/api-reference/campaign-steps/remove-a-sequence-step"},{"title":"Copy one arm of an A/B split into the other","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/steps/{stepId}/copy-arm","href":"/api-reference/campaign-steps/copy-one-arm-of-an-ab-split-into-the-other"},{"title":"Render the step for a sample lead without saving or sending","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/steps/{stepId}/generate","href":"/api-reference/campaign-steps/render-the-step-for-a-sample-lead-without-saving-or-sending"},{"title":"Rebuild the AI topic plan across the campaign's steps","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/steps/regenerate-topics","href":"/api-reference/campaign-steps/rebuild-the-ai-topic-plan-across-the-campaigns-steps"}]},{"group":"Knowledge hubs","pages":[{"title":"List the token owner's knowledge hubs","deprecated":null,"version":null,"openapi":"/openapi.json get /business/knowledge-hubs","href":"/api-reference/knowledge-hubs/list-the-token-owners-knowledge-hubs"},{"title":"Create a knowledge hub from websites","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs","href":"/api-reference/knowledge-hubs/create-a-knowledge-hub-from-websites"},{"title":"Make a hub the default one","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs/default","href":"/api-reference/knowledge-hubs/make-a-hub-the-default-one"},{"title":"Facts learned from the team's communications","deprecated":null,"version":null,"openapi":"/openapi.json get /business/knowledge-hubs/learned-facts","href":"/api-reference/knowledge-hubs/facts-learned-from-the-teams-communications"},{"title":"Discard a learned fact","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/knowledge-hubs/learned-facts/{factId}","href":"/api-reference/knowledge-hubs/discard-a-learned-fact"},{"title":"Correct a learned fact","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/knowledge-hubs/learned-facts/{factId}","href":"/api-reference/knowledge-hubs/correct-a-learned-fact"},{"title":"A hub's full detail","deprecated":null,"version":null,"openapi":"/openapi.json get /business/knowledge-hubs/{hubId}","href":"/api-reference/knowledge-hubs/a-hubs-full-detail"},{"title":"Delete a hub","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/knowledge-hubs/{hubId}","href":"/api-reference/knowledge-hubs/delete-a-hub"},{"title":"Update a hub's name, websites, or notes","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/knowledge-hubs/{hubId}","href":"/api-reference/knowledge-hubs/update-a-hubs-name-websites-or-notes"},{"title":"Re-crawl one of the hub's websites","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs/{hubId}/refresh","href":"/api-reference/knowledge-hubs/re-crawl-one-of-the-hubs-websites"},{"title":"The hub's knowledge pages","deprecated":null,"version":null,"openapi":"/openapi.json get /business/knowledge-hubs/{hubId}/pages","href":"/api-reference/knowledge-hubs/the-hubs-knowledge-pages"},{"title":"Add a custom knowledge page","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs/{hubId}/pages","href":"/api-reference/knowledge-hubs/add-a-custom-knowledge-page"},{"title":"Remove a knowledge page","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/knowledge-hubs/{hubId}/pages/{pageId}","href":"/api-reference/knowledge-hubs/remove-a-knowledge-page"},{"title":"Edit a page's title or content","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/knowledge-hubs/{hubId}/pages/{pageId}","href":"/api-reference/knowledge-hubs/edit-a-pages-title-or-content"},{"title":"Rebuild a page from the hub's sources","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs/{hubId}/pages/{pageId}/regenerate","href":"/api-reference/knowledge-hubs/rebuild-a-page-from-the-hubs-sources"},{"title":"Attach a document to one of the hub's notes","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs/{hubId}/attachments","href":"/api-reference/knowledge-hubs/attach-a-document-to-one-of-the-hubs-notes"},{"title":"A download URL for a note's attachment","deprecated":null,"version":null,"openapi":"/openapi.json get /business/knowledge-hubs/{hubId}/attachments/{noteId}","href":"/api-reference/knowledge-hubs/a-download-url-for-a-notes-attachment"},{"title":"Remove a note's attachment","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/knowledge-hubs/{hubId}/attachments/{noteId}","href":"/api-reference/knowledge-hubs/remove-a-notes-attachment"}]},{"group":"Analytics","pages":[{"title":"Campaigns analytics roll-up","deprecated":null,"version":null,"openapi":"/openapi.json get /business/analytics/campaigns","href":"/api-reference/analytics/campaigns-analytics-roll-up"},{"title":"Dialer analytics roll-up","deprecated":null,"version":null,"openapi":"/openapi.json get /business/analytics/dialer","href":"/api-reference/analytics/dialer-analytics-roll-up"},{"title":"Enrichment analytics roll-up","deprecated":null,"version":null,"openapi":"/openapi.json get /business/analytics/enrichment","href":"/api-reference/analytics/enrichment-analytics-roll-up"},{"title":"Website intent analytics roll-up","deprecated":null,"version":null,"openapi":"/openapi.json get /business/analytics/website-intent","href":"/api-reference/analytics/website-intent-analytics-roll-up"},{"title":"Agents analytics roll-up","deprecated":null,"version":null,"openapi":"/openapi.json get /business/analytics/agents","href":"/api-reference/analytics/agents-analytics-roll-up"}]},{"group":"Website intent","pages":[{"title":"The deanonymized visitor feed","deprecated":null,"version":null,"openapi":"/openapi.json get /business/website-visitors","href":"/api-reference/website-intent/the-deanonymized-visitor-feed"},{"title":"Tracking config: domains, pages, script, credit limit","deprecated":null,"version":null,"openapi":"/openapi.json get /business/website-tracking","href":"/api-reference/website-intent/tracking-config:-domains-pages-script-credit-limit"},{"title":"Update tracked domains/pages or the monthly credit limit","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/website-tracking","href":"/api-reference/website-intent/update-tracked-domainspages-or-the-monthly-credit-limit"}]},{"group":"Account","pages":[{"title":"Connected sending accounts by channel","deprecated":null,"version":null,"openapi":"/openapi.json get /business/accounts","href":"/api-reference/account/connected-sending-accounts-by-channel"},{"title":"Teammates (id, name, email)","deprecated":null,"version":null,"openapi":"/openapi.json get /business/team/members","href":"/api-reference/account/teammates-id-name-email"},{"title":"The writing styles AI campaigns accept","deprecated":null,"version":null,"openapi":"/openapi.json get /business/writing-styles","href":"/api-reference/account/the-writing-styles-ai-campaigns-accept"},{"title":"Which CRMs the team has connected","deprecated":null,"version":null,"openapi":"/openapi.json get /business/integrations","href":"/api-reference/account/which-crms-the-team-has-connected"},{"title":"Poll any async job","deprecated":null,"version":null,"openapi":"/openapi.json get /business/jobs/{jobId}","href":"/api-reference/account/poll-any-async-job"},{"title":"The credit spend ledger","deprecated":null,"version":null,"openapi":"/openapi.json post /business/credits/usage","href":"/api-reference/account/the-credit-spend-ledger"},{"title":"Get the token owner's identity","deprecated":null,"version":null,"openapi":"/openapi.json get /business/me","href":"/api-reference/account/get-the-token-owners-identity"},{"title":"Get the token owner's credit balance","deprecated":null,"version":null,"openapi":"/openapi.json get /business/credits","href":"/api-reference/account/get-the-token-owners-credit-balance"}]},{"group":"Data","pages":[{"title":"Get your key's usage plan","deprecated":null,"version":null,"openapi":"/openapi.json get /business/data/pricing","href":"/api-reference/data/get-your-keys-usage-plan"},{"title":"Count people matching a search (free)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/people/count","href":"/api-reference/data/count-people-matching-a-search-free"},{"title":"Count companies matching a search (free)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/companies/count","href":"/api-reference/data/count-companies-matching-a-search-free"},{"title":"Find a company's domain, LinkedIn page and logo (free)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/companies/resolve","href":"/api-reference/data/find-a-companys-domain-linkedin-page-and-logo-free"},{"title":"Find a person's email","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/people/email","href":"/api-reference/data/find-a-persons-email"},{"title":"Find a person's phone","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/people/phone","href":"/api-reference/data/find-a-persons-phone"},{"title":"Verify an email address","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/emails/verify","href":"/api-reference/data/verify-an-email-address"},{"title":"Find emails and phones for up to 100 people","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/people/enrich-jobs","href":"/api-reference/data/find-emails-and-phones-for-up-to-100-people"},{"title":"Get a people enrichment job's progress and rows","deprecated":null,"version":null,"openapi":"/openapi.json get /business/data/people/enrich-jobs/{jobId}","href":"/api-reference/data/get-a-people-enrichment-jobs-progress-and-rows"}]},{"group":"Prospect search","pages":[{"title":"Get the accepted prospect-search filter values","deprecated":null,"version":null,"openapi":"/openapi.json get /business/prospects/filter-options","href":"/api-reference/prospect-search/get-the-accepted-prospect-search-filter-values"},{"title":"Suggest values for a free-text search field","deprecated":null,"version":null,"openapi":"/openapi.json get /business/prospects/autocomplete","href":"/api-reference/prospect-search/suggest-values-for-a-free-text-search-field"},{"title":"Run a people search","deprecated":null,"version":null,"openapi":"/openapi.json post /business/prospects/search","href":"/api-reference/prospect-search/run-a-people-search"},{"title":"Save people-search results into a list","deprecated":null,"version":null,"openapi":"/openapi.json post /business/prospects/search/save-to-list","href":"/api-reference/prospect-search/save-people-search-results-into-a-list"}]},{"group":"Scheduled sends","pages":[{"title":"The campaign's send queue by status","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/scheduled-sends","href":"/api-reference/scheduled-sends/the-campaigns-send-queue-by-status"},{"title":"Edit a queued send's copy or time before it goes out","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/scheduled-sends/{sendId}","href":"/api-reference/scheduled-sends/edit-a-queued-sends-copy-or-time-before-it-goes-out"},{"title":"Skip one queued send","deprecated":null,"version":null,"openapi":"/openapi.json post /business/scheduled-sends/{sendId}/skip","href":"/api-reference/scheduled-sends/skip-one-queued-send"},{"title":"Approve queued sends awaiting review","deprecated":null,"version":null,"openapi":"/openapi.json post /business/scheduled-sends/approve","href":"/api-reference/scheduled-sends/approve-queued-sends-awaiting-review"},{"title":"Decline queued sends awaiting review","deprecated":null,"version":null,"openapi":"/openapi.json post /business/scheduled-sends/decline","href":"/api-reference/scheduled-sends/decline-queued-sends-awaiting-review"}]},{"group":"Campaign templates","pages":[{"title":"The workspace's saved campaign templates","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaign-templates","href":"/api-reference/campaign-templates/the-workspaces-saved-campaign-templates"},{"title":"Save a campaign's sequence as a reusable template","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaign-templates","href":"/api-reference/campaign-templates/save-a-campaigns-sequence-as-a-reusable-template"},{"title":"Delete a template","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/campaign-templates/{campaignTemplateId}","href":"/api-reference/campaign-templates/delete-a-template"}]},{"group":"Agents","pages":[{"title":"The agent kinds the wizard offers","deprecated":null,"version":null,"openapi":"/openapi.json get /business/agents/signal-types","href":"/api-reference/agents/the-agent-kinds-the-wizard-offers"},{"title":"The token owner's agents across every kind","deprecated":null,"version":null,"openapi":"/openapi.json get /business/agents","href":"/api-reference/agents/the-token-owners-agents-across-every-kind"},{"title":"Create a web monitor agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/web-monitor","href":"/api-reference/agents/create-a-web-monitor-agent"},{"title":"Create a person starting new job agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/person-starting-new-job","href":"/api-reference/agents/create-a-person-starting-new-job-agent"},{"title":"Create a linkedin posts agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/linkedin-posts","href":"/api-reference/agents/create-a-linkedin-posts-agent"},{"title":"Create a person discovery via filters agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/person-discovery-via-filters","href":"/api-reference/agents/create-a-person-discovery-via-filters-agent"},{"title":"Create a job postings agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/job-postings","href":"/api-reference/agents/create-a-job-postings-agent"},{"title":"Create a job posting in location agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/job-posting-in-location","href":"/api-reference/agents/create-a-job-posting-in-location-agent"},{"title":"Create a first person hired in company department agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/first-person-hired-in-company-department","href":"/api-reference/agents/create-a-first-person-hired-in-company-department-agent"},{"title":"Create a first person hired internationally agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/first-person-hired-internationally","href":"/api-reference/agents/create-a-first-person-hired-internationally-agent"},{"title":"Create a company headcount growth agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/company-headcount-growth","href":"/api-reference/agents/create-a-company-headcount-growth-agent"},{"title":"Create a company headcount growth over baseline agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/company-headcount-growth-over-baseline","href":"/api-reference/agents/create-a-company-headcount-growth-over-baseline-agent"},{"title":"Create a company department headcount agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/company-department-headcount","href":"/api-reference/agents/create-a-company-department-headcount-agent"},{"title":"Create a company employee job location in two countries agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/company-employee-job-location-in-two-countries","href":"/api-reference/agents/create-a-company-employee-job-location-in-two-countries-agent"},{"title":"Create a funding announcements agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/funding-announcements","href":"/api-reference/agents/create-a-funding-announcements-agent"},{"title":"Create a people watcher agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/people-watcher","href":"/api-reference/agents/create-a-people-watcher-agent"},{"title":"Create a companies watcher agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/companies-watcher","href":"/api-reference/agents/create-a-companies-watcher-agent"},{"title":"Create a job changes watcher agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/job-changes-watcher","href":"/api-reference/agents/create-a-job-changes-watcher-agent"},{"title":"Create a linkedin profile agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/linkedin-profile","href":"/api-reference/agents/create-a-linkedin-profile-agent"},{"title":"Create a linkedin post agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/linkedin-post","href":"/api-reference/agents/create-a-linkedin-post-agent"},{"title":"Canonical values for agent config filters","deprecated":null,"version":null,"openapi":"/openapi.json get /business/agents/autocomplete","href":"/api-reference/agents/canonical-values-for-agent-config-filters"},{"title":"An agent's config as the drawer shows it","deprecated":null,"version":null,"openapi":"/openapi.json get /business/agents/{agentId}","href":"/api-reference/agents/an-agents-config-as-the-drawer-shows-it"},{"title":"Delete an agent (409 while a run is processing)","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/agents/{agentId}","href":"/api-reference/agents/delete-an-agent-409-while-a-run-is-processing"},{"title":"Update a draft agent's config (partial)","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/agents/{agentId}","href":"/api-reference/agents/update-a-draft-agents-config-partial"},{"title":"Start a draft agent (spends credits)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/{agentId}/activate","href":"/api-reference/agents/start-a-draft-agent-spends-credits"},{"title":"Pause an agent (one-way, there is no resume)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/{agentId}/stop","href":"/api-reference/agents/pause-an-agent-one-way-there-is-no-resume"},{"title":"Copy an agent as a fresh draft","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/{agentId}/duplicate","href":"/api-reference/agents/copy-an-agent-as-a-fresh-draft"}]},{"group":"Research","pages":[{"title":"The research providers a run can use","deprecated":null,"version":null,"openapi":"/openapi.json get /business/research/providers","href":"/api-reference/research/the-research-providers-a-run-can-use"},{"title":"Research runs currently in flight","deprecated":null,"version":null,"openapi":"/openapi.json get /business/research/runs","href":"/api-reference/research/research-runs-currently-in-flight"},{"title":"Start a Deep Research run","deprecated":null,"version":null,"openapi":"/openapi.json post /business/research/runs","href":"/api-reference/research/start-a-deep-research-run"},{"title":"A research run's state, report, and result list","deprecated":null,"version":null,"openapi":"/openapi.json get /business/research/runs/{runId}","href":"/api-reference/research/a-research-runs-state-report-and-result-list"},{"title":"A research run's progress events","deprecated":null,"version":null,"openapi":"/openapi.json get /business/research/runs/{runId}/events","href":"/api-reference/research/a-research-runs-progress-events"},{"title":"Cancel an in-flight research run","deprecated":null,"version":null,"openapi":"/openapi.json post /business/research/runs/{runId}/cancel","href":"/api-reference/research/cancel-an-in-flight-research-run"}]},{"group":"Company search","pages":[{"title":"Get the accepted company-search filter values","deprecated":null,"version":null,"openapi":"/openapi.json get /business/companies/filter-options","href":"/api-reference/company-search/get-the-accepted-company-search-filter-values"},{"title":"Suggest values for company and location filters","deprecated":null,"version":null,"openapi":"/openapi.json get /business/companies/autocomplete","href":"/api-reference/company-search/suggest-values-for-company-and-location-filters"},{"title":"Run a company search","deprecated":null,"version":null,"openapi":"/openapi.json post /business/companies/search","href":"/api-reference/company-search/run-a-company-search"},{"title":"Save company-search results into a list","deprecated":null,"version":null,"openapi":"/openapi.json post /business/companies/search/save-to-list","href":"/api-reference/company-search/save-company-search-results-into-a-list"}]},{"group":"Saved searches","pages":[{"title":"List the token owner's saved searches","deprecated":null,"version":null,"openapi":"/openapi.json get /business/saved-searches","href":"/api-reference/saved-searches/list-the-token-owners-saved-searches"},{"title":"Create a saved search","deprecated":null,"version":null,"openapi":"/openapi.json post /business/saved-searches","href":"/api-reference/saved-searches/create-a-saved-search"},{"title":"Get one saved search","deprecated":null,"version":null,"openapi":"/openapi.json get /business/saved-searches/{savedSearchId}","href":"/api-reference/saved-searches/get-one-saved-search"},{"title":"Delete a saved search","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/saved-searches/{savedSearchId}","href":"/api-reference/saved-searches/delete-a-saved-search"},{"title":"Rename a saved search or replace its filters","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/saved-searches/{savedSearchId}","href":"/api-reference/saved-searches/rename-a-saved-search-or-replace-its-filters"},{"title":"Replay a saved search","deprecated":null,"version":null,"openapi":"/openapi.json post /business/saved-searches/{savedSearchId}/run","href":"/api-reference/saved-searches/replay-a-saved-search"}]},{"group":"Folders","pages":[{"title":"List the token owner's list folders of one kind","deprecated":null,"version":null,"openapi":"/openapi.json get /business/folders","href":"/api-reference/folders/list-the-token-owners-list-folders-of-one-kind"},{"title":"Create a list folder","deprecated":null,"version":null,"openapi":"/openapi.json post /business/folders","href":"/api-reference/folders/create-a-list-folder"},{"title":"Delete a folder (its lists move to the root)","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/folders/{folderId}","href":"/api-reference/folders/delete-a-folder-its-lists-move-to-the-root"},{"title":"Rename a folder","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/folders/{folderId}","href":"/api-reference/folders/rename-a-folder"}]},{"group":"Contacts","pages":[{"title":"Resolve the caller's contact by LinkedIn URL","deprecated":null,"version":null,"openapi":"/openapi.json post /business/contacts/resolve","href":"/api-reference/contacts/resolve-the-callers-contact-by-linkedin-url"},{"title":"Set a contact's primary email and/or phone","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/contacts/{contactId}","href":"/api-reference/contacts/set-a-contacts-primary-email-andor-phone"},{"title":"A contact's activity timeline","deprecated":null,"version":null,"openapi":"/openapi.json get /business/contacts/{contactId}/activities","href":"/api-reference/contacts/a-contacts-activity-timeline"},{"title":"Start an async duplicate-contact scan (returns a jobId)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/contacts/dedupe-scan","href":"/api-reference/contacts/start-an-async-duplicate-contact-scan-returns-a-jobid"},{"title":"Merge the duplicate groups a completed scan found","deprecated":null,"version":null,"openapi":"/openapi.json post /business/contacts/dedupe-merge","href":"/api-reference/contacts/merge-the-duplicate-groups-a-completed-scan-found"},{"title":"Poll a dedupe scan or merge job (groups / totals when completed)","deprecated":null,"version":null,"openapi":"/openapi.json get /business/contacts/dedupe-jobs/{jobId}","href":"/api-reference/contacts/poll-a-dedupe-scan-or-merge-job-groups-totals-when-completed"}]}]}]},"basePath":"","title":"Add a sequence step - Fuse API","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-B7XKH4J3.js","utils-lOYzL7z-.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DF6jUUIM.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dpsj5f7C.js","snippetPresets-CYeiDe8v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CUFz1YZ_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D8H_iLS4.js","shallow-DdluZBHX.js","getApiPlaygroundDisplay-B9922vev.js","CodeSnippet-CMoRNGYs.js","CodeSnippets-DwyrPHuw.js","Page-DSVu9Ucl.js","getPastedJson-G-zIvlHh.js","icon-B03fnEy0.js","MethodPill-CW7teklc.js","DuplicateIcon-CtO8eekd.js","createIcon-DZTKdM_A.js","DynamicMarkdown-D5M2At0B.js","SectionHeading-C_2NaA2U.js","axios-vUo_bRtp.js","Markdown-D7QRHV3m.js","clsx-D1Z-ELXV.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-lvhuD9Du.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CKfC4ywL.js"]}