Update Launch Profile
PUT/api/launch-plan/profile
Replaces the profile. Steps for newly applicable modules are added (or restored, with their history, if an earlier profile change set them aside); steps that no longer apply are marked not needed with reason profile_changed — never deleted.
launch_plan:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
profile (required object):
channels— list of channel names (up to 30).fulfillment_model— any ofown_warehouse,three_pl,dropship,fba.catalog_shape— any ofkits,manufacturing,configured_products,simple.accounting_system—qbo|xero|none.income_tool—a2x|sku|none.accounting_timing—at_launch|post_stable.brands— integer 1–100.b2b_terms— boolean.fulfillment_cutover— accepted but ignored: the stored value is kept whether the field is sent, changed or left out. Only signing off (or reopening) thefulfillment_cutover_decisioncheckpoint changes it.
Omitted fields keep their defaults. The profile decides which modules apply and therefore which steps the plan holds.
dry_run (optional boolean) — when true nothing changes and the response is {data: {added, removed, kept, modules}}: the steps that would be added / set aside ({key, title, module}), how many stay, and the resolved modules. Otherwise the change is applied and the response is {data: <launch plan>, exists: true, diff: {added, removed, kept, modules}}.
404 {exists: false, message} when the account has no plan.
Authentication: Requires Bearer token with the launch_plan:write scope. The user needs the launch_plan.manage permission.
Request
Responses
- 200
- 401
- 403
- 404
- 422
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Not Found
Response Headers
Validation failed — the body is a field → messages map (Laravel shape) or the platform envelope with a stable machine-readable code. Fix the payload and resubmit.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.