Duplicate an onboarding flow
Copy a flow into a new draft named " (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.
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 <= lengthSuccess.
application/json- response
id*stringname*stringnote*|An internal note for admins. Creators never see it.
status*string"draft", "active", "paused" or "archived". Only active flows take new creators.
updatedAt*stringlive*What creators get now: the last published version. Empty tasks if never published.
draft*The working copy. Publishing makes it live.
unpublishedChanges*booleanPublishing would change what creators see: the draft's tasks or settings, a form's draft, or an agreement's draft.
problems*array<>What blocks publishing now. Empty when the draft can be published.
forms*array<>The forms this flow owns (one per form task, plus any not yet used by a task).
links*array<>curl -X POST 'https://example.com/api/v1/brands/string/onboarding/flows/string/duplicate'{ "id": "string", "name": "string", "note": "string", "status": "string", "updatedAt": "string", "live": { "completionMode": "auto_join", "joinGroupId": "string", "welcomeMessage": "string", "finishMessage": "string", "preJoinVideosIrrelevant": true, "tasks": [ { "id": "string", "kind": "form", "title": "string", "description": "string", "deadlineHours": 0, "formId": "string", "agreementId": "string", "infoMarkdown": "string" } ] }, "draft": { "revision": 0, "completionMode": "auto_join", "joinGroupId": "string", "welcomeMessage": "string", "finishMessage": "string", "preJoinVideosIrrelevant": true, "tasks": [ { "id": "string", "kind": "form", "title": "string", "description": "string", "deadlineHours": 0, "formId": "string", "agreementId": "string", "infoMarkdown": "string" } ] }, "unpublishedChanges": true, "problems": [ { "taskId": "string", "message": "string" } ], "forms": [ { "id": "string", "name": "string", "revision": 0, "archived": true, "publishedVersion": 0, "unpublishedChanges": true } ], "links": [ { "id": "string", "flowId": "string", "url": "string", "label": "string", "active": true, "uses": 0, "maxUses": 0, "expiresAt": "string", "defaultGroupId": "string", "createdAt": "string" } ]}Change a flow's draft: tasks and settings PATCH
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.
Add a form to a flow POST
Make a new, empty form owned by this flow (not an archived one; 50 at most). It isn't asked of anyone until a form task uses it: add a task with this `formId` through brand.onboarding.flow.draft.update, write its questions with brand.onboarding.form.update, then publish the flow.