---
title: "Set or clear the account's craft focus, the kind of work Slug coaches toward."
method: PUT
path: "/account/craft-focus"
tags: ["Account"]
---

# Set or clear the account's craft focus, the kind of work Slug coaches toward.

`PUT /account/craft-focus`

## Request

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

Your craft focus is the kind of work Slug coaches you toward, in every conversation: `screenwriter` (Screen & Television), `novelist` (Fiction & Prose), `advertiser` (Advertising & Campaigns), `brand_marketer` (Brand & Marketing), `content_creator` (Content & Social), `comms` (Communications & PR), `founder` (Founder & Pitch), `journalist` (Narrative Nonfiction). Send a key or plain words ("advertising", "I pitch investors"); a value that matches none is refused with the choices. Send null or an empty string to clear it. Slug also sets it as it learns what you make. Free. The same focus twice changes nothing (`changed: false`). Read it on GET /account/workspace-role as `craftFocus`. Scope: `account:write`.

## Request body

- SetCraftFocusRequest
  - `craftFocus` string, nullable, required: A key (`screenwriter`, `novelist`, `advertiser`, `brand_marketer`, `content_creator`, `comms`, `founder`, `journalist`) or plain words ("advertising", "I pitch investors"), matched to a key; one that matches none is refused 400 `validation_failed` with `details.options`. Null or an empty string clears the focus.

## Response `200`

The focus now, whether it changed, and the choices.

- CraftFocusChange
  - `craftFocus` 'screenwriter' | 'novelist' | 'advertiser' | 'brand_marketer' | 'content_creator' | 'comms' | 'founder' | 'journalist' | 'null', nullable, required: The focus now; null when cleared.
  - `label` string, nullable, required: What the focus is called ("Advertising & Campaigns").
  - `changed` boolean, required: False when the account already had this focus: nothing was written.
  - `previousCraftFocus` 'screenwriter' | 'novelist' | 'advertiser' | 'brand_marketer' | 'content_creator' | 'comms' | 'founder' | 'journalist' | 'null', nullable, required
  - `options` object[], required
    - `key` 'screenwriter' | 'novelist' | 'advertiser' | 'brand_marketer' | 'content_creator' | 'comms' | 'founder' | 'journalist', required
    - `label` string, required
    - `scope` string, required: One line on what the focus covers.

## 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)
