---
title: "Change the writer's profile."
method: PATCH
path: "/account/profile"
tags: ["Account"]
---

# Change the writer's profile.

`PATCH /account/profile`

## Request

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

A writer's profile: their name and location, their public portfolio page (`publicProfileEnabled`, its URL `publicSlug`, `publicHeadline`, website, IMDb and Instagram links, up to 12 `featuredScriptIds`) and the discovery details (summary, specialties, genres, formats, accolades, credits, availability, how to reach them). An update changes only the fields it sends; an empty string clears a text field. Turning the page public screens what it would show first, and a URL another page holds is refused. Free. Answers the profile as it now reads. A URL another page holds, a reserved URL, or a featured script the writer does not own is refused `validation_failed` with `details.field`. Naturally idempotent. Scope: `account:write`.

## Request body

- WriterProfileUpdateRequest: Only the fields sent change; an empty string clears a text field or link.
  - `name` string
  - `location` string
  - `publicProfileEnabled` boolean: Turn the public page on (what it would show is screened first) or off.
  - `publicSlug` string: The public page's URL; made URL-safe, refused when reserved or taken.
  - `publicHeadline` string
  - `websiteUrl` union
    - string, uri
    - ''
  - `imdbUrl` union
    - string, uri
    - ''
  - `instagramUrl` union
    - string, uri
    - ''
  - `featuredScriptIds` string[]: Scripts (their ids) the public page features, in order; each must be the writer's own.
  - `discoverySummary` string
  - `discoverySpecialties` string[]
  - `discoveryGenres` string[]
  - `discoveryFormats` string[]
  - `discoveryAccolades` string[]
  - `discoveryCredits` string[]
  - `discoveryAvailability` string
  - `discoveryContactPreference` string

## Response `200`

The profile as it now reads.

- WriterProfileResponse
  - `profile` WriterProfile, required
    - `name` string, nullable, required
    - `location` string, nullable, required
    - `publicProfileEnabled` boolean, required: Whether the public portfolio page is on.
    - `publicSlug` string, nullable, required: The public page's URL: https://sleeperhit.studio/{publicSlug}.
    - `publicHeadline` string, nullable, required
    - `websiteUrl` string, nullable, required
    - `imdbUrl` string, nullable, required
    - `instagramUrl` string, nullable, required
    - `featuredScriptIds` string[], required
    - `discoverySummary` string, nullable, required
    - `discoverySpecialties` string[], required
    - `discoveryGenres` string[], required
    - `discoveryFormats` string[], required
    - `discoveryAccolades` string[], required
    - `discoveryCredits` string[], required
    - `discoveryAvailability` string, nullable, required
    - `discoveryContactPreference` string, nullable, required

## Other responses

- `400`: Request payload failed validation. The error message names the offending field.
- `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/86e084144cef?raw)
