Projects

Update a story project.

Partial update. Only the supplied fields are modified. metadata is MERGED into what is stored, never written over it: a key you send is set, a key you send as null is removed, a key you leave out is kept, and metadata: null removes every key you can set. metadata.seasons (the project's named seasons) is kept whatever you send, and a patch that names it is refused with 400 validation_failed — create a season with POST /story-projects/{projectId}/seasons and move an episode with PATCH /scripts/{scriptId} seasonNumber. Pass archived: true to archive (or false to unarchive). brandLogo sets the project's brand logo ({ base64, contentType? } or { sourceUrl }: a PNG, JPEG or WebP of up to 2 MB and 4096 pixels on a side, decoded by the server and stored as its own clean copy on the studio's media host) or, as null, removes it; the project returns its address as brandLogoUrl, and a closing sequence can end on it (logoCard). A malformed logo is refused with 400 validation_failed. workspaceRole (writer | creator | business) moves the project to that role's list in the sidebar's switcher; it never changes the project's kind. A kind: product change from a Screenwriter account is refused with 403 product_kind_not_for_role.

patch/story-projects/{projectId}

Request

  • Base URL: https://docs.sleeperhit.studio/api/v1
  • URL: https://docs.sleeperhit.studio/api/v1/story-projects/{projectId}
  • Auth: HTTP bearer

Request body

namestring
descriptionstring nullable
metadataobject nullable

Your own JSON for cross-reference, MERGED into what is stored: a key you send is set, a key sent as null is removed, a key left out is kept; null removes every key you can set. Keys the platform reads: coverageCalibrations (up to 5 names, e.g. ["comedy"]) opts this project's screenplay coverage into the series coverage calibrations an admin has written (a name with no active calibration is ignored); seasonCadence ("monthly") files new episodes by month. A malformed value is refused. seasons is the project's season list and is refused here (POST /story-projects/{projectId}/seasons names one).

archivedboolean
seasonCadence'monthly' nullable

Set ("monthly") or clear (null) how new episodes are filed into seasons — the same as metadata.seasonCadence, keeping every other metadata key. Not combined with metadata. Only episodes made afterwards are filed by it.

kind'story' | 'product'

Change what this project is. Refused with 409 project_kind_locked once the project has production (scripts, plans, jobs, captures or releases); refused with 409 project_kind_conflict when it would invalidate a saved rubric report, unless confirmKindChange: true.

confirmKindChangeboolean

Accept that changing kind invalidates the saved rubric report that scored the current Bible. Send with kind after reading 409 project_kind_conflict.

contentGuardboolean

Turn the ages-13-and-up content guard on or off for everything written for the project from now on.

medium'audio' | 'video'

Change what the story is made as: audio saves the Series Bible's productionMedium: audio; video on an audio project sets it back to undecided for the Bible to settle. Not combined with kind. Refused for a product project and, while the project is recurring, for video.

recurringboolean

True makes the project a recurring show (its show is made, or its audio series becomes one, not set up and off). False makes its show an ordinary series again (one nothing was set up or made for is removed); refused while the show is on (turn it off first) or while an outside producer makes it under a standing approval (revoke that first). A recurring show is audio for now: make it a podcast (medium: audio) to make it recurring.

workspaceRole'writer' | 'creator' | 'business'

A project's workspaceRole can be changed after it is made (writer, creator or business; whoever may change the project's settings): it moves the project to that role's list in the sidebar's switcher and changes nothing else. The project's kind (story or product) never follows it.

Response

Updated project envelope.

Changes

No recorded changes to this operation across all 2 revisions of this API.