Change a flow's draft: tasks and settings
Save changes to a flow's draft, as the flow editor does. Creators see nothing until the flow is published (brand.onboarding.flow.publish). Send revision and only the parts that change: tasks replaces the whole task list (in order, at most 20), each setting replaces that setting. Read the current draft with brand.onboarding.flow.get. The draft's revision as you last read it. If anyone has saved the draft since, nothing is saved and the call answers 409 conflict with details.currentRevision: read it again, reapply your change, and retry. A task pointing at a form of another flow, another brand's agreement or an unknown group is refused (400). An archived flow can't be edited (409). Returns the new revision, the saved tasks (with the ids made for new ones) and what still blocks publishing.
bearerAuth onboarding:writeAuthorizationBearer <token>Personal access token. Scopes: account:read, creator:read, creator:earnings, managed:read, coach:read, brand:read, creators:read, videos:read, analytics:read, onboarding:read, onboarding:signatures, engagement:read, support:read, integrations:read, payouts:read, funds:read, billing:read, groups:write, videos:write, onboarding:write, sync:write, payouts:write.
Scope: onboarding:write
brandId*stringA brand id from GET /me or GET /creator/brands.
1 <= lengthflowId*stringA flow id from GET /brands/{brandId}/onboarding/flows.
1 <= lengthapplication/json- body
revision*integerThe draft's revision as you last read it. If anyone has saved the draft since, nothing is saved and the call answers 409 conflict with details.currentRevision: read it again, reapply your change, and retry.
0 <= value <= 9007199254740991tasks?array<>The full task list, in order. Replaces the draft's tasks.
items <= 20completionMode?string"auto_join": creators join the brand as soon as they finish every task; "approval": they wait for an admin to approve them (brand.onboarding.submissions.approve).
"auto_join""approval"joinGroupId?|A group id from GET .../creator-groups: creators who join go into it, whatever link they used. Null: none.
welcomeMessage?|Shown before the first task, up to 2,000 characters. Null: none.
finishMessage?|Shown once every task is done, markdown, up to 4,000 characters. Null: the default.
preJoinVideosIrrelevant?booleanMark every post a joining creator made before they joined as irrelevant.
Success.
application/json- response
revision*numberThe draft's new revision.
tasks*array<>unpublishedChanges*booleanproblems*array<>What still blocks publishing. Empty when it can be published.
curl -X PATCH 'https://example.com/api/v1/brands/string/onboarding/flows/string/draft' \ -H 'Content-Type: application/json' \ -d '{ "revision": 0}'{ "revision": 0, "tasks": [ { "id": "string", "kind": "form", "title": "string", "description": "string", "deadlineHours": 0, "formId": "string", "agreementId": "string", "infoMarkdown": "string" } ], "unpublishedChanges": true, "problems": [ { "taskId": "string", "message": "string" } ]}Delete an onboarding flow DELETE
Delete a flow for good, with its tasks, forms and every submission (answers, signed agreements, history). Creators who already joined stay in the brand. Its links stop working: a link a creator joined through or a referral payout points at is kept but switched off; the rest are deleted, and so are pending invitations to the flow. When the flow has submissions, `confirmName` must be the flow's exact name. Pausing or archiving keeps everything. Preview with dryRun to see what would be erased.
Duplicate an onboarding flow POST
Copy a flow into a new draft named "<name> (copy)": the same tasks (with new task ids) and settings, with copies of its forms' drafts. Links and submissions aren't copied. Returns the copy.