---
title: "Switch the account's workspace role."
method: PUT
path: "/account/workspace-role"
tags: ["Account"]
---

# Switch the account's workspace role.

`PUT /account/workspace-role`

## Request

- Base URL: `https://docs.sleeperhit.studio/api/v1`
- URL: `https://docs.sleeperhit.studio/api/v1/account/workspace-role`
- Auth: HTTP bearer

Your workspace role (Screenwriter, Content creator or Business) decides how the workspace leans: which areas show, how Slug coaches you, and what kind of project New Project starts with (a Screenwriter's is always a story; product projects are for Content creator and Business). One account and one Studio Credit balance across every role. Switching is allowed only on accounts an admin has turned it on for, and every switch is recorded. 403 `role_switch_not_enabled` unless an admin allowed this account to switch (state: asking again changes nothing). The same role twice changes nothing and records nothing (`changed: false`). Credits, projects, Slug's persona and the craft focus stay. Audited. Scope: `account:write`. Free.

## Request body

- SetWorkspaceRoleRequest
  - `role` 'writer' | 'creator' | 'business', required: `writer` (Screenwriter), `creator` (Content creator) or `business` (Business).

## Response `200`

The role now, and whether it changed.

- WorkspaceRoleChange
  - `role` 'writer' | 'creator' | 'business' | 'null', nullable, required: Null until first-run onboarding has picked a track.
  - `label` string, nullable, required: "Screenwriter", "Content creator" or "Business".
  - `workspaceTrack` string, nullable, required: The stored track the role is read from (`professional_writer` | `storyteller`).
  - `creatorContext` string, nullable, required: The stored creator context the role is read from (`self` | `company`).
  - `craftFocus` 'screenwriter' | 'novelist' | 'advertiser' | 'brand_marketer' | 'content_creator' | 'comms' | 'founder' | 'journalist' | 'null', nullable, required: The craft focus Slug coaches toward (set it with PUT /account/craft-focus). A switch never changes it.
  - `canSwitch` boolean, required: Whether an admin allowed this account to switch its role.
  - `defaultProjectKind` 'story' | 'product', required: The kind a new project starts as when none is named.
  - `options` object[], required
    - `role` 'writer' | 'creator' | 'business', required
    - `label` string, required
    - `description` string, required
  - `changed` boolean, required: False when the account already had the role: nothing was written or recorded.
  - `previousRole` 'writer' | 'creator' | 'business' | 'null', nullable, required

## Other responses

- `401`: Missing, malformed, revoked, or expired API key.
- `403`: API key is valid but lacks the scope, is blocked by IP allowlist, or the account is disabled.
- `429`: Rate limit for this API key + IP + route family was exceeded.
- `500`: The API failed unexpectedly. Safe to retry with the same Idempotency-Key.

---

[API](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api.md) · [All operations](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/revisions/4534f5d25540?raw)
