Get an onboarding flow with its draft
One flow as its editor sees it: the live version creators get, the draft (tasks and settings) with its revision, whether publishing would change anything and what blocks it, the forms the flow owns with their revisions, and its sign-up links. Read this before changing the draft. 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:readAuthorizationBearer <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:read
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 GET 'https://example.com/api/v1/brands/string/onboarding/flows/string'{ "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" } ]}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.
Set or clear the group a flow puts joiners in POST
Change the creator group a flow puts new joiners in, straight away, without editing the draft and publishing. The flow's group wins over a link's own group; null clears it, so each link's own group applies again. The live flow and its draft both change (the draft's revision goes up, so the next publish keeps the new group), and creators partway through move onto it as they would on publish (`updatedSubmissions`), so they join the new group too. Creators already waiting for approval keep the group of the version they finished, and creators who already joined stay where they are. The group must be one of the brand's (400 `bad_group`); an archived flow answers 409. Returns the flow's group and where each of its links now places joiners. With ?dryRun=true nothing is written: the answer shows the live and draft group before, the group after, each link's placement before and after, and how many creators are in progress or waiting for approval.