Create an onboarding flow
Create a draft flow, not live yet. Blank, it has one form task with an empty form. With template: true it's the "3-task onboarding" template: two starter forms and an empty agreement (named "3-task onboarding"; name is ignored). Returns the flow as brand.onboarding.flow.get does. To build a flow: create it (brand.onboarding.flows.create), add a form for each form task (brand.onboarding.flow.forms.create) and write its questions (brand.onboarding.form.update), write agreements (brand.onboarding.agreements.create), set the tasks and settings (brand.onboarding.flow.draft.update), then publish with goLive (brand.onboarding.flow.publish).
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 <= lengthapplication/json- body
name?stringUp to 120 characters. Default "New flow".
length <= 120template?booleanStart from the 3-task onboarding template.
Success.
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' \ -H 'Content-Type: application/json' \ -d '{}'{ "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" } ]}Rename a flow or change its note PATCH
Change a flow's name or its internal note, straight away (no publish needed). The settings creators feel (completion mode, join group, welcome and finish messages) are part of the draft: change them with brand.onboarding.flow.draft.update, then publish. To change only the join group straight away, use brand.onboarding.flow.join-group.set.
List onboarding flows GET
The brand's onboarding flows, as on Onboarding › Flows: each flow's tasks in order, its join group, its invite links with their sign-up URLs and the group each one places joiners in, and how many creators are in it or joined through it. Task and link ids filter GET .../onboarding/submissions.