Sleeper Hit Docs

Four-surface contract

Generated contract map for UI, Story API, CLI, and MCP surfaces.

View as Markdown

This page is generated from the live contract code used by the app, Story API, CLI, and MCP server. Do not hand-edit operation lists in documentation; update the contract sources below and regenerate.

Contract sources

  • Surface registry: packages/web/src/lib/api-v1/surface-registry.ts
  • OpenAPI builder: packages/web/src/lib/api-v1/openapi.ts
  • OpenAPI schemas: packages/web/src/lib/api-v1/openapi-schemas.ts
  • Capabilities manifest: packages/web/src/lib/api-v1/capabilities.ts
  • Examples manifest: packages/web/src/lib/api-v1/examples.ts
  • MCP server tool schemas: packages/mcp-server/src/index.ts
  • CLI command router: packages/cli/src/cli.ts

Coverage

  • Operations: 333
  • OpenAPI operations: 331
  • Example recipes: 17
  • Complete UI/API/CLI/MCP operations: 333 / 333
SurfaceBound operations
UI333 / 333
API333 / 333
CLI333 / 333
MCP333 / 333

Surface gaps

No surface gaps.

Development flow warnings

Complete the Series Bible before screenplay pages

  • Stage: before_screenplay_generation
  • Blocking: no
  • Surfaces: ui, api, cli, mcp
  • Guidance: Before planning or generating a screenplay-backed table_read artifact, read, save, or generate the project Series Bible and confirm the format, audience, season arc, episode map, character roster, canon/world rules, visual style, audio style, and open questions are usable. The planner and screenplay adapter auto-load the saved Series Bible as project canon; if the user proceeds anyway, carry the missing areas into the StoryPlan review instead of silently ignoring them.

Finish the project stage a refusal names — do not retry it

  • Stage: before_planning_or_generation
  • Blocking: yes
  • Surfaces: ui, api, cli, mcp
  • Guidance: Planning, drafting episodes, casting, keeping or rendering mood board frames, writing the episode map, and generating project media are refused until the project reaches the stage each one needs. The refusal is a 409 project_precondition_failed whose error.details.stage names the stage the project has not finished (premise, premise_coverage, planning, full_coverage) with missingFields, canPlan and canStartEpisode. It is state, not a transient fault: nothing was created or charged, and the identical call refuses the same way until the stage is done — a recurring caller must stop and finish the stage (or tell the writer) rather than retry on a schedule.

A table read performs the project cast — complete it first

  • Stage: before_planning_or_generation
  • Blocking: yes
  • Surfaces: ui, api, cli, mcp
  • Guidance: A table_read job never casts. From a plan it starts only when the project cast canon, plus the request's own voiceMap, covers every canon character: a voice for everyone and, unless the project is audio-only (Series Bible productionMedium "audio"), a headshot, body shot and character sheet; a narrated read also needs a narrator voice. A job that adopts a finalized screenplay (scriptUploadId) needs that screenplay's episode cast complete. The refusal is a 409 cast_precondition_failed before anything is created or charged, with details.reason and details.missing. Once the job has written its screenplay, a speaker the cast does not cover fails the job (failureCode cast_precondition_failed, a contract failure) before any audio, and its credits are released.

Complete the Series Bible Mood board before rendering

  • Stage: before_storyboard_rendering
  • Blocking: yes
  • Surfaces: ui, api, cli, mcp
  • Guidance: Image and video rendering are locked until the Series Bible has explicit production medium, visual style, character design, visual truths, production design, color palette, lighting rules, camera language, and location truths. Read document.readiness.moodBoard on the shared Series Bible response and resolve every missing field before rendering.

Run one coverage round after the screenplay exists

  • Stage: after_screenplay_exists
  • Blocking: no
  • Surfaces: ui, api, cli, mcp
  • Guidance: Once a screenplay-backed table_read artifact exists, read or poll the first coverage report before treating the script as ready for finalization, pitch packaging, or later installment generation. Table-read jobs queue the initial coverage pass when pages are created; request a new report only if none exists or the user wants another pass. Use the report, especially top fixes, to drive one revision pass. This is guidance, not an enforcement gate.

Operations by workflow

account

OperationUIAPICLIMCP
Cancel the account's deletion<br><small>account.deletion.cancel</small>Profile, Sign-in & Security: Download my data, Delete account<br>/dashboard/profile?tab=securityDELETE /api/v1/account/deletion<br>account:writesleeperhit account cancel-deletioncancel_account_deletion
Read where the account's deletion stands<br><small>account.deletion.get</small>Profile, Sign-in & Security: Download my data, Delete account<br>/dashboard/profile?tab=securityGET /api/v1/account/deletion<br>account:readsleeperhit account deletionget_account_deletion
Delete the account<br><small>account.deletion.request</small>Profile, Sign-in & Security: Download my data, Delete account<br>/dashboard/profile?tab=securityPOST /api/v1/account/deletion<br>account:writesleeperhit account delete --confirm-email <email>request_account_deletion
Read the "Download my data" archive<br><small>account.export.get</small>Profile, Sign-in & Security: Download my data, Delete account<br>/dashboard/profile?tab=securityGET /api/v1/account/export<br>account:readsleeperhit account export --statusget_account_export
Download my data<br><small>account.export.request</small>Profile, Sign-in & Security: Download my data, Delete account<br>/dashboard/profile?tab=securityPOST /api/v1/account/export<br>account:readsleeperhit account export [--wait] [--download <dir>]request_account_export

artifacts

OperationUIAPICLIMCP
Animate a character's portrait<br><small>artifacts.avatarVideo</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/avatar-video<br>artifact:publishsleeperhit cast animate <artifactId> --character <name> [--description <text>]animate_avatar
Read a table-read cast<br><small>artifacts.cast</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readGET /api/v1/artifacts/{artifactId}<br>artifact:readsleeperhit cast <artifactId>get_cast
Read a Black List analysis<br><small>artifacts.coverage.blacklist</small>Writers Lab coverage panel<br>/dashboard/writing-lab/:projectId/:scriptId/coverageGET /api/v1/artifacts/{artifactId}/coverage/blacklist<br>artifact:readsleeperhit coverage blacklist <artifactId> [--report <reportId>]get_blacklist_analysis
Generate script coverage<br><small>artifacts.coverage.generate</small>Writers Lab coverage panel<br>/dashboard/writing-lab/:projectId/:scriptId/coveragePOST /api/v1/artifacts/{artifactId}/coverage<br>story:writesleeperhit coverage generate <artifactId>generate_coverage
Read script coverage<br><small>artifacts.coverage.get</small>Writers Lab coverage panel<br>/dashboard/writing-lab/:projectId/:scriptId/coverageGET /api/v1/artifacts/{artifactId}/coverage<br>artifact:readsleeperhit coverage get <artifactId>get_coverage
List a screenplay's coverage history<br><small>artifacts.coverage.versions</small>Writers Lab coverage panel<br>/dashboard/writing-lab/:projectId/:scriptId/coverageGET /api/v1/artifacts/{artifactId}/coverage/versions<br>artifact:readsleeperhit coverage versions <artifactId>list_coverage_versions
Finalize a durable MP3 or MP4<br><small>artifacts.finalize</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/finalize<br>artifact:publishsleeperhit finalize <artifactId> --mode audio|video [--refresh]finalize_artifact
Retry a failed or stalled durable MP3 finalize<br><small>artifacts.finalize.retry</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/finalize/retry<br>artifact:publishsleeperhit finalize <artifactId> --retryretry_artifact_finalize
Read an artifact<br><small>artifacts.get</small>Writers Lab project workflow<br>/dashboard/writing-labGET /api/v1/artifacts/{artifactId}<br>artifact:readsleeperhit artifacts get <artifactId>get_artifact
Read the enriched cast<br><small>artifacts.getCast</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readGET /api/v1/artifacts/{artifactId}/cast<br>artifact:readsleeperhit cast <artifactId>get_cast
List job artifacts<br><small>artifacts.list</small>Writers Lab project workflow<br>/dashboard/writing-labGET /api/v1/story-jobs/{jobId}/artifacts<br>artifact:readsleeperhit jobs artifacts <jobId>list_artifacts
Read the location plates<br><small>artifacts.locationPlates.get</small>Writers Lab videos asset panel<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/artifacts/{artifactId}/location-plates<br>artifact:readsleeperhit locations get <artifactId>get_location_plates
Remake one location plate<br><small>artifacts.locationPlates.remake</small>Writers Lab videos asset panel<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/artifacts/{artifactId}/location-plates/{plateKey}/remake<br>artifact:publishsleeperhit locations remake <artifactId> <plateKey> [--confirm]remake_location_plate
Generate scene music<br><small>artifacts.music.generate</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/music<br>artifact:publishsleeperhit music generate <artifactId> [--coverage <0..1|0..100>] [--scenes 0,2,5]generate_music
Read scene music status<br><small>artifacts.music.get</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readGET /api/v1/artifacts/{artifactId}/music<br>artifact:readsleeperhit music get <artifactId>get_music
Update scene music<br><small>artifacts.music.update</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/music<br>artifact:publishsleeperhit music update <artifactId> [--scene <n> --clip-prompt <text> --clip-volume <0..1> --clip-fade-in <ms> --clip-fade-out <ms> --clip-play-mode once|loop --clip-sound-url <url> --clip-duration-ms <ms> --clip-anchor start|end --clip-post-roll-ms <ms>] [--scene <n> --end-transition fadeOut|cut --mix <0..1> --ducking <0.1..1> --bpm <60..180> --density <0..1> --brightness <0..1> --instruments "Cello:1.2,Piano:0.8"] [--scope screenplay|scene|entry] [--mode merge|replace]update_music
Build the noun imagery<br><small>artifacts.nounImagery.generate</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/noun-imagery<br>artifact:publishsleeperhit noun-imagery generate <artifactId> [--force] [--noun <key> [--label <text>] [--kind object|location|entity]]generate_noun_imagery
Read the noun imagery<br><small>artifacts.nounImagery.get</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readGET /api/v1/artifacts/{artifactId}/noun-imagery<br>artifact:readsleeperhit noun-imagery get <artifactId>get_noun_imagery
Refine character performance<br><small>artifacts.performance</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/performance<br>artifact:publishsleeperhit performance <artifactId> --character <name|NARRATOR|ALL> [--speed-factor 1.2] [--emotions a,b]refine_performance
Read a render's publishable state<br><small>artifacts.publishState.get</small>Writers Lab table-read publish button<br>/dashboard/writing-lab/:projectId/:scriptId/table-readGET /api/v1/artifacts/{artifactId}/publish-state<br>artifact:readsleeperhit artifacts publish-state <artifactId>get_publish_state
Send a render to Publishing (or remove it)<br><small>artifacts.publishState.set</small>Writers Lab table-read publish button<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/publish-state<br>artifact:publishsleeperhit artifacts publish <artifactId> [--off]mark_publishable/unmark_publishable
Regenerate a character avatar<br><small>artifacts.recastAvatar</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/avatar<br>artifact:publishsleeperhit avatar set <artifactId> --character <c> [--refine <text>] [--style <style>] [--confirm]recast_avatar
Regenerate a character figure<br><small>artifacts.recastFigure</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/figure<br>artifact:publishsleeperhit figure set <artifactId> --character <c> [--refine <text>] [--reference-image-url <url>] [--confirm]recast_figure
Recast a character voice<br><small>artifacts.recastVoice</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/voice<br>artifact:publishsleeperhit voice set <artifactId> --character <c> --voice-id <id> --voice-name <name> [--no-canon]recast_voice
Refine a table read<br><small>artifacts.refine</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/refine<br>artifact:publishsleeperhit refine <artifactId> <instruction...> [--scope auto|screenplay|plan] [--confirm]refine_artifact
Rename a result<br><small>artifacts.rename</small>Writers Lab script details and video lists<br>/dashboard/writing-labPATCH /api/v1/artifacts/{artifactId}<br>story:writesleeperhit artifacts rename <artifactId> <title>rename_artifact
Render a table-read video<br><small>artifacts.renderVideo</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/render-video<br>artifact:publishsleeperhit artifacts render-video <artifactId>render_artifact_video
Read render status + share link<br><small>artifacts.renderVideo.status</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readGET /api/v1/artifacts/{artifactId}/render-video<br>artifact:readsleeperhit artifacts render-status <artifactId>get_artifact_share
Restore a character's previous voice<br><small>artifacts.restoreVoice</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/voice/restore<br>artifact:publishsleeperhit voice restore <artifactId> [--character <c>]restore_voice
Flag a table-read line for review<br><small>artifacts.reviewItems.flag</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/review-items<br>artifact:publishsleeperhit script review flag <artifactId> <entryIndex> --line-text "<the line as it stands>" [--character <c>] [--note <text>]flag_line_for_review
List a table read's flagged lines<br><small>artifacts.reviewItems.list</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readGET /api/v1/artifacts/{artifactId}/review-items<br>artifact:readsleeperhit script review list <artifactId>list_line_reviews
Remove a table-read line's review flag<br><small>artifacts.reviewItems.unflag</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readDELETE /api/v1/artifacts/{artifactId}/review-items/{entryIndex}<br>artifact:publishsleeperhit script review unflag <artifactId> <entryIndex>unflag_line_for_review
Re-voice one character in a finished read<br><small>artifacts.revoiceCharacter</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/revoice<br>artifact:publishsleeperhit voice revoice <artifactId> --character <c> [--voice-id <id> --voice-name <name>] [--confirm]revoice_character
Re-voice one line at a new speed or with a new direction<br><small>artifacts.revoiceLine</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/revoice-line<br>artifact:publishsleeperhit voice revoice-line <artifactId> --entry <index> [--speed <x>] [--direction <text> | --no-direction] [--confirm]revoice_line
Read character lines<br><small>artifacts.script.character</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readGET /api/v1/artifacts/{artifactId}/script<br>artifact:readsleeperhit script character <artifactId> <character...>get_character_lines
Read table-read script content<br><small>artifacts.script.get</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readGET /api/v1/artifacts/{artifactId}/script<br>artifact:readsleeperhit script get <artifactId>get_table_read_script
Read script content by page<br><small>artifacts.script.page</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readGET /api/v1/artifacts/{artifactId}/script<br>artifact:readsleeperhit script page <artifactId> <page>get_script_page
Replace a table-read screenplay exactly<br><small>artifacts.script.replace</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/script<br>artifact:publishsleeperhit script replace <artifactId> --file <path> [--instruction <text>] [--narration-policy include|suppress] [--defer-music] [--defer-audio-render]replace_artifact_script
Read script content by scene<br><small>artifacts.script.scene</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readGET /api/v1/artifacts/{artifactId}/script<br>artifact:readsleeperhit script scene <artifactId> <sceneIndex>get_script_scene
List sound effects<br><small>artifacts.sfx.list</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readGET /api/v1/artifacts/{artifactId}/sfx<br>artifact:readsleeperhit sfx list <artifactId>list_sfx
Manage sound effects<br><small>artifacts.sfx.manage</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/sfx<br>artifact:publishsleeperhit sfx add|update|remove <artifactId>add_sfx/update_sfx/remove_sfx
List soundscape beds and regions<br><small>artifacts.soundscapes.list</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readGET /api/v1/artifacts/{artifactId}/soundscapes<br>artifact:readsleeperhit soundscapes list <artifactId>get_soundscapes
Edit soundscape beds and regions<br><small>artifacts.soundscapes.manage</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/soundscapes<br>artifact:publishsleeperhit soundscapes update-bed|add|update|attach|remove <artifactId>update_soundscape/remove_soundscape
Write scene backdrop prompts<br><small>artifacts.theater.backdropPrompts</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/theater-backdrop-prompts<br>artifact:publishsleeperhit theater backdrop-prompts <artifactId> [--scenes 0,2,5] [--force]write_scene_backdrop_prompts
Write a scene's atmospheric FX cues<br><small>artifacts.theater.fxCues</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/theater-fx-cues<br>artifact:publishsleeperhit theater fx-cues <artifactId> --scene <n>generate_scene_fx_cues
Read the theater presentation<br><small>artifacts.theater.get</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readGET /api/v1/artifacts/{artifactId}/theater<br>artifact:readsleeperhit theater get <artifactId>get_theater_settings
Change one scene's theater<br><small>artifacts.theater.scene</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/theater-scene<br>artifact:publishsleeperhit theater scene <artifactId> --scene <n> [--text-reveal fade|drift|spotlight] [--backdrop-prompt <text>] [--media image|video] [--transition <type>] [--transition-duration <ms>] [--transition-prompt <text>] [--summary <text>] [--fx-cues <json-array> | --clear-fx-cues]update_scene_theater
Change the theater presentation<br><small>artifacts.theater.update</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/theater<br>artifact:publishsleeperhit theater update <artifactId> [--theater-mode on|off] [--backgrounds on|off] [--scene-visuals on|off] [--style-set <id>] [--transition <type>] [--transition-duration <ms>] [--heading-font <id>] [--dialogue-font <id>] [--layout <mode>] [--dialogue <presentation>] [--title <text>] [--subtitle <text>] [--title-layout <layout>] [--noun-imagery insets|replace_backdrop|off] [--json <presentation>]update_theater_settings
Design a theater scene canvas<br><small>artifacts.theaterCanvas.apply</small>Writers Lab project workflow<br>/dashboard/writing-labPOST /api/v1/artifacts/{artifactId}/theater-canvas<br>artifact:publishsleeperhit artifacts theater-canvas <artifactId> --scene <n> --beats <json-array>apply_theater_canvas
Generate a theater motion background clip<br><small>artifacts.theaterMotion.clip</small>Writers Lab project workflow<br>/dashboard/writing-labPOST /api/v1/artifacts/{artifactId}/theater-motion-clip<br>artifact:publishsleeperhit artifacts theater-motion-clip <artifactId> --scene <n> --entry <n> [--prompt <text>] [--duration <4..30>]generate_theater_motion_clip
Direct a theater motion graphic<br><small>artifacts.theaterMotion.direct</small>Writers Lab project workflow<br>/dashboard/writing-labPOST /api/v1/artifacts/{artifactId}/theater-motion<br>artifact:publishsleeperhit artifacts theater-motion <artifactId> --scene <n> --entry <n> --composition motion-only|motion-over-clip|performance-motion-overlay [--caption <text>] [--direction <text>] [--duration <0.5..30>] [--clip-prompt <text>]direct_theater_motion_beat
Update the cast (voices + avatars)<br><small>artifacts.updateCast</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/cast<br>artifact:publishsleeperhit cast update <artifactId> --json '<entries-or-{entries,avatarStyle}>' [--confirm] (cast-wide restyle: sleeperhit cast restyle <artifactId> --style <s> [--confirm])update_cast
Update a read's recording with its changed lines<br><small>artifacts.updateRecording</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/update-recording<br>artifact:publishsleeperhit recording update <artifactId> [--confirm]update_recording
Modify voices over a range<br><small>artifacts.voiceModification</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/artifacts/{artifactId}/voice-modification<br>artifact:publishsleeperhit modify-voice <artifactId> --start <n> --end <n>modify_voice

brand

OperationUIAPICLIMCP
Analyze brand storytelling coverage<br><small>brand.coverage.analyze</small>Writers Lab coverage panel<br>/dashboard/writing-lab/:projectId/:scriptId/coveragePOST /api/v1/brand-coverage<br>story:writesleeperhit brand-coverage generate <content|-> [--type <text>] [--audience <text>] [--industry <text>] [--channel <text>] [--voice <text>]analyze_brand_coverage
Read brand coverage report<br><small>brand.coverage.get</small>Writers Lab coverage panel<br>/dashboard/writing-lab/:projectId/:scriptId/coverageGET /api/v1/brand-coverage/{reportId}<br>story:readsleeperhit brand-coverage get <reportId>get_brand_coverage
Generate brand storytelling<br><small>brand.narrative.generate</small>Writers Lab<br>/dashboard/writing-labPOST /api/v1/brand-narrative<br>story:writesleeperhit brand-narrative generate <brief|-> [--type <text>] [--audience <text>] [--industry <text>] [--channel <text>] [--voice <text>] [--length <text>] [--facts <file>]generate_brand_narrative

casting

OperationUIAPICLIMCP
Prepare an episode's table read<br><small>scripts.tableRead.prepare</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castPOST /api/v1/scripts/{scriptUploadId}/table-read/prepare<br>artifact:publishsleeperhit script table-read prepare <scriptUploadId> [--confirm]prepare_table_read
Remove a character from a read<br><small>scripts.tableRead.removeCharacter</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castPOST /api/v1/scripts/{scriptUploadId}/table-read/characters/remove<br>story:writesleeperhit script table-read remove-character <scriptUploadId> --character <name>remove_character

credits

OperationUIAPICLIMCP
Read Studio Credit balance<br><small>credits.read</small>Dashboard credit meter<br>/dashboardGET /api/v1/credits<br>credits:readsleeperhit creditsget_credits

discovery

OperationUIAPICLIMCP
Read agent guidance<br><small>agent-guidance</small>Developer console and docs<br>/dashboard/apiGET /api/v1/agent-guidance<br>story:readsleeperhit guidanceget_agent_guidance
Discover live capabilities<br><small>capabilities</small>Developer console and docs<br>/dashboard/apiGET /api/v1/capabilities<br>story:readsleeperhit capabilitiessleeperhit://capabilities

episode_overrides

OperationUIAPICLIMCP
Read an episode's overrides<br><small>scripts.overrides.get</small>Writers Lab episode overrides<br>/dashboard/writing-lab/:projectId/:scriptId/castGET /api/v1/scripts/{scriptUploadId}/overrides<br>story:readsleeperhit script overrides get <scriptUploadId>get_script_overrides
Set or clear an episode's overrides<br><small>scripts.overrides.update</small>Writers Lab episode overrides<br>/dashboard/writing-lab/:projectId/:scriptId/castPATCH /api/v1/scripts/{scriptUploadId}/overrides<br>story:writesleeperhit script overrides set <scriptUploadId> [--avatar <text>] [--theater <text>] [--soundscape <text>] [--pitch-deck <text>] [--locations <text>] [--clear <override>]update_script_overrides

health

OperationUIAPICLIMCP
Check generation health<br><small>generation.health</small>Dashboard background activity<br>/dashboardGET /api/v1/generation-health<br>story:readsleeperhit generation-healthget_generation_health

jobs

OperationUIAPICLIMCP
Read background activity<br><small>activity.get</small>Dashboard background activity<br>/dashboardGET /api/v1/background-activity<br>story:readsleeperhit activitybackground_activity
Cancel a story job<br><small>jobs.cancel</small>Dashboard background activity<br>/dashboardPOST /api/v1/story-jobs/{jobId}/cancel<br>story:writesleeperhit jobs cancel <jobId>cancel_job
Create a story job<br><small>jobs.create</small>Writers Lab project workflow<br>/dashboard/writing-labPOST /api/v1/story-jobs<br>story:writesleeperhit jobs create <planId> [--script <scriptUploadId>]create_job
Read a story job<br><small>jobs.get</small>Writers Lab project workflow<br>/dashboard/writing-labGET /api/v1/story-jobs/{jobId}<br>story:readsleeperhit jobs get <jobId>get_job
List story jobs<br><small>jobs.list</small>Writers Lab project workflow<br>/dashboard/writing-labGET /api/v1/story-jobs<br>story:readsleeperhit jobs listlist_jobs
Resume a story job<br><small>jobs.resume</small>Dashboard background activity<br>/dashboardPOST /api/v1/story-jobs/{jobId}/resume<br>story:writesleeperhit jobs resume <jobId>resume_story_job
Read screenplay drafting progress<br><small>screenplay-drafts.get</small>Writers Lab screenplay editor<br>/dashboard/writing-lab/:projectId/:scriptIdGET /api/v1/screenplay-drafts/{scriptUploadId}<br>story:readsleeperhit screenplay-draft status <scriptUploadId>screenplay_draft_status
Draft or resume an episode scene by scene<br><small>screenplay-drafts.start</small>Writers Lab screenplay editor<br>/dashboard/writing-lab/:projectId/:scriptIdPOST /api/v1/screenplay-drafts/{scriptUploadId}<br>story:writesleeperhit screenplay-draft start|resume <scriptUploadId> [--file <scene-plan.json>]draft_episode/resume_screenplay_draft

library

OperationUIAPICLIMCP
Import reusable audio<br><small>library.audio.import</small>My Library<br>/dashboard/libraryPOST /api/v1/library/audio<br>story:writesleeperhit library audio import (--file <path> | --source-url <url>) --kind <kind> --label <text>import_my_library_audio
List reusable My-Library audio<br><small>library.audio.list</small>My Library<br>/dashboard/libraryGET /api/v1/library/audio<br>story:readsleeperhit library audio list [--kind music|sfx|soundscape] [--query <text>] [--limit N] [--cursor C]list_my_library_audio
Rename a reusable audio asset<br><small>library.audio.rename</small>Writers Lab table-read sound picker<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPATCH /api/v1/library/audio/{assetId}<br>story:writesleeperhit library audio rename <assetId> <label>rename_my_library_audio
List My-Library images<br><small>library.images.list</small>My Library<br>/dashboard/libraryGET /api/v1/library/images<br>story:readsleeperhit library images [--limit N] [--cursor C]list_my_library_images

likeness

OperationUIAPICLIMCP
Mint a likeness approval link<br><small>likeness.link</small>My Library likeness approvals<br>/dashboard/libraryPOST /api/v1/likeness-consents/links<br>story:writesleeperhit likeness link <name> [--email <email>]create_likeness_consent_link
List likeness approvals<br><small>likeness.list</small>My Library likeness approvals<br>/dashboard/libraryGET /api/v1/likeness-consents<br>story:readsleeperhit likeness listlist_likeness_consents
Withdraw a likeness approval<br><small>likeness.revoke</small>My Library likeness approvals<br>/dashboard/libraryPOST /api/v1/likeness-consents/{consentId}/revoke<br>story:writesleeperhit likeness revoke <consentId> --confirmrevoke_likeness_consent

pitch-deck

OperationUIAPICLIMCP
Read the pitch-deck audio timeline<br><small>pitch-deck.audioTimeline.get</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/pitch-decks/{jobId}/storyboard/audio-timeline<br>story:readsleeperhit pitch-deck timeline <jobId> showget_pitch_deck_audio_timeline
Edit the pitch-deck audio timeline<br><small>pitch-deck.audioTimeline.mutate</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/storyboard/audio-timeline<br>story:writesleeperhit pitch-deck timeline <jobId> <add-layer|remove-layer|generate-music|add-music-from-library|update-music|remove-music|generate-sfx|add-sfx-from-library|update-sfx|update-sfx-cues|remove-sfx> [flags] (sfx: --kind spot|ambience --length-ms N --fade-in-ms N --fade-out-ms N; update-sfx --muted|--unmuted --clear-length; update-sfx-cues --cues '<json>')generate_pitch_deck_timeline_music
Read per-scene music and sound effects<br><small>pitch-deck.sceneAudio.get</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/pitch-decks/{jobId}/storyboard/audio<br>story:readsleeperhit pitch-deck audio <jobId>get_pitch_deck_scene_audio
Score one scene's music<br><small>pitch-deck.sceneMusic.mutate</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/storyboard/music<br>story:writesleeperhit pitch-deck music <score|update|remove|apply-library> <jobId> --chapter <chapterIndex> [flags]score_pitch_deck_scene_music
Place sound effects on one scene<br><small>pitch-deck.sceneSfx.mutate</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/storyboard/sfx<br>story:writesleeperhit pitch-deck sfx <add|update|remove|apply-library> <jobId> --chapter <chapterIndex> [flags]add_pitch_deck_scene_sfx
Read the pitch-deck sound map<br><small>pitch-deck.soundMap.get</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/pitch-decks/{jobId}/storyboard/sound-map<br>story:readsleeperhit pitch-deck sound-map <jobId> [--chapter <chapterIndex>]get_pitch_deck_sound_map
Read the pitch deck's bell on the beat<br><small>pitchDeck.bellLane.get</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/pitch-decks/{jobId}/bell-lane<br>story:readsleeperhit pitch-deck bell <jobId> showget_pitch_deck_bell_lane
Take the bell off the pitch deck<br><small>pitchDeck.bellLane.remove</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/bell-lane/remove<br>story:writesleeperhit pitch-deck bell <jobId> removeremove_pitch_deck_bell_lane
Strike a bell on every beat of the pitch deck<br><small>pitchDeck.bellLane.set</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/bell-lane<br>story:writesleeperhit pitch-deck bell <jobId> strike [--asset <id>|--from-deck <jobId>|--prompt <text>] [--every 1|2] [--from <s>|start] [--to <s>|end] [--skip <keys>|none] [--accent on|off] [--level <0-1>] [--duck on|off]strike_pitch_deck_bell_on_the_beat
Read the pitch deck camera motion<br><small>pitchDeck.camera.get</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/pitch-decks/{jobId}/camera<br>story:readsleeperhit pitch-deck camera <jobId>get_pitch_deck_camera
Set the pitch deck camera motion<br><small>pitchDeck.camera.set</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/camera<br>story:writesleeperhit pitch-deck camera <jobId> [--handheld off|subtle|medium] [--snap <chapterIndex>:<shot>:<NAME>[@<zoom>]]… [--reframe <chapterIndex>:<shot>:<FROM>><TARGET>]… [--clear <chapterIndex>]… [--off]set_pitch_deck_camera
Stop a pitch deck's render<br><small>pitchDeck.cancelRender</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/cancel-render<br>artifact:publishsleeperhit pitch-deck cancel-render <jobId>cancel_pitch_deck_render
Let one pitch deck take still out at the provider go<br><small>pitchDeck.chapters.abandonTake</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/chapters/{chapterIndex}/abandon-take<br>artifact:publishsleeperhit pitch-deck abandon-take <jobId> --chapter <chapterIndex> --call <callId> --take <n>abandon_pitch_deck_take
Cut a pitch deck chapter's line out, keep the rest of its footage<br><small>pitchDeck.chapters.dropLine</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/chapters/{chapterIndex}/drop-line<br>story:writesleeperhit pitch-deck drop-line <jobId> --chapter <chapterIndex> [--keep before|after] [--to <chapterIndex>]drop_pitch_deck_chapter_line
Read a pitch deck's chapters<br><small>pitchDeck.chapters.get</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/pitch-decks/{jobId}/chapters<br>story:readsleeperhit pitch-deck chapters <jobId>get_pitch_deck_chapters
Insert a blank pitch deck chapter<br><small>pitchDeck.chapters.insert</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/chapters/insert<br>story:writesleeperhit pitch-deck add-chapter <jobId> [--at <position> | --after <chapterIndex>]add_pitch_deck_chapter
Override the repair decision on one pitch deck take<br><small>pitchDeck.chapters.overrideTakeRepair</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/chapters/{chapterIndex}/take-repair-override<br>story:writesleeperhit pitch-deck override-repair <jobId> --chapter <chapterIndex> --call <callId> --take <n> --keep|--restore|--rewatchoverride_pitch_deck_take_repair
Refine one pitch deck chapter<br><small>pitchDeck.chapters.refine</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/chapters/refine<br>story:writesleeperhit pitch-deck refine-chapter <jobId> --chapter <chapterIndex> [--title <text>] [--story-beat <text>] [--visual-plan <text>] [--shot-type <text>] [--motion-plan <text>] [--location <key> | --clear-location] [--transition-prompt <text>] [--motion-prompt <text>] [--caption <text>] [--text-treatment <text>] [--text-mode voiceover|caption] [--narration <text>] [--narration-voice <id> | --clear-narration-voice] [--composition image|text|both] [--chapter-focus world|cast] [--arc-stage setup|escalation|turn|closing_question] [--advances-question <text>] [--montage | --no-montage] [--keep-scene-sound | --no-scene-sound] [--line-delivery <text>] [--cut-into-next cut|dip] [--duration <4..30>] [--visible-characters <a,b>] [--featured-character <name>] [--prop-continuity <text>] [--wardrobe-continuity <text>] [--screen-direction <text>] [--continuity-notes <text>]refine_pitch_deck_chapter
Remove a pitch deck chapter<br><small>pitchDeck.chapters.remove</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/chapters/remove<br>story:writesleeperhit pitch-deck remove-chapter <jobId> --chapter <chapterIndex>remove_pitch_deck_chapter
Render one pitch deck chapter again<br><small>pitchDeck.chapters.renderClip</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/chapters/render-clip<br>artifact:publishsleeperhit pitch-deck render-clip <jobId> --chapter <chapterIndex> [--call <callId>] [--confirm]render_pitch_deck_chapter_clip
Put the pitch deck chapters in a new order<br><small>pitchDeck.chapters.reorder</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/chapters/reorder<br>story:writesleeperhit pitch-deck reorder-chapters <jobId> (--order <chapterIndex,...> | --move <chapterIndex> --after <chapterIndex|first>)reorder_pitch_deck_chapters
Repair one take of a pitch deck call in place<br><small>pitchDeck.chapters.repairTake</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/chapters/{chapterIndex}/repair-take<br>artifact:publishsleeperhit pitch-deck repair-take <jobId> --chapter <chapterIndex> --call <callId> --take <n> [--confirm]repair_pitch_deck_take
Select a take of one pitch deck call<br><small>pitchDeck.chapters.selectTake</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/chapters/{chapterIndex}/select-take<br>story:writesleeperhit pitch-deck select-take <jobId> --chapter <chapterIndex> --call <callId> --take <n>select_pitch_deck_take
Stage one pitch deck take's line as a voice-over<br><small>pitchDeck.chapters.stageVoiceOver</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/chapters/{chapterIndex}/stage-voice-over<br>artifact:publishsleeperhit pitch-deck stage-voice-over <jobId> --chapter <chapterIndex> --call <callId> --take <n> [--confirm]stage_pitch_deck_take_as_voice_over
Trim one take of a pitch deck call<br><small>pitchDeck.chapters.trimTake</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/chapters/{chapterIndex}/trim-take<br>story:writesleeperhit pitch-deck trim-take <jobId> --chapter <chapterIndex> --call <callId> --take <n> --keep <start>-<end>trim_pitch_deck_take
Set a pitch deck's closing sequence<br><small>pitchDeck.closingSequence.update</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/closing-sequence<br>story:writesleeperhit pitch-deck closing-sequence <jobId> [--quote <text> [--quote-attribution <source>] | --no-quote] [--coming-soon <text>] [--production-credit <text>] [--on|--off] | --clearupdate_pitch_deck_closing_sequence
Delete a pitch deck<br><small>pitchDeck.delete</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosDELETE /api/v1/pitch-decks/{jobId}<br>story:writesleeperhit pitch-deck delete <jobId>delete_pitch_deck
Duplicate a pitch deck from its plan<br><small>pitchDeck.duplicate</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/duplicate<br>story:writesleeperhit pitch-deck duplicate <jobId> [--title <text>]duplicate_pitch_deck
Finish the pitch deck<br><small>pitchDeck.finish</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/finish<br>artifact:publishsleeperhit pitch-deck finish <jobId> [--resolution 720p|1080p] [--confirm] [--acknowledge-video-coverage]finish_pitch_deck
Read a pitch deck's intent<br><small>pitchDeck.intent.get</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/pitch-decks/{jobId}/intent<br>story:readsleeperhit pitch-deck intent <jobId>get_video_intent
Edit a draft pitch deck's intent<br><small>pitchDeck.intent.update</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/intent<br>story:writesleeperhit pitch-deck intent <jobId> [--purpose <text>] [--audience <text>] [--logline <text>] [--theme <text>] [--central-question <text>] [--stakes <text>] [--viewer-promise <text>] [--ending <text>] [--arc <json>]update_video_intent
Set a pitch deck's black interludes<br><small>pitchDeck.interludes.update</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/interludes<br>story:writesleeperhit pitch-deck interludes <jobId> --json <list> | --file <path> | --clearupdate_pitch_deck_interludes
Read the pitch deck finish<br><small>pitchDeck.look.get</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/pitch-decks/{jobId}/look<br>story:readsleeperhit pitch-deck look <jobId>get_pitch_deck_look
Set the pitch deck finish<br><small>pitchDeck.look.set</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/look<br>story:writesleeperhit pitch-deck look <jobId> <camera|period-35mm|night-interior|none> [--intensity light|standard|strong] [--adjust <effect>=<level>,…]set_pitch_deck_look
Let the deck's automatic fixes try more<br><small>pitchDeck.moreFixes</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/more-fixes<br>artifact:publishsleeperhit pitch-deck more-fixes <jobId> [--confirm]allow_more_pitch_deck_fixes
Read the pitch deck motion blur<br><small>pitchDeck.motionBlur.get</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/pitch-decks/{jobId}/motion-blur<br>story:readsleeperhit pitch-deck motion-blur <jobId>get_pitch_deck_motion_blur
Set the pitch deck motion blur<br><small>pitchDeck.motionBlur.set</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/motion-blur<br>story:writesleeperhit pitch-deck motion-blur <jobId> [--chapter <chapterIndex>[:<shot>,…|moving|none]]… [--strength standard|subtle] [--off]set_pitch_deck_motion_blur
Read the pitch deck narrator<br><small>pitchDeck.narrator.get</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/pitch-decks/{jobId}/narrator<br>story:readsleeperhit pitch-deck narrator <jobId>get_pitch_deck_narrator
Cast the pitch deck narrator<br><small>pitchDeck.narrator.set</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/narrator<br>story:writesleeperhit pitch-deck narrator <jobId> --voice-id <voiceId> [--provider <name>] | --clearset_pitch_deck_narrator
Render a finished pitch deck's PDF<br><small>pitchDeck.pdf.request</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/pdf<br>story:writesleeperhit pitch-deck pdf <jobId>render_pitch_deck_pdf
Approve the pitch deck plan into the render<br><small>pitchDeck.plan.approve</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/plan/approve<br>story:writesleeperhit pitch-deck approve-plan <jobId> [--confirm] [--acknowledge-plan-coverage "<reason>"]approve_pitch_deck_plan
Publish a pitch deck<br><small>pitchDeck.publish</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/publish<br>story:writesleeperhit pitch-deck publish <jobId>publish_pitch_deck
Read the pitch deck quiet track<br><small>pitchDeck.quietTrack.get</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/pitch-decks/{jobId}/quiet-track<br>story:readsleeperhit pitch-deck quiet-track <jobId>get_pitch_deck_quiet_track
Set the pitch deck quiet track<br><small>pitchDeck.quietTrack.set</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/quiet-track<br>story:writesleeperhit pitch-deck quiet-track <jobId> --track silence|room_tone | --offset_pitch_deck_quiet_track
Re-assemble a pitch deck whose assembly failed, or rebuild its master<br><small>pitchDeck.reassemble</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/reassemble<br>story:writesleeperhit pitch-deck reassemble <jobId>reassemble_pitch_deck
Rename a pitch deck<br><small>pitchDeck.rename</small>Writers Lab deck list<br>/dashboard/writing-lab/:projectId/:scriptId/videosPATCH /api/v1/pitch-decks/{jobId}<br>story:writesleeperhit pitch-deck rename <jobId> <title> [--automatic]rename_pitch_deck
Read the pitch deck delivery class<br><small>pitchDeck.resolution.get</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/pitch-decks/{jobId}/resolution<br>story:readsleeperhit pitch-deck resolution <jobId>get_pitch_deck_resolution
Choose the pitch deck delivery class<br><small>pitchDeck.resolution.set</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/resolution<br>story:writesleeperhit pitch-deck resolution <jobId> --resolution <720p|1080p> | --defaultset_pitch_deck_resolution
Read the pitch deck's score to picture<br><small>pitchDeck.scoreToPicture.get</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/pitch-decks/{jobId}/score-to-picture<br>story:readsleeperhit pitch-deck score-to-picture <jobId> showget_pitch_deck_score_to_picture
Revert the pitch deck to its scene beds<br><small>pitchDeck.scoreToPicture.revert</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/score-to-picture/revert<br>story:writesleeperhit pitch-deck score-to-picture <jobId> revertrevert_pitch_deck_score_to_picture
Score the pitch deck to picture<br><small>pitchDeck.scoreToPicture.start</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/score-to-picture<br>artifact:publishsleeperhit pitch-deck score-to-picture <jobId> start [--direction <text>] [--confirm]score_pitch_deck_to_picture
Generate pitch deck plan coverage<br><small>pitchDeck.storyboard.coverage.generate</small>Writers Lab coverage panel<br>/dashboard/writing-lab/:projectId/:scriptId/coveragePOST /api/v1/pitch-decks/{jobId}/storyboard/coverage<br>story:writesleeperhit pitch-deck coverage <jobId> --generategenerate_storyboard_coverage
Read pitch deck plan coverage<br><small>pitchDeck.storyboard.coverage.get</small>Writers Lab coverage panel<br>/dashboard/writing-lab/:projectId/:scriptId/coverageGET /api/v1/pitch-decks/{jobId}/storyboard/coverage<br>story:readsleeperhit pitch-deck coverage <jobId>get_storyboard_coverage
Direct how a deck's text looks and moves<br><small>pitchDeck.storyboard.directTextMotion</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/storyboard/direct-text-motion<br>story:writesleeperhit pitch-deck direct-text-motion <jobId> (--chapter <chapterIndex> | --title-element title|epigraph|source-credit|name-supers | --closing-element quote|coming-soon|production-credit) (--direction <text> | --clear)direct_pitch_deck_text_motion
Render one chapter's text layer<br><small>pitchDeck.storyboard.regenerateText</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/storyboard/regenerate-text<br>artifact:publishsleeperhit pitch-deck regenerate-text <jobId> --chapter <chapterIndex> [--confirm]regenerate_pitch_deck_text
Make living portraits for a pitch deck's title intros<br><small>pitchDeck.titleSequence.motionCloses</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/title-sequence/motion-closes<br>artifact:publishsleeperhit pitch-deck title-motion-closes <jobId> [--name <name>]… [--confirm]render_pitch_deck_title_motion_closes
Set a pitch deck's title sequence<br><small>pitchDeck.titleSequence.update</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/title-sequence<br>story:writesleeperhit pitch-deck title-sequence <jobId> --title <WORD> --cast <names> [--shadow <name>] [--seconds <3-5>] [--epigraph <text> [--epigraph-attribution <text>]] [--source-credit <text>] [--name-supers on|off] [--role "<name>=<role>"]… [--label "<name>=<LABEL>"]… [--beat-grid on|off] [--beat-seconds <0.5-4>] [--title-beats <1-8>] [--flash-source "<name>=deck|project|motion|portrait|auto"]… [--on|--off] | --clearupdate_pitch_deck_title_sequence
Unpublish a pitch deck<br><small>pitchDeck.unpublish</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/unpublish<br>story:writesleeperhit pitch-deck unpublish <jobId>unpublish_pitch_deck
Read a pitch deck version<br><small>pitchDeck.versions.get</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/pitch-decks/{jobId}/versions/{number}<br>story:readsleeperhit pitch-deck version-clips <jobId> <number> [--download <dir>]get_pitch_deck_version
List the pitch deck versions<br><small>pitchDeck.versions.list</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/pitch-decks/{jobId}/versions<br>story:readsleeperhit pitch-deck versions <jobId>list_pitch_deck_versions
Ask for a pitch deck version zip<br><small>pitchDeck.versions.zip</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/versions/{number}/zip<br>story:writesleeperhit pitch-deck version-clips <jobId> <number> --ziprequest_pitch_deck_version_zip
Re-stitch the finished deck master from its current chapters and audio<br><small>pitchDeck.video.export</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/video-export<br>story:writesleeperhit pitch-deck export <jobId>export_pitch_deck_video
Cover the pitch deck video again<br><small>pitchDeck.videoCoverage.generate</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/video-coverage<br>story:writesleeperhit pitch-deck video-coverage <jobId> --generategenerate_video_coverage
Read pitch deck video coverage<br><small>pitchDeck.videoCoverage.get</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/pitch-decks/{jobId}/video-coverage<br>story:readsleeperhit pitch-deck video-coverage <jobId>get_video_coverage
Read the pitch deck video model<br><small>pitchDeck.videoModel.get</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/pitch-decks/{jobId}/video-model<br>story:readsleeperhit pitch-deck video-model <jobId>get_pitch_deck_video_model
Set the pitch deck video model<br><small>pitchDeck.videoModel.set</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/video-model<br>story:writesleeperhit pitch-deck video-model <jobId> --model wan3-prime|vidu-q4set_pitch_deck_video_model
Set a pitch deck's visual grammar<br><small>pitchDeck.visualGrammar.update</small>Writers Lab videos pitch-deck review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/pitch-decks/{jobId}/visual-grammar<br>story:writesleeperhit pitch-deck visual-grammar <jobId> [--text <words> | --file <path>]update_pitch_deck_visual_grammar

plans

OperationUIAPICLIMCP
Approve a StoryPlan<br><small>plans.approve</small>Writers Lab project page plans<br>/dashboard/writing-lab/:projectIdPOST /api/v1/story-plans/{planId}/approve<br>story:writesleeperhit plans approve <planId> --confirmapprove_plan
Generate a StoryPlan<br><small>plans.create</small>Writers Lab project workflow<br>/dashboard/writing-labPOST /api/v1/story-projects/{projectId}/story-plans<br>story:writesleeperhit plans create <projectId> --target ... --artifact ...create_plan
Read a StoryPlan<br><small>plans.get</small>Writers Lab project page plans<br>/dashboard/writing-lab/:projectIdGET /api/v1/story-plans/{planId}<br>story:readsleeperhit plans get <planId>get_plan
List StoryPlans<br><small>plans.list</small>Writers Lab project page plans<br>/dashboard/writing-lab/:projectIdGET /api/v1/story-projects/{projectId}/story-plans<br>story:readsleeperhit plans list <projectId>list_plans
Reject a StoryPlan<br><small>plans.reject</small>Writers Lab project page plans<br>/dashboard/writing-lab/:projectIdPOST /api/v1/story-plans/{planId}/reject<br>story:writesleeperhit plans reject <planId>reject_plan
Rename a plan<br><small>plans.rename</small>Writers Lab plans waiting for you<br>/dashboard/writing-lab/:projectIdPATCH /api/v1/story-plans/{planId}<br>story:writesleeperhit plans rename <planId> <title>rename_plan
Resume a StoryPlan<br><small>plans.resume</small>Writers Lab project workflow<br>/dashboard/writing-labPOST /api/v1/story-plans/{planId}/resume<br>story:writesleeperhit plans resume <planId>resume_story_plan

projects

OperationUIAPICLIMCP
Read a project cast canon<br><small>projects.cast-canon.get</small>Writers Lab project canon<br>/dashboard/writing-labGET /api/v1/story-projects/{projectId}/cast-canon<br>story:readsleeperhit cast-canon get <projectId>get_cast_canon
Save a project cast canon<br><small>projects.cast-canon.save</small>Writers Lab project canon<br>/dashboard/writing-labPATCH /api/v1/story-projects/{projectId}/cast-canon<br>story:writesleeperhit cast-canon save <projectId> --json '<object>' | --file <json> [--replace]save_cast_canon
Read cast look directions<br><small>projects.cast-look.get</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castGET /api/v1/story-projects/{projectId}/cast-look<br>story:readsleeperhit cast direction <projectId> [--character <c>]get_cast_look_direction
Set a cast member's look direction<br><small>projects.cast-look.set</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castPATCH /api/v1/story-projects/{projectId}/cast-look<br>story:writesleeperhit cast direction <projectId> --character <c> [--look <text>] [--age <a>] [--clear-look] [--clear-age]set_cast_look_direction
Choose a headshot candidate<br><small>projects.cast-portraits.choose</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castPOST /api/v1/story-projects/{projectId}/cast-portraits/choose<br>story:writesleeperhit cast-portrait choose <projectId> --design <designId> --candidate <n> [--acknowledge-coverage]choose_cast_portrait
Judge a portrait design again<br><small>projects.cast-portraits.coverage.generate</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castPOST /api/v1/story-projects/{projectId}/cast-portraits/designs/{designId}/coverage<br>story:writesleeperhit cast-portrait judge <projectId> --design <designId> [--focus <text>]generate_portrait_coverage
Read a portrait design's casting coverage<br><small>projects.cast-portraits.coverage.get</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castGET /api/v1/story-projects/{projectId}/cast-portraits/designs/{designId}/coverage<br>story:readsleeperhit cast-portrait coverage <projectId> --design <designId>get_portrait_coverage
Draw headshot candidates for a cast member<br><small>projects.cast-portraits.design</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castPOST /api/v1/story-projects/{projectId}/cast-portraits/design<br>artifact:publishsleeperhit cast-portrait design <projectId> --character <c> [--direction <text>] [--age <a>] [--candidates <n>] [--keep-face] [--confirm]design_cast_portraits
List headshot candidate designs<br><small>projects.cast-portraits.designs</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castGET /api/v1/story-projects/{projectId}/cast-portraits/designs<br>story:readsleeperhit cast-portrait designs <projectId> [--character <c>] [--design <designId>] [--watch]list_cast_portrait_designs
Choose a designed cast voice<br><small>projects.cast-voice.choose</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castPOST /api/v1/story-projects/{projectId}/cast-voice/choose<br>story:writesleeperhit cast-voice choose <projectId> --design <designId> --candidate <n> [--name <voiceName>] [--acknowledge-coverage]choose_cast_voice
Judge a voice design again<br><small>projects.cast-voice.coverage.generate</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castPOST /api/v1/story-projects/{projectId}/cast-voice/designs/{designId}/coverage<br>story:writesleeperhit cast-voice judge <projectId> --design <designId> [--focus <text>]generate_casting_coverage
Read a voice design's casting coverage<br><small>projects.cast-voice.coverage.get</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castGET /api/v1/story-projects/{projectId}/cast-voice/designs/{designId}/coverage<br>story:readsleeperhit cast-voice coverage <projectId> --design <designId>get_casting_coverage
Design a cast member's voice<br><small>projects.cast-voice.design</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castPOST /api/v1/story-projects/{projectId}/cast-voice/design<br>artifact:publishsleeperhit cast-voice design <projectId> --character <c> [--description <text>] [--candidates <n>] [--preview-lines <n>] [--sample-text <line>] [--confirm]design_cast_voice
List cast voice designs<br><small>projects.cast-voice.designs</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castGET /api/v1/story-projects/{projectId}/cast-voice/designs<br>story:readsleeperhit cast-voice designs <projectId> [--character <c>]list_cast_voice_designs
Set a cast member's voice<br><small>projects.cast-voice.set</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castPATCH /api/v1/story-projects/{projectId}/cast-voice<br>story:writesleeperhit cast-voice set <projectId> --character <c> --voice-id <id> [--voice-name <n>] [--provider <p>] [--gender <g>]set_cast_voice
Save episode character direction<br><small>projects.cast.direction</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castPATCH /api/v1/story-projects/{projectId}/cast<br>story:writesleeperhit cast direction <projectId> --script <scriptUploadId> --character <name> --json <direction>update_character_direction
Generate the project cast<br><small>projects.cast.generate</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castPOST /api/v1/story-projects/{projectId}/cast<br>artifact:publishsleeperhit cast generate <projectId> [--script <scriptUploadId>] [--character <name>] [--force] [--image face|body|sheet] [--confirm --quote <quoteId>]generate_cast
Read casting progress<br><small>projects.cast.get</small>Writers Lab cast<br>/dashboard/writing-lab/:projectId/:scriptId/castGET /api/v1/story-projects/{projectId}/cast<br>story:readsleeperhit cast status <projectId> [--script <scriptUploadId>]get_project_cast
Create a story project<br><small>projects.create</small>Writers Lab project library<br>/dashboard/writing-labPOST /api/v1/story-projects<br>story:writesleeperhit projects create --name <name>create_project
Create a project around a script<br><small>projects.createFromScript</small>Writers Lab sidebar<br>/dashboard/writing-lab/:scriptId/:scriptIdPOST /api/v1/story-projects/from-script<br>story:writesleeperhit projects from-script <scriptId> | --script <scriptUploadId>create_project_from_script
Delete a story project<br><small>projects.delete</small>Writers Lab project page actions menu<br>/dashboard/writing-lab/:projectIdDELETE /api/v1/story-projects/{projectId}<br>story:writesleeperhit projects delete <projectId>delete_project
List deleted projects that can still be restored<br><small>projects.deleted.list</small>Writers Lab project library recently deleted<br>/dashboard/writing-labGET /api/v1/story-projects/deleted<br>story:readsleeperhit projects deletedlist_deleted_projects
List a project's episodes, versions and videos<br><small>projects.episodes.list</small>Writers Lab Seasons & episodes<br>/dashboard/writing-lab/:projectIdGET /api/v1/story-projects/{projectId}/episodes<br>story:readsleeperhit projects episodes <projectId> [--season N]list_project_episodes
Start a Series Bible episode as a draft<br><small>projects.episodes.start</small>Writers Lab episode map<br>/dashboard/writing-lab/:projectIdPOST /api/v1/story-projects/{projectId}/episodes<br>story:writesleeperhit projects episodes start <projectId> <episodeId>start_planned_episode
Read a story project<br><small>projects.get</small>Writers Lab project library<br>/dashboard/writing-labGET /api/v1/story-projects/{projectId}<br>story:readsleeperhit projects get <projectId>get_project
List story projects<br><small>projects.list</small>Writers Lab project library<br>/dashboard/writing-labGET /api/v1/story-projects<br>story:readsleeperhit projects listlist_projects
Drop a frame from the mood board<br><small>projects.mood-board.dropFrame</small>Writers Lab project canon<br>/dashboard/writing-labDELETE /api/v1/story-projects/{projectId}/mood-board/frames/{frameId}<br>story:writesleeperhit mood-board drop <projectId> <frameId>drop_mood_board_frame
Read a project mood board<br><small>projects.mood-board.get</small>Writers Lab project canon<br>/dashboard/writing-labGET /api/v1/story-projects/{projectId}/mood-board<br>story:readsleeperhit mood-board get <projectId>get_mood_board
Keep a frame on the mood board<br><small>projects.mood-board.keepFrame</small>Writers Lab project canon<br>/dashboard/writing-labPOST /api/v1/story-projects/{projectId}/mood-board/frames<br>story:writesleeperhit mood-board keep <projectId> --json '<frame>' | --file <json>keep_mood_board_frame
Render candidate mood board frames<br><small>projects.mood-board.renderFrames</small>Writers Lab project canon<br>/dashboard/writing-labPOST /api/v1/story-projects/{projectId}/mood-board/render-frames<br>artifact:publishsleeperhit mood-board render <projectId> --brief <text> [--count <n>] [--aspect <ratio>] [--confirm]render_mood_board_frames
Generate outline coverage<br><small>projects.outline-map.coverage.generate</small>Project Overview outline coverage<br>/dashboard/writing-lab/:projectId/toolsPOST /api/v1/story-projects/{projectId}/outline-map/coverage<br>story:writesleeperhit outline coverage <projectId> --generategenerate_outline_coverage
Read outline coverage<br><small>projects.outline-map.coverage.get</small>Project Overview outline coverage<br>/dashboard/writing-lab/:projectId/toolsGET /api/v1/story-projects/{projectId}/outline-map/coverage<br>story:readsleeperhit outline coverage <projectId>get_outline_coverage
Save an episode outline<br><small>projects.outline-map.episode.save</small>Writers Lab Outline tab<br>/dashboard/writing-lab/:projectId/:scriptId/tools/outlinePATCH /api/v1/story-projects/{projectId}/outline-map<br>story:writesleeperhit outline save <projectId> <episodeId> --json <outline>save_episode_outline
Read episode outlines<br><small>projects.outline-map.get</small>Writers Lab Outline tab<br>/dashboard/writing-lab/:projectId/:scriptId/tools/outlineGET /api/v1/story-projects/{projectId}/outline-map<br>story:readsleeperhit outline get <projectId>get_outline_map
Restore a deleted project<br><small>projects.restore</small>Writers Lab project library recently deleted<br>/dashboard/writing-labPOST /api/v1/story-projects/{projectId}/restore<br>story:writesleeperhit projects restore <projectId>restore_project
Name a new season<br><small>projects.seasons.create</small>Writers Lab Seasons & episodes<br>/dashboard/writing-lab/:projectIdPOST /api/v1/story-projects/{projectId}/seasons<br>story:writesleeperhit projects seasons add <projectId> [--name <text>]create_project_season
Read one Series Bible character<br><small>projects.series-bible.character.get</small>Writers Lab project canon<br>/dashboard/writing-labGET /api/v1/story-projects/{projectId}/series-bible/characters<br>story:readsleeperhit bible character <projectId> <character>get_series_bible_character
Edit one Series Bible character<br><small>projects.series-bible.character.update</small>Writers Lab project canon<br>/dashboard/writing-labPATCH /api/v1/story-projects/{projectId}/series-bible/characters<br>story:writesleeperhit bible character <projectId> <character> --json '<fields>' [--expected-version <n>] [--create]update_series_bible_character
Generate Series Bible coverage<br><small>projects.series-bible.coverage.generate</small>Writers Lab coverage panel<br>/dashboard/writing-lab/:projectId/:scriptId/coveragePOST /api/v1/story-projects/{projectId}/series-bible/coverage<br>story:writesleeperhit bible coverage <projectId> --generate [--phase premise|full]generate_series_bible_coverage
Read Series Bible coverage<br><small>projects.series-bible.coverage.get</small>Writers Lab coverage panel<br>/dashboard/writing-lab/:projectId/:scriptId/coverageGET /api/v1/story-projects/{projectId}/series-bible/coverage<br>story:readsleeperhit bible coverage <projectId> [--phase premise|full]get_series_bible_coverage
Generate a project Series Bible<br><small>projects.series-bible.generate</small>Writers Lab project canon<br>/dashboard/writing-labPOST /api/v1/story-projects/{projectId}/series-bible<br>story:writesleeperhit bible generate <projectId>generate_series_bible
Read a project Series Bible<br><small>projects.series-bible.get</small>Writers Lab project canon<br>/dashboard/writing-labGET /api/v1/story-projects/{projectId}/series-bible<br>story:readsleeperhit bible get <projectId>get_series_bible
Save a project Series Bible<br><small>projects.series-bible.save</small>Writers Lab project canon<br>/dashboard/writing-labPATCH /api/v1/story-projects/{projectId}/series-bible<br>story:writesleeperhit bible save <projectId> --json <object>save_series_bible
List the sounds a project uses<br><small>projects.sounds.list</small>Writers Lab project library<br>/dashboard/writing-labGET /api/v1/story-projects/{projectId}/sounds<br>story:readsleeperhit projects sounds <projectId> [--kind bell|music|sfx] [--query <text>]list_project_sounds
Update a story project<br><small>projects.update</small>Writers Lab project page actions menu<br>/dashboard/writing-lab/:projectIdPATCH /api/v1/story-projects/{projectId}<br>story:writesleeperhit projects update <projectId> [--name <text>] [--description <text>] [--metadata <json>] [--archived true|false] [--season-cadence monthly|numbered]update_project

publishing

OperationUIAPICLIMCP
List publishing analytics<br><small>publishing.analytics.list</small>Writers Lab publishing listening numbers<br>/dashboard/writing-lab/:projectId/:scriptId/publishingGET /api/v1/publishing-series/{seriesId}/analytics<br>publishing:analyticssleeperhit publishing analytics list <seriesId>list_publishing_analytics
List publishing destinations<br><small>publishing.destinations.list</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingGET /api/v1/publishing-series/{seriesId}/destinations<br>publishing:readsleeperhit publishing destinations list <seriesId>list_publishing_destinations
Connect a publishing destination<br><small>publishing.destinations.upsert</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPOST /api/v1/publishing-series/{seriesId}/destinations<br>publishing:connectsleeperhit publishing destinations upsert <seriesId> --provider rssupsert_publishing_destination
Read RSS feed<br><small>publishing.feed</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingGET /api/v1/publishing-feeds/{seriesSlug}.xml<br>sleeperhit publishing feed <seriesSlug>get_publishing_rss_feed
List publishing provider config<br><small>publishing.providerConfigs.list</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingGET /api/v1/publishing-provider-configs<br>publishing:connectsleeperhit publishing provider-configs listlist_publishing_provider_configs
Upsert publishing provider config<br><small>publishing.providerConfigs.upsert</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPOST /api/v1/publishing-provider-configs<br>publishing:connectsleeperhit publishing provider-configs upsert --provider <provider> --medium <medium>upsert_publishing_provider_config
Cancel a publishing release<br><small>publishing.releases.cancel</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPOST /api/v1/publishing-releases/{releaseId}/cancel<br>publishing:publishsleeperhit publishing releases cancel <releaseId>cancel_publishing_release
Promote an artifact into a publishing release<br><small>publishing.releases.create</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPOST /api/v1/publishing-series/{seriesId}/releases<br>publishing:writesleeperhit publishing releases create <seriesId> --source-artifact-id <artifactId> --title <title>create_publishing_release
Generate a podcast episode description<br><small>publishing.releases.generate_description</small>Writers Lab publishing episode editor<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPOST /api/v1/publishing-releases/{releaseId}/description/generate<br>publishing:writesleeperhit publishing releases generate-description <releaseId> [--direction <text>]generate_publishing_release_description
Read a publishing release<br><small>publishing.releases.get</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingGET /api/v1/publishing-releases/{releaseId}<br>publishing:readsleeperhit publishing releases get <releaseId>get_publishing_release
List publishing releases<br><small>publishing.releases.list</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingGET /api/v1/publishing-series/{seriesId}/releases<br>publishing:readsleeperhit publishing releases list <seriesId>list_publishing_releases
Publish a release<br><small>publishing.releases.publish</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPOST /api/v1/publishing-releases/{releaseId}/publish<br>publishing:publishsleeperhit publishing releases publish <releaseId> --confirmpublish_publishing_release
Refresh published release media<br><small>publishing.releases.refresh_media</small>Writers Lab publishing episode editor<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPOST /api/v1/publishing-releases/{releaseId}/refresh-media<br>publishing:publishsleeperhit publishing releases refresh-media <releaseId> --source-artifact-id <artifactId>refresh_published_release_media
Schedule a publishing release<br><small>publishing.releases.schedule</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPOST /api/v1/publishing-releases/{releaseId}/schedule<br>publishing:publishsleeperhit publishing releases schedule <releaseId> --at <iso> --confirmschedule_publishing_release
List publishing release targets<br><small>publishing.releases.targets</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingGET /api/v1/publishing-releases/{releaseId}/targets<br>publishing:readsleeperhit publishing releases targets <releaseId>list_publishing_release_targets
Unpublish a published release<br><small>publishing.releases.unpublish</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPOST /api/v1/publishing-releases/{releaseId}/unpublish<br>publishing:publishsleeperhit publishing releases unpublish <releaseId> --confirmunpublish_publishing_release
Update publishing release metadata<br><small>publishing.releases.update</small>Writers Lab publishing episode editor<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPATCH /api/v1/publishing-releases/{releaseId}<br>publishing:writesleeperhit publishing releases update <releaseId> [--title <title>] [--description <text>]update_publishing_release
Create a publishing series<br><small>publishing.series.create</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPOST /api/v1/story-projects/{projectId}/publishing-series<br>publishing:writesleeperhit publishing series create <projectId> [--title <title>]create_publishing_series
List a show's episodes<br><small>publishing.series.episodes</small>Writers Lab publishing — Show<br>/dashboard/writing-lab/:projectId/:scriptId/publishingGET /api/v1/publishing-series/{seriesId}/episodes<br>publishing:readsleeperhit publishing series episodes <seriesId>list_show_episodes
Generate podcast cover art<br><small>publishing.series.generateCoverArt</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPOST /api/v1/publishing-series/{seriesId}/generate-cover-art<br>publishing:writesleeperhit publishing series generate-cover-art <seriesId> [--title <title>] [--description <text>] [--podcast-category <text>] [--podcast-subcategory <text>]generate_publishing_cover_art
Read a publishing series<br><small>publishing.series.get</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingGET /api/v1/publishing-series/{seriesId}<br>publishing:readsleeperhit publishing series get <seriesId>get_publishing_series
List publishing series<br><small>publishing.series.list</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingGET /api/v1/story-projects/{projectId}/publishing-series<br>publishing:readsleeperhit publishing series list <projectId>list_publishing_series
Preview a show's sources<br><small>publishing.series.previewSources</small>Writers Lab publishing — Show<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPOST /api/v1/publishing-series/{seriesId}/source-preview<br>publishing:readsleeperhit publishing series preview-sources <seriesId> [--sources <json>] [--lookback-days <n>]preview_show_sources
Make a show episode now (a preview until live)<br><small>publishing.series.produceEpisode</small>Writers Lab publishing — Show<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPOST /api/v1/publishing-series/{seriesId}/episodes<br>publishing:writesleeperhit publishing series produce <seriesId> [--prompt <text>] [--episode-type <key>] [--live] [--confirm]produce_show_episode
Quote a recurring show<br><small>publishing.series.quote</small>Writers Lab publishing — Show<br>/dashboard/writing-lab/:projectId/:scriptId/publishingGET /api/v1/publishing-series/{seriesId}/quote<br>publishing:readsleeperhit publishing series quote <seriesId>get_show_quote
Update a publishing series<br><small>publishing.series.update</small>Writers Lab publishing<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPATCH /api/v1/publishing-series/{seriesId}<br>publishing:writesleeperhit publishing series update <seriesId> [--title <title>] [--status <status>] [--standing-approval-key <keyId|self|null>] [--episode-credit-cap <n>] [--monthly-credit-cap <n>] [--publish-policy auto|hold] [--confirm]update_publishing_series
List interesting recurring sources<br><small>publishing.showSourceTemplates.list</small>Writers Lab publishing — Show<br>/dashboard/writing-lab/:projectId/:scriptId/publishingGET /api/v1/show-source-templates<br>publishing:readsleeperhit publishing series templateslist_show_source_templates
Advance a coverage-gated season episode<br><small>seasons.advance</small>Writers Lab publishing season runner<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPOST /api/v1/season-runs/{runId}/advance<br>story:write, artifact:publish, publishing:writesleeperhit seasons advance <runId> | replan <runId> [--instruction <text>] --confirm | retry-coverage <runId> --confirm | revise <runId> (--instruction <text> | --screenplay-file <path>) --confirm | publish <runId> --confirmadvance_season_run
Approve a complete season map<br><small>seasons.approve</small>Writers Lab publishing season runner<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPOST /api/v1/season-runs/{runId}/approve<br>story:writesleeperhit seasons approve <runId> --expected-map-version <n> --confirmapprove_season_map
Create a conversational season run<br><small>seasons.create</small>Writers Lab Seasons & episodes<br>/dashboard/writing-lab/:projectIdPOST /api/v1/story-projects/{projectId}/season-runs<br>story:write, publishing:writesleeperhit seasons create <projectId>create_season_run
Map one season episode<br><small>seasons.episodes.map</small>Writers Lab publishing season runner<br>/dashboard/writing-lab/:projectId/:scriptId/publishingPATCH /api/v1/season-runs/{runId}/episodes/{episodeId}<br>story:writesleeperhit seasons map <runId> <episodeId> --expected-map-version <n> --patch <json> [--confirm]map_season_episode
Read a season run<br><small>seasons.get</small>Writers Lab publishing season runner<br>/dashboard/writing-lab/:projectId/:scriptId/publishingGET /api/v1/season-runs/{runId}<br>story:readsleeperhit seasons get <runId>get_season_run
List season runs<br><small>seasons.list</small>Writers Lab publishing season runner<br>/dashboard/writing-lab/:projectId/:scriptId/publishingGET /api/v1/story-projects/{projectId}/season-runs<br>story:readsleeperhit seasons list <projectId>list_season_runs

scripts

OperationUIAPICLIMCP
Write a version's text<br><small>scripts.content.write</small>Writers Lab screenplay editor<br>/dashboard/writing-lab/:projectId/:scriptIdPATCH /api/v1/scripts/{scriptUploadId}/content<br>story:writesleeperhit script write <scriptUploadId> --file <path> [--expected-file <path>]write_script_content
Delete a whole script<br><small>scripts.delete</small>Writers Lab script delete<br>/dashboard/writing-lab/:projectId/:scriptId/overviewDELETE /api/v1/scripts/{scriptUploadId}<br>story:writesleeperhit script delete <scriptId> --confirmdelete_script
Export a screenplay as Fountain, Final Draft or PDF<br><small>scripts.export</small>Writers Lab export<br>/dashboard/writing-lab/:projectId/:scriptIdGET /api/v1/scripts/{scriptUploadId}/export<br>story:readsleeperhit script export <scriptUploadId> --format fountain|fdx|pdf [--out <path>] [--no-title-page] [--from-page N] [--to-page N] [--font <font>]export_script
Finish a draft into a locked version<br><small>scripts.finish</small>Writers Lab screenplay editor<br>/dashboard/writing-lab/:projectId/:scriptIdPOST /api/v1/scripts/{scriptUploadId}/finish<br>story:writesleeperhit script finish <scriptUploadId> [--coverage adopt|fresh]finish_draft
Read a script<br><small>scripts.get</small>Writers Lab script details<br>/dashboard/writing-labGET /api/v1/scripts/{scriptUploadId}<br>story:readsleeperhit script show <scriptId>get_script
Read one table-read line<br><small>scripts.lines.get</small>Writers Lab table-read line detail<br>/dashboard/writing-lab/:projectId/:scriptId/table-readGET /api/v1/scripts/{scriptUploadId}/lines/{entryIndex}<br>story:readsleeperhit script line get <scriptUploadId> <entryIndex> [--json]get_script_line_tuning
Edit one table-read line<br><small>scripts.lines.update</small>Writers Lab table-read line detail<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPATCH /api/v1/scripts/{scriptUploadId}/lines/{entryIndex}<br>story:writesleeperhit script line set <scriptUploadId> <entryIndex> [--text <t>] [--tts-text <t>] [--parenthetical <t>] [--scene-heading <h>] [--pause-ms N] [--emotions <a,b,c> [--volume N]]edit_script_line
Share a table read<br><small>scripts.share.create</small>Writers Lab table-read share dialog<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/scripts/{scriptUploadId}/share<br>artifact:publishsleeperhit script share create <scriptUploadId> [--audience public|private_review|team] [--mode theater|audio] [--scope whole|scene|entries|conversation] [--expires-in-days N] [--include-on-profile]share_script
Read a table read's share link<br><small>scripts.share.get</small>Writers Lab table-read share dialog<br>/dashboard/writing-lab/:projectId/:scriptId/table-readGET /api/v1/scripts/{scriptUploadId}/share<br>story:readsleeperhit script share get <scriptUploadId> [--json]get_script_share
Change a script's title, logline, format, genre or season<br><small>scripts.update</small>Writers Lab script details<br>/dashboard/writing-labPATCH /api/v1/scripts/{scriptUploadId}<br>story:writesleeperhit script update <scriptId> [--title <t>] [--slug <s>] [--logline <text>] [--media-type film|tv] [--genre <text>] [--season N] [--clear logline|genre|media-type]update_script
Upload a screenplay<br><small>scripts.upload</small>Writers Lab upload<br>/dashboard/writing-labPOST /api/v1/scripts<br>story:writesleeperhit script upload --title <title> --file <path> [--format text|fountain|fdx]upload_script
Delete one version of a script<br><small>scripts.versions.delete</small>Writers Lab script versions<br>/dashboard/writing-lab/:projectId/:scriptId/overviewDELETE /api/v1/scripts/{scriptUploadId}/versions/{versionId}<br>story:writesleeperhit script versions delete <scriptId> <scriptUploadId> --confirmdelete_script_version
Upload a new version of a script<br><small>scripts.versions.upload</small>Writers Lab script versions<br>/dashboard/writing-lab/:projectId/:scriptId/overviewPOST /api/v1/scripts/{scriptUploadId}/versions<br>story:writesleeperhit script versions add <scriptId> (--file <path> | --source <sourceId> | --file-url <url> [--file-name <name>]) [--format text|fountain|fdx]upload_script_version

sources

OperationUIAPICLIMCP
Attach a source<br><small>sources.create</small>Writers Lab project workflow<br>/dashboard/writing-labPOST /api/v1/story-projects/{projectId}/sources<br>source:writesleeperhit sources add <projectId> --type text|markdown|url|pdf [--producer <name> --external-id <id>] [--originated-at <iso>]add_source
Delete a source<br><small>sources.delete</small>Writers Lab project workflow<br>/dashboard/writing-labDELETE /api/v1/story-projects/{projectId}/sources/{sourceId}<br>source:writesleeperhit sources delete <projectId> <sourceId>delete_source
Read a source<br><small>sources.get</small>Writers Lab project workflow<br>/dashboard/writing-labGET /api/v1/story-projects/{projectId}/sources/{sourceId}<br>source:readsleeperhit sources get <projectId> <sourceId>get_source
List sources<br><small>sources.list</small>Writers Lab project workflow<br>/dashboard/writing-labGET /api/v1/story-projects/{projectId}/sources<br>source:readsleeperhit sources list <projectId>list_sources

table_read

OperationUIAPICLIMCP
Retry a failed creative analysis<br><small>scripts.tableRead.retryAnalysis</small>Writers Lab table-read studio<br>/dashboard/writing-lab/:projectId/:scriptId/table-readPOST /api/v1/scripts/{scriptUploadId}/table-read/retry-analysis<br>story:writesleeperhit script table-read retry-analysis <scriptUploadId>retry_creative_analysis

table-read

OperationUIAPICLIMCP
Mint a Performance Booth recording link<br><small>tableRead.performanceBooth.start</small>Writers Lab<br>/dashboard/writing-labPOST /api/v1/table-read/performance-booth<br>story:writesleeperhit performance-booth <jobId>create_performance_booth_link
Read which table-read lines have a performed take<br><small>tableRead.performanceBooth.status</small>Writers Lab<br>/dashboard/writing-labGET /api/v1/table-read/performance-booth<br>story:readsleeperhit performance-booth <jobId> --statusget_performance_booth_status

trailer

OperationUIAPICLIMCP
Read the trailer aspect ratio<br><small>trailer.aspect.get</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/aspect<br>story:readsleeperhit trailer aspect <jobId>get_trailer_aspect
Choose the trailer aspect ratio<br><small>trailer.aspect.set</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/aspect<br>story:writesleeperhit trailer aspect <jobId> <9:16|16:9|1:1>set_trailer_aspect
Choose the trailer audio policy<br><small>trailer.audioPolicy.set</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/audio-policy<br>story:writesleeperhit trailer audio-policy <jobId> [narrate|suppress]set_trailer_audio_policy
Read the trailer audio timeline<br><small>trailer.audioTimeline.get</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/storyboard/audio-timeline<br>story:readsleeperhit trailer timeline <jobId> showget_trailer_audio_timeline
Edit the trailer audio timeline<br><small>trailer.audioTimeline.mutate</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/storyboard/audio-timeline<br>story:writesleeperhit trailer timeline <jobId> <add-layer|remove-layer|generate-music|add-music-from-library|update-music|remove-music|generate-sfx|add-sfx-from-library|update-sfx|update-sfx-cues|remove-sfx> [flags] (sfx: --kind spot|ambience --length-ms N --fade-in-ms N --fade-out-ms N; update-sfx --muted|--unmuted --clear-length; update-sfx-cues --cues '<json>')generate_trailer_timeline_music
Let one trailer take still out at the provider go<br><small>trailer.beats.abandonTake</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/beats/{beatIndex}/abandon-take<br>artifact:publishsleeperhit trailer abandon-take <jobId> --beat <beatIndex> --call <callId> --take <n>abandon_trailer_take
Cut a trailer beat's line out, keep the rest of its footage<br><small>trailer.beats.dropLine</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/beats/{beatIndex}/drop-line<br>story:writesleeperhit trailer drop-line <jobId> --beat <beatIndex> [--line <n>] [--keep before|after] [--to <beatIndex>]drop_trailer_beat_line
Read a trailer's beats<br><small>trailer.beats.get</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/beats<br>story:readsleeperhit trailer beats <jobId>get_trailer_beats
Override the repair decision on one trailer take<br><small>trailer.beats.overrideTakeRepair</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/beats/{beatIndex}/take-repair-override<br>story:writesleeperhit trailer override-repair <jobId> --beat <n> --call <callId> --take <n> --keep|--restore|--rewatchoverride_trailer_take_repair
Refine one trailer beat<br><small>trailer.beats.refine</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/beats/refine<br>story:writesleeperhit trailer refine <jobId> --beat <n> [--story-beat <text>] [--shot-type <text>] [--motion-prompt <text>] [--transition-prompt <text>] [--transition-in <text>] [--caption <text>] [--composition image|text|both] [--visible-characters <a,b>] [--featured-character <name>] [--location <key>] [--duration <4..30>] [--shots <json>] [--character-action <text>] [--staging-notes <text>] [--arc-stage setup|escalation|turn|closing_question] [--advances-question <text>] [--montage | --no-montage]refine_trailer_beat
Render one trailer beat again<br><small>trailer.beats.renderClip</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/beats/render-clip<br>artifact:publishsleeperhit trailer render-clip <jobId> --beat <n> [--call <callId>] [--confirm]render_trailer_beat_clip
Repair one take of a trailer call in place<br><small>trailer.beats.repairTake</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/beats/{beatIndex}/repair-take<br>artifact:publishsleeperhit trailer repair-take <jobId> --beat <n> --call <callId> --take <n> [--confirm]repair_trailer_take
Select a take of one trailer call<br><small>trailer.beats.selectTake</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/beats/{beatIndex}/select-take<br>story:writesleeperhit trailer select-take <jobId> --beat <n> --call <callId> --take <n>select_trailer_take
Stage one trailer take's line as a voice-over<br><small>trailer.beats.stageVoiceOver</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/beats/{beatIndex}/stage-voice-over<br>artifact:publishsleeperhit trailer stage-voice-over <jobId> --beat <n> --call <callId> --take <n> [--confirm]stage_trailer_take_as_voice_over
Trim one take of a trailer call<br><small>trailer.beats.trimTake</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/beats/{beatIndex}/trim-take<br>story:writesleeperhit trailer trim-take <jobId> --beat <n> --call <callId> --take <n> --keep <start>-<end>trim_trailer_take
Read the trailer camera motion<br><small>trailer.camera.get</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/camera<br>story:readsleeperhit trailer camera <jobId>get_trailer_camera
Set the trailer camera motion<br><small>trailer.camera.set</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/camera<br>story:writesleeperhit trailer camera <jobId> [--handheld off|subtle|medium] [--snap <beatIndex>:<shot>:<NAME>[@<zoom>]]… [--reframe <beatIndex>:<shot>:<FROM>><TARGET>]… [--clear <beatIndex>]… [--off]set_trailer_camera
Stop a trailer's render<br><small>trailer.cancelRender</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/cancel-render<br>artifact:publishsleeperhit trailer cancel-render <jobId>cancel_trailer_render
Set a trailer's closing sequence<br><small>trailer.closingSequence.update</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/closing-sequence<br>story:writesleeperhit trailer closing-sequence <jobId> [--quote <text> [--quote-attribution <source>] | --no-quote] [--coming-soon <text>] [--production-credit <text>] [--on|--off] | --clearupdate_trailer_closing_sequence
Delete a trailer<br><small>trailer.delete</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosDELETE /api/v1/trailers/{jobId}<br>story:writesleeperhit trailer delete <jobId>delete_trailer
Duplicate a trailer from its plan<br><small>trailer.duplicate</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/duplicate<br>story:writesleeperhit trailer duplicate <jobId> [--title <text>]duplicate_trailer
Finish the trailer<br><small>trailer.finish</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/finish<br>artifact:publishsleeperhit trailer finish <jobId> [--resolution 720p|1080p] [--confirm] [--acknowledge-video-coverage]finish_trailer
Read a trailer's intent<br><small>trailer.intent.get</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/intent<br>story:readsleeperhit trailer intent <jobId>get_video_intent
Edit a draft trailer's intent<br><small>trailer.intent.update</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/intent<br>story:writesleeperhit trailer intent <jobId> [--purpose <text>] [--audience <text>] [--logline <text>] [--theme <text>] [--central-question <text>] [--stakes <text>] [--viewer-promise <text>] [--ending <text>] [--arc <json>]update_video_intent
Set a trailer's black interludes<br><small>trailer.interludes.update</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/interludes<br>story:writesleeperhit trailer interludes <jobId> --json <list> | --file <path> | --clearupdate_trailer_interludes
Read the trailer finish<br><small>trailer.look.get</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/look<br>story:readsleeperhit trailer look <jobId>get_trailer_look
Set the trailer finish<br><small>trailer.look.set</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/look<br>story:writesleeperhit trailer look <jobId> <camera|period-35mm|night-interior|none> [--intensity light|standard|strong] [--adjust <effect>=<level>,…]set_trailer_look
Let the trailer's automatic fixes try more<br><small>trailer.moreFixes</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/more-fixes<br>artifact:publishsleeperhit trailer more-fixes <jobId> [--confirm]allow_more_trailer_fixes
Read the trailer motion blur<br><small>trailer.motionBlur.get</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/motion-blur<br>story:readsleeperhit trailer motion-blur <jobId>get_trailer_motion_blur
Set the trailer motion blur<br><small>trailer.motionBlur.set</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/motion-blur<br>story:writesleeperhit trailer motion-blur <jobId> [--beat <beatIndex>[:<shot>,…|moving|none]]… [--strength standard|subtle] [--off]set_trailer_motion_blur
Read the trailer narrator<br><small>trailer.narrator.get</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/narrator<br>story:readsleeperhit trailer narrator <jobId>get_trailer_narrator
Cast the trailer narrator<br><small>trailer.narrator.set</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/narrator<br>story:writesleeperhit trailer narrator <jobId> --voice-id <voiceId> [--provider <name>] | --clearset_trailer_narrator
Approve the trailer plan into the render<br><small>trailer.plan.approve</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/plan/approve<br>story:writesleeperhit trailer approve-plan <jobId> [--confirm] [--acknowledge-plan-coverage "<reason>"]approve_trailer_plan
Read the trailer quiet track<br><small>trailer.quietTrack.get</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/quiet-track<br>story:readsleeperhit trailer quiet-track <jobId>get_trailer_quiet_track
Set the trailer quiet track<br><small>trailer.quietTrack.set</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/quiet-track<br>story:writesleeperhit trailer quiet-track <jobId> --track silence|room_tone | --offset_trailer_quiet_track
Re-assemble a trailer whose assembly failed, or rebuild its master<br><small>trailer.reassemble</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/reassemble<br>story:writesleeperhit trailer reassemble <jobId>reassemble_trailer
Rename a trailer<br><small>trailer.rename</small>Writers Lab trailer list<br>/dashboard/writing-lab/:projectId/:scriptId/videosPATCH /api/v1/trailers/{jobId}<br>story:writesleeperhit trailer rename <jobId> <title> [--automatic]rename_trailer
Read every trailer beat's render state and credit trail<br><small>trailer.renderStates.get</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/render-states<br>story:readsleeperhit trailer render-status <jobId>get_trailer_render_states
Read the trailer delivery class<br><small>trailer.resolution.get</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/resolution<br>story:readsleeperhit trailer resolution <jobId>get_trailer_resolution
Choose the trailer delivery class<br><small>trailer.resolution.set</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/resolution<br>story:writesleeperhit trailer resolution <jobId> --resolution <720p|1080p> | --defaultset_trailer_resolution
Read per-beat music and sound effects<br><small>trailer.sceneAudio.get</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/storyboard/audio<br>story:readsleeperhit trailer audio <jobId>get_trailer_scene_audio
Score one beat's music<br><small>trailer.sceneMusic.mutate</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/storyboard/music<br>story:writesleeperhit trailer music <score|update|remove|apply-library> <jobId> --beat <n> [flags]score_trailer_scene_music
Place sound effects on one beat<br><small>trailer.sceneSfx.mutate</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/storyboard/sfx<br>story:writesleeperhit trailer sfx <add|update|remove|apply-library> <jobId> --beat <n> [flags]add_trailer_scene_sfx
Read the trailer's score to picture<br><small>trailer.scoreToPicture.get</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/score-to-picture<br>story:readsleeperhit trailer score-to-picture <jobId> showget_trailer_score_to_picture
Revert the trailer to its scene beds<br><small>trailer.scoreToPicture.revert</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/score-to-picture/revert<br>story:writesleeperhit trailer score-to-picture <jobId> revertrevert_trailer_score_to_picture
Score the trailer to picture<br><small>trailer.scoreToPicture.start</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/score-to-picture<br>artifact:publishsleeperhit trailer score-to-picture <jobId> start [--direction <text>] [--confirm]score_trailer_to_picture
Read the trailer sound map<br><small>trailer.soundMap.get</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/storyboard/sound-map<br>story:readsleeperhit trailer sound-map <jobId> [--beat <n>]get_trailer_sound_map
Read a trailer beat's earlier cuts<br><small>trailer.storyboard.beatTakes</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/storyboard/takes<br>story:readsleeperhit trailer takes <jobId> [--beat <n>]get_trailer_beat_takes
Generate trailer plan coverage<br><small>trailer.storyboard.coverage.generate</small>Writers Lab coverage panel<br>/dashboard/writing-lab/:projectId/:scriptId/coveragePOST /api/v1/trailers/{jobId}/storyboard/coverage<br>story:writesleeperhit trailer coverage <jobId> --generategenerate_storyboard_coverage
Read trailer plan coverage<br><small>trailer.storyboard.coverage.get</small>Writers Lab coverage panel<br>/dashboard/writing-lab/:projectId/:scriptId/coverageGET /api/v1/trailers/{jobId}/storyboard/coverage<br>story:readsleeperhit trailer coverage <jobId>get_storyboard_coverage
Direct how a trailer beat's text moves<br><small>trailer.storyboard.directTextMotion</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/storyboard/direct-text-motion<br>story:writesleeperhit trailer direct-text-motion <jobId> --beat <n> --direction <text> | --closing-element quote|coming-soon|production-credit --direction <text> | --cleardirect_trailer_text_motion
Insert a blank trailer beat<br><small>trailer.storyboard.insertBeat</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/storyboard/insert-beat<br>story:writesleeperhit trailer insert-beat <jobId> [--at <n> | --after <n>]insert_trailer_beat
Move a trailer beat to another position<br><small>trailer.storyboard.moveBeat</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/storyboard/move-beat<br>story:writesleeperhit trailer move-beat <jobId> --from <n> --to <n>move_trailer_beat
Render one trailer text layer<br><small>trailer.storyboard.regenerateText</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/storyboard/regenerate-text<br>artifact:publishsleeperhit trailer regenerate-text <jobId> --beat <n> [--confirm]regenerate_trailer_text
Remove a trailer beat<br><small>trailer.storyboard.removeBeat</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/storyboard/remove-beat<br>story:writesleeperhit trailer remove-beat <jobId> --beat <n>remove_trailer_beat
Put an earlier cut of a beat back<br><small>trailer.storyboard.restoreTake</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/storyboard/restore-take<br>story:writesleeperhit trailer restore-take <jobId> --beat <n> --url <url>restore_trailer_take
Read a trailer version<br><small>trailer.versions.get</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/versions/{number}<br>story:readsleeperhit trailer version-clips <jobId> <number> [--download <dir>]get_trailer_version
List the trailer versions<br><small>trailer.versions.list</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/versions<br>story:readsleeperhit trailer versions <jobId>list_trailer_versions
Ask for a trailer version zip<br><small>trailer.versions.zip</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/versions/{number}/zip<br>story:writesleeperhit trailer version-clips <jobId> <number> --ziprequest_trailer_version_zip
Re-stitch the finished trailer master<br><small>trailer.video.export</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/video-export<br>story:writesleeperhit trailer export <jobId>export_trailer_video
Cover the trailer video again<br><small>trailer.videoCoverage.generate</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosPOST /api/v1/trailers/{jobId}/video-coverage<br>story:writesleeperhit trailer video-coverage <jobId> --generategenerate_video_coverage
Read trailer video coverage<br><small>trailer.videoCoverage.get</small>Writers Lab videos trailer review<br>/dashboard/writing-lab/:projectId/:scriptId/videosGET /api/v1/trailers/{jobId}/video-coverage<br>story:readsleeperhit trailer video-coverage <jobId>get_video_coverage

voices

OperationUIAPICLIMCP
Mint a voice-clone recording link<br><small>voices.cloneLink</small>Writers Lab<br>/dashboard/writing-labPOST /api/v1/voices/clone-link<br>story:writesleeperhit voices clonecreate_voice_clone_link
Mint a voice consent link<br><small>voices.consentLink</small>Writers Lab<br>/dashboard/writing-labPOST /api/v1/voices/{voiceId}/consent-link<br>story:writesleeperhit voices consent <voiceId>create_voice_consent_link
Delete a library voice<br><small>voices.delete</small>Writers Lab<br>/dashboard/writing-labDELETE /api/v1/voices/{voiceId}<br>story:writesleeperhit voices delete <voiceId> [--confirm]delete_voice
List my studio voices<br><small>voices.list</small>Writers Lab<br>/dashboard/writing-labGET /api/v1/voices<br>story:readsleeperhit voices listlist_voices
Migrate a voice everywhere it is used<br><small>voices.migrate</small>Writers Lab<br>/dashboard/writing-labPOST /api/v1/voice-migrations<br>story:writesleeperhit voices migrate <fromVoiceId> --to <toVoiceId> [--to-provider <p>] [--to-name <n>] [--project <projectId>] [--character <c>] [--confirm]migrate_voice
Undo a voice migration<br><small>voices.migrationUndo</small>Writers Lab<br>/dashboard/writing-labPOST /api/v1/voice-migrations/{migrationId}/undo<br>story:writesleeperhit voices migration-undo <migrationId>undo_voice_migration
List voice migrations<br><small>voices.migrations</small>Writers Lab<br>/dashboard/writing-labGET /api/v1/voice-migrations<br>story:readsleeperhit voices migrations [--voice <voiceId>]list_voice_migrations
Hear a voice say a line<br><small>voices.preview</small>Writers Lab<br>/dashboard/writing-labPOST /api/v1/voices/preview<br>story:writesleeperhit voices preview <voiceId> (--text <line> | --artifact <artifactId> --character <c>) [--provider <p>]preview_voice
Poll a Pro voice clone<br><small>voices.pro.get</small>Writers Lab<br>/dashboard/writing-labGET /api/v1/voices/pro/{jobId}<br>story:readsleeperhit voices pro status <jobId>get_pro_voice_clone
Read the Pro voice clone recording script<br><small>voices.pro.script</small>Writers Lab<br>/dashboard/writing-labGET /api/v1/voices/pro/script<br>story:readsleeperhit voices pro scriptget_pro_voice_clone_script
Start a Pro voice clone<br><small>voices.pro.start</small>Writers Lab<br>/dashboard/writing-labPOST /api/v1/voices/pro/start<br>story:writesleeperhit voices clone --pro --name <name> [--language <iso>] [--upgrade-from <voiceId>]create_pro_voice_clone_link
Start Pro voice clone training<br><small>voices.pro.train</small>Writers Lab<br>/dashboard/writing-labPOST /api/v1/voices/pro/train<br>story:writesleeperhit voices pro train <jobId>start_pro_voice_clone_training
Rename a library voice<br><small>voices.rename</small>Writers Lab<br>/dashboard/writing-labPATCH /api/v1/voices/{voiceId}<br>story:writesleeperhit voices rename <voiceId> --name <name>rename_voice
Withdraw a cloned voice's consent<br><small>voices.revokeConsent</small>Writers Lab<br>/dashboard/writing-labPOST /api/v1/voices/{voiceId}/revoke-consent<br>story:writesleeperhit voices revoke-consent <voiceId> --confirmrevoke_voice_consent

OpenAPI endpoint summary

EndpointOperation IDScopeIdempotentSchemas
DELETE /api/v1/account/deletioncancelAccountDeletionaccount:writenoresponse:AccountDeletionStatus
GET /api/v1/account/deletiongetAccountDeletionaccount:readnoresponse:AccountDeletionStatus
POST /api/v1/account/deletionrequestAccountDeletionaccount:writeyesrequest:AccountDeletionRequest<br>response:AccountDeletionStatus
GET /api/v1/account/exportgetAccountExportaccount:readnoresponse:AccountExportStatus
POST /api/v1/account/exportrequestAccountExportaccount:readyesresponse:AccountExportStatus
GET /api/v1/agent-guidancegetAgentGuidancestory:readnoresponse:AgentGuidance
GET /api/v1/artifacts/{artifactId}getStoryArtifactartifact:readnoresponse:StoryArtifactEnvelope
PATCH /api/v1/artifacts/{artifactId}renameStoryArtifactstory:writenorequest:ArtifactRenameRequest<br>response:RenamedArtifact
POST /api/v1/artifacts/{artifactId}/avatar-videoanimateArtifactAvatarartifact:publishyesrequest:TableReadAvatarVideoRequest<br>response:TableReadAvatarVideoResponse
POST /api/v1/artifacts/{artifactId}/avatarrecastArtifactAvatarartifact:publishyesrequest:AvatarRecastRequest
GET /api/v1/artifacts/{artifactId}/castgetArtifactCastartifact:readnoresponse:CastEnvelope
POST /api/v1/artifacts/{artifactId}/castupdateArtifactCastartifact:publishyesrequest:CastBatchRequest
GET /api/v1/artifacts/{artifactId}/coveragegetArtifactCoverageartifact:readnoresponse:CoverageReportEnvelope
POST /api/v1/artifacts/{artifactId}/coveragegenerateArtifactCoveragestory:writeyesresponse:CoverageDispatchAck
GET /api/v1/artifacts/{artifactId}/coverage/blacklistgetBlackListAnalysisartifact:readnoresponse:BlackListAnalysisResponse
GET /api/v1/artifacts/{artifactId}/coverage/versionslistCoverageVersionsartifact:readnoresponse:CoverageVersionsResponse
POST /api/v1/artifacts/{artifactId}/figurerecastArtifactFigureartifact:publishyesrequest:FigureRecastRequest
POST /api/v1/artifacts/{artifactId}/finalizefinalizeArtifactartifact:publishyes
POST /api/v1/artifacts/{artifactId}/finalize/retryretryArtifactFinalizeartifact:publishyesresponse:ArtifactFinalizeAck
GET /api/v1/artifacts/{artifactId}/location-platesgetArtifactLocationPlatesartifact:readnoresponse:LocationPlatesEnvelope
POST /api/v1/artifacts/{artifactId}/location-plates/{plateKey}/remakeremakeArtifactLocationPlateartifact:publishyesrequest:LocationPlateRemakeRequest<br>response:LocationPlateRemakeEnvelope
GET /api/v1/artifacts/{artifactId}/musicgetArtifactMusicartifact:readnoresponse:MusicStatusEnvelope
POST /api/v1/artifacts/{artifactId}/musicgenerateArtifactMusicartifact:publishyesrequest:MusicGenerateRequest<br>response:MusicGenerateResponse
GET /api/v1/artifacts/{artifactId}/noun-imagerygetArtifactNounImageryartifact:readnoresponse:TableReadNounImageryResponse
POST /api/v1/artifacts/{artifactId}/noun-imagerygenerateArtifactNounImageryartifact:publishyesrequest:TableReadNounImageryRequest<br>response:TableReadNounImageryQueued
POST /api/v1/artifacts/{artifactId}/performanceupdateArtifactPerformanceartifact:publishyesrequest:PerformanceDirectiveRequest<br>response:PerformanceDirectiveResponse
GET /api/v1/artifacts/{artifactId}/publish-stategetArtifactPublishStateartifact:readnoresponse:ArtifactPublishState
POST /api/v1/artifacts/{artifactId}/publish-statesetArtifactPublishStateartifact:publishnorequest:ArtifactPublishStateRequest<br>response:ArtifactPublishStateResult
POST /api/v1/artifacts/{artifactId}/refinerefineArtifactartifact:publishyesrequest:RefineArtifactRequest<br>response:RefineArtifactEnvelope
GET /api/v1/artifacts/{artifactId}/render-videogetArtifactRenderStatusartifact:readnoresponse:ArtifactRenderStatus
POST /api/v1/artifacts/{artifactId}/render-videorenderArtifactVideoartifact:publishyesresponse:ArtifactRenderAck
GET /api/v1/artifacts/{artifactId}/review-itemslistLineReviewsartifact:readnoresponse:LineReviewList
POST /api/v1/artifacts/{artifactId}/review-itemsflagLineForReviewartifact:publishnorequest:LineReviewFlag<br>response:LineReviewFlagResult
DELETE /api/v1/artifacts/{artifactId}/review-items/{entryIndex}unflagLineForReviewartifact:publishno
POST /api/v1/artifacts/{artifactId}/revoice-linerevoiceArtifactLineartifact:publishyesrequest:RevoiceLineRequest<br>response:RevoiceLineEnvelope
POST /api/v1/artifacts/{artifactId}/revoicerevoiceArtifactCharacterartifact:publishyesrequest:RevoiceRequest<br>response:RevoiceEnvelope
GET /api/v1/artifacts/{artifactId}/scriptgetArtifactScriptartifact:readnoresponse:ArtifactScriptContentEnvelope
POST /api/v1/artifacts/{artifactId}/scriptreplaceArtifactScriptartifact:publishyesrequest:ArtifactScriptReplacementRequest<br>response:StoryJobEnvelope
GET /api/v1/artifacts/{artifactId}/sfxlistArtifactSfxartifact:readnoresponse:SfxListResponse
POST /api/v1/artifacts/{artifactId}/sfxmanageArtifactSfxartifact:publishyesrequest:SfxManageRequest<br>response:SfxMutationResponse
GET /api/v1/artifacts/{artifactId}/soundscapeslistArtifactSoundscapesartifact:readnoresponse:TableReadSoundscapesResponse
POST /api/v1/artifacts/{artifactId}/soundscapesmanageArtifactSoundscapesartifact:publishyesrequest:TableReadSoundscapeRequest<br>response:TableReadSoundscapeResponse
POST /api/v1/artifacts/{artifactId}/theater-backdrop-promptswriteArtifactTheaterBackdropPromptsartifact:publishyesrequest:TableReadBackdropPromptsRequest<br>response:TableReadBackdropPromptsResponse
POST /api/v1/artifacts/{artifactId}/theater-canvasapplyTheaterCanvasartifact:publishyesrequest:TheaterCanvasRequest<br>response:TheaterMotionResult
POST /api/v1/artifacts/{artifactId}/theater-fx-cuesgenerateArtifactTheaterFxCuesartifact:publishyesrequest:TableReadFxCuesRequest<br>response:TableReadFxCuesResponse
POST /api/v1/artifacts/{artifactId}/theater-motion-clipgenerateTheaterMotionClipartifact:publishyesrequest:TheaterMotionClipRequest<br>response:TheaterMotionResult
POST /api/v1/artifacts/{artifactId}/theater-motiondirectTheaterMotionBeatartifact:publishyesrequest:TheaterMotionBeatRequest<br>response:TheaterMotionResult
POST /api/v1/artifacts/{artifactId}/theater-sceneupdateArtifactTheaterSceneartifact:publishyesrequest:TableReadTheaterSceneRequest<br>response:TableReadTheaterSceneResponse
GET /api/v1/artifacts/{artifactId}/theatergetArtifactTheaterartifact:readnoresponse:TableReadTheaterResponse
POST /api/v1/artifacts/{artifactId}/theaterupdateArtifactTheaterartifact:publishyesrequest:TableReadTheaterUpdateRequest<br>response:TableReadTheaterUpdateResponse
POST /api/v1/artifacts/{artifactId}/update-recordingupdateArtifactRecordingartifact:publishyesrequest:UpdateRecordingRequest<br>response:UpdateRecordingEnvelope
POST /api/v1/artifacts/{artifactId}/voice-modificationmodifyArtifactVoiceartifact:publishyesrequest:VoiceModificationRequest<br>response:VoiceModificationResponse
POST /api/v1/artifacts/{artifactId}/voicerecastArtifactVoiceartifact:publishyes
POST /api/v1/artifacts/{artifactId}/voice/restorerestoreArtifactVoiceartifact:publishyesrequest:VoiceRestoreRequest<br>response:VoiceRestoreResponse
GET /api/v1/background-activitygetBackgroundActivitystory:readno
POST /api/v1/brand-coverageanalyzeBrandCoveragestory:writeyesrequest:BrandCoverageRequest<br>response:BrandCoverageAck
GET /api/v1/brand-coverage/{reportId}getBrandCoveragestory:readnoresponse:BrandCoverageReport
POST /api/v1/brand-narrativegenerateBrandNarrativestory:writeyesrequest:BrandNarrativeRequest<br>response:BrandNarrativeResponse
GET /api/v1/capabilitiesgetCapabilitiesstory:readnoresponse:Capabilities
GET /api/v1/creditsgetCreditscredits:readnoresponse:CreditsSummary
DELETE /api/v1/device/credentialrevokeDeviceCredentialno
POST /api/v1/device/credentialexchangeDeviceCodeno
GET /api/v1/examplesgetApiExamplesno
GET /api/v1/generation-healthgetGenerationHealthstory:readnoresponse:GenerationHealthEnvelope
GET /api/v1/library/audiolistMyLibraryAudiostory:readnoresponse:MyLibraryAudio
POST /api/v1/library/audioimportMyLibraryAudiostory:writeyesrequest:MyLibraryAudioImportRequest<br>response:MyLibraryAudioImportResponse
PATCH /api/v1/library/audio/{assetId}renameMyLibraryAudiostory:writenorequest:MyLibraryAudioRenameRequest<br>response:MyLibraryAudioRenameResponse
GET /api/v1/library/imageslistMyLibraryImagesstory:readnoresponse:MyLibraryImages
GET /api/v1/likeness-consentslistLikenessConsentsstory:readnoresponse:LikenessConsentList
POST /api/v1/likeness-consents/{consentId}/revokerevokeLikenessConsentstory:writeyesresponse:StudioLikenessConsent
POST /api/v1/likeness-consents/linkscreateLikenessConsentLinkstory:writeyesresponse:LikenessConsentLinkResponse
DELETE /api/v1/pitch-decks/{jobId}deletePitchDeckstory:writenoresponse:VideoDeleteResult
PATCH /api/v1/pitch-decks/{jobId}renamePitchDeckstory:writenorequest:ArtifactRenameRequest<br>response:RenamedVideo
GET /api/v1/pitch-decks/{jobId}/bell-lanegetPitchDeckBellLanestory:readno
POST /api/v1/pitch-decks/{jobId}/bell-lanestrikePitchDeckBellOnTheBeatstory:writeyes
POST /api/v1/pitch-decks/{jobId}/bell-lane/removeremovePitchDeckBellLanestory:writeyes
GET /api/v1/pitch-decks/{jobId}/cameragetPitchDeckCamerastory:readnoresponse:CameraView
POST /api/v1/pitch-decks/{jobId}/camerasetPitchDeckCamerastory:writeyesrequest:CameraSetRequest<br>response:CameraSetAck
POST /api/v1/pitch-decks/{jobId}/cancel-rendercancelPitchDeckRenderartifact:publishyesresponse:RenderCancelResult
GET /api/v1/pitch-decks/{jobId}/chaptersgetPitchDeckChaptersstory:readnoresponse:PitchDeckChapters
POST /api/v1/pitch-decks/{jobId}/chapters/{chapterIndex}/abandon-takeabandonPitchDeckTakeartifact:publishyesrequest:TakeAbandonRequest<br>response:TakeAbandonResult
POST /api/v1/pitch-decks/{jobId}/chapters/{chapterIndex}/drop-linedropPitchDeckChapterLinestory:writeyesrequest:PitchDeckDropLineRequest<br>response:PitchDeckDropLineAnswer
POST /api/v1/pitch-decks/{jobId}/chapters/{chapterIndex}/repair-takerepairPitchDeckTakeartifact:publishyesrequest:TakeRepairRequest<br>response:TakeRepairAnswer
POST /api/v1/pitch-decks/{jobId}/chapters/{chapterIndex}/select-takeselectPitchDeckTakestory:writeyesrequest:PitchDeckSelectTakeRequest<br>response:PitchDeckSelectTakeAck
POST /api/v1/pitch-decks/{jobId}/chapters/{chapterIndex}/stage-voice-overstageVoiceOverPitchDeckTakeartifact:publishyesrequest:StageVoiceOverRequest<br>response:StageVoiceOverAnswer
POST /api/v1/pitch-decks/{jobId}/chapters/{chapterIndex}/take-repair-overrideoverridePitchDeckTakeRepairstory:writeyesrequest:TakeRepairOverrideRequest<br>response:TakeRepairOverrideAck
POST /api/v1/pitch-decks/{jobId}/chapters/{chapterIndex}/trim-taketrimPitchDeckTakestory:writeyesrequest:TakeTrimRequest<br>response:TakeTrimQueued
POST /api/v1/pitch-decks/{jobId}/chapters/insertinsertPitchDeckChapterstory:writeyesrequest:PitchDeckInsertChapterRequest<br>response:PitchDeckInsertChapterAck
POST /api/v1/pitch-decks/{jobId}/chapters/refinerefinePitchDeckChapterstory:writeyesrequest:PitchDeckChapterRefineRequest<br>response:PitchDeckChapterRefineAck
POST /api/v1/pitch-decks/{jobId}/chapters/removeremovePitchDeckChapterstory:writeyesrequest:PitchDeckRemoveChapterRequest<br>response:PitchDeckRemoveChapterAck
POST /api/v1/pitch-decks/{jobId}/chapters/render-cliprenderPitchDeckChapterClipartifact:publishyesrequest:PitchDeckRenderClipRequest<br>response:PitchDeckRenderAnswer
POST /api/v1/pitch-decks/{jobId}/chapters/reorderreorderPitchDeckChaptersstory:writeyesrequest:PitchDeckReorderChaptersRequest<br>response:PitchDeckReorderChaptersAck
POST /api/v1/pitch-decks/{jobId}/closing-sequenceupdatePitchDeckClosingSequencestory:writeyesrequest:PitchDeckClosingSequenceUpdateRequest<br>response:PitchDeckClosingSequenceUpdateAck
POST /api/v1/pitch-decks/{jobId}/duplicateduplicatePitchDeckstory:writeyesrequest:PitchDeckDuplicateRequest<br>response:PitchDeckDuplicate
POST /api/v1/pitch-decks/{jobId}/finishfinishPitchDeckartifact:publishyesrequest:PitchDeckFinishRequest<br>response:PitchDeckFinishAnswer
GET /api/v1/pitch-decks/{jobId}/intentgetPitchDeckIntentstory:readnoresponse:VideoIntent
POST /api/v1/pitch-decks/{jobId}/intentupdatePitchDeckIntentstory:writeyesrequest:VideoIntentEditRequest<br>response:VideoIntentEditAck
POST /api/v1/pitch-decks/{jobId}/interludesupdatePitchDeckInterludesstory:writeyesrequest:PitchDeckInterludesUpdateRequest<br>response:PitchDeckInterludesUpdateAck
GET /api/v1/pitch-decks/{jobId}/lookgetPitchDeckLookstory:readnoresponse:FinishView
POST /api/v1/pitch-decks/{jobId}/looksetPitchDeckLookstory:writeyesrequest:FinishSetRequest<br>response:FinishSetAck
POST /api/v1/pitch-decks/{jobId}/more-fixesallowMorePitchDeckFixesartifact:publishyesrequest:MoreFixesRequest<br>response:MoreFixesAnswer
GET /api/v1/pitch-decks/{jobId}/motion-blurgetPitchDeckMotionBlurstory:readnoresponse:MotionBlurView
POST /api/v1/pitch-decks/{jobId}/motion-blursetPitchDeckMotionBlurstory:writeyesrequest:MotionBlurSetRequest<br>response:MotionBlurSetAck
GET /api/v1/pitch-decks/{jobId}/narratorgetPitchDeckNarratorstory:readno
POST /api/v1/pitch-decks/{jobId}/narratorsetPitchDeckNarratorstory:writeyes
POST /api/v1/pitch-decks/{jobId}/pdfrequestPitchDeckPdfstory:writeyesresponse:PitchDeckPdf
POST /api/v1/pitch-decks/{jobId}/plan/approveapprovePitchDeckPlanstory:writeyesrequest:PitchDeckPlanApproveRequest<br>response:PitchDeckRenderAnswer
POST /api/v1/pitch-decks/{jobId}/publishpublishPitchDeckstory:writeyesresponse:PitchDeckPublish
GET /api/v1/pitch-decks/{jobId}/quiet-trackgetPitchDeckQuietTrackstory:readnoresponse:QuietTrackView
POST /api/v1/pitch-decks/{jobId}/quiet-tracksetPitchDeckQuietTrackstory:writeyesrequest:QuietTrackSetRequest<br>response:QuietTrackSetAck
POST /api/v1/pitch-decks/{jobId}/reassemblereassemblePitchDeckstory:writeyesresponse:RenderReassembleAck
GET /api/v1/pitch-decks/{jobId}/resolutiongetPitchDeckResolutionstory:readno
POST /api/v1/pitch-decks/{jobId}/resolutionsetPitchDeckResolutionstory:writeyes
GET /api/v1/pitch-decks/{jobId}/score-to-picturegetPitchDeckScoreToPicturestory:readno
POST /api/v1/pitch-decks/{jobId}/score-to-picturescorePitchDeckToPictureartifact:publishyes
POST /api/v1/pitch-decks/{jobId}/score-to-picture/revertrevertPitchDeckScoreToPicturestory:writeyes
GET /api/v1/pitch-decks/{jobId}/storyboard/audio-timelinegetPitchDeckAudioTimelinestory:readno
POST /api/v1/pitch-decks/{jobId}/storyboard/audio-timelineeditPitchDeckAudioTimelinestory:writeyes
GET /api/v1/pitch-decks/{jobId}/storyboard/audiogetPitchDeckSceneAudiostory:readno
GET /api/v1/pitch-decks/{jobId}/storyboard/coveragegetPitchDeckStoryboardCoveragestory:readno
POST /api/v1/pitch-decks/{jobId}/storyboard/coveragegeneratePitchDeckStoryboardCoveragestory:writeyes
POST /api/v1/pitch-decks/{jobId}/storyboard/direct-text-motiondirectPitchDeckTextMotionstory:writeyesrequest:PitchDeckDirectTextMotionRequest<br>response:PitchDeckDirectTextMotionAck
POST /api/v1/pitch-decks/{jobId}/storyboard/musiceditPitchDeckSceneMusicstory:writeyes
POST /api/v1/pitch-decks/{jobId}/storyboard/regenerate-textregeneratePitchDeckTextartifact:publishyesrequest:PitchDeckChapterIndexRequest<br>response:PitchDeckTextRenderAnswer
POST /api/v1/pitch-decks/{jobId}/storyboard/sfxeditPitchDeckSceneSfxstory:writeyes
GET /api/v1/pitch-decks/{jobId}/storyboard/sound-mapgetPitchDeckSoundMapstory:readno
POST /api/v1/pitch-decks/{jobId}/title-sequenceupdatePitchDeckTitleSequencestory:writeyesrequest:PitchDeckTitleSequenceUpdateRequest<br>response:PitchDeckTitleSequenceUpdateAck
POST /api/v1/pitch-decks/{jobId}/title-sequence/motion-closesrenderPitchDeckTitleMotionClosesartifact:publishyesrequest:PitchDeckTitleMotionClosesRequest<br>response:PitchDeckTitleMotionClosesAnswer
POST /api/v1/pitch-decks/{jobId}/unpublishunpublishPitchDeckstory:writeyesresponse:PitchDeckUnpublish
GET /api/v1/pitch-decks/{jobId}/versionslistPitchDeckVersionsstory:readnoresponse:PitchDeckVersions
GET /api/v1/pitch-decks/{jobId}/versions/{number}getPitchDeckVersionstory:readnoresponse:PitchDeckVersionRead
POST /api/v1/pitch-decks/{jobId}/versions/{number}/ziprequestPitchDeckVersionZipstory:writeyesresponse:VideoVersionZipAck
GET /api/v1/pitch-decks/{jobId}/video-coveragegetPitchDeckVideoCoveragestory:readnoresponse:VideoCoverageEnvelope
POST /api/v1/pitch-decks/{jobId}/video-coveragegeneratePitchDeckVideoCoveragestory:writeyesrequest:VideoCoverageGenerateRequest<br>response:VideoCoverageEnvelope
POST /api/v1/pitch-decks/{jobId}/video-exportexportPitchDeckVideostory:writeyesresponse:PitchDeckExportAck
GET /api/v1/pitch-decks/{jobId}/video-modelgetPitchDeckVideoModelstory:readnoresponse:PitchDeckVideoModelView
POST /api/v1/pitch-decks/{jobId}/video-modelsetPitchDeckVideoModelstory:writeyesrequest:PitchDeckVideoModelSetRequest<br>response:PitchDeckVideoModelSetAck
POST /api/v1/pitch-decks/{jobId}/visual-grammarupdatePitchDeckVisualGrammarstory:writeyesrequest:PitchDeckVisualGrammarUpdateRequest<br>response:PitchDeckVisualGrammarUpdateAck
GET /api/v1/publishing-feeds/{seriesSlug}.xmlgetPublishingRssFeedno
GET /api/v1/publishing-provider-configslistPublishingProviderConfigspublishing:connectnoresponse:PublishingProviderConfigList
POST /api/v1/publishing-provider-configsupsertPublishingProviderConfigpublishing:connectyesrequest:PublishingProviderConfigUpsertRequest<br>response:PublishingProviderConfigEnvelope
GET /api/v1/publishing-releases/{releaseId}getPublishingReleasepublishing:readnoresponse:PublishingReleaseEnvelope
PATCH /api/v1/publishing-releases/{releaseId}updatePublishingReleasepublishing:writenorequest:PublishingReleaseUpdateRequest<br>response:PublishingReleaseEnvelope
POST /api/v1/publishing-releases/{releaseId}/cancelcancelPublishingReleasepublishing:publishyesresponse:PublishingReleaseEnvelope
POST /api/v1/publishing-releases/{releaseId}/description/generategeneratePublishingReleaseDescriptionpublishing:writeyesresponse:PublishingReleaseEnvelope
POST /api/v1/publishing-releases/{releaseId}/publishpublishPublishingReleasepublishing:publishyesresponse:PublishingReleaseEnvelope
POST /api/v1/publishing-releases/{releaseId}/refresh-mediarefreshPublishedReleaseMediapublishing:publishyesrequest:PublishingReleaseRefreshMediaRequest<br>response:PublishingReleaseEnvelope
POST /api/v1/publishing-releases/{releaseId}/scheduleschedulePublishingReleasepublishing:publishyesresponse:PublishingReleaseEnvelope
GET /api/v1/publishing-releases/{releaseId}/targetslistPublishingReleaseTargetspublishing:readnoresponse:PublishingTargetList
POST /api/v1/publishing-releases/{releaseId}/unpublishunpublishPublishingReleasepublishing:publishyesresponse:PublishingReleaseEnvelope
GET /api/v1/publishing-series/{seriesId}getPublishingSeriespublishing:readnoresponse:PublishingSeriesEnvelope
PATCH /api/v1/publishing-series/{seriesId}updatePublishingSeriespublishing:writenorequest:PublishingSeriesUpdateRequest<br>response:PublishingSeriesEnvelope
GET /api/v1/publishing-series/{seriesId}/analyticslistPublishingAnalyticsSnapshotspublishing:analyticsnoresponse:PublishingAnalyticsList
GET /api/v1/publishing-series/{seriesId}/destinationslistPublishingDestinationspublishing:readnoresponse:PublishingDestinationList
POST /api/v1/publishing-series/{seriesId}/destinationsupsertPublishingDestinationpublishing:connectyesrequest:PublishingDestinationUpsertRequest<br>response:PublishingDestinationEnvelope
GET /api/v1/publishing-series/{seriesId}/episodeslistShowEpisodespublishing:readnoresponse:ShowEpisodeList
POST /api/v1/publishing-series/{seriesId}/episodesproduceShowEpisodepublishing:writeyesresponse:ShowEpisodeProduce
POST /api/v1/publishing-series/{seriesId}/generate-cover-artgeneratePublishingSeriesCoverArtpublishing:writenorequest:PublishingCoverArtGenerateRequest<br>response:PublishingCoverArtGenerateResponse
GET /api/v1/publishing-series/{seriesId}/quotegetShowQuotepublishing:readnoresponse:ShowQuote
GET /api/v1/publishing-series/{seriesId}/releaseslistPublishingReleasespublishing:readnoresponse:PublishingReleaseList
POST /api/v1/publishing-series/{seriesId}/releasescreatePublishingReleasepublishing:writeyesrequest:PublishingReleaseCreateRequest<br>response:PublishingReleaseEnvelope
POST /api/v1/publishing-series/{seriesId}/source-previewpreviewShowSourcespublishing:readnoresponse:ShowSourcePreview
GET /api/v1/screenplay-drafts/{scriptUploadId}getScreenplayDraftstory:readnoresponse:ScreenplayDraftStatus
POST /api/v1/screenplay-drafts/{scriptUploadId}startScreenplayDraftstory:writeyesresponse:ScreenplayDraftStatus
POST /api/v1/scriptsuploadScriptstory:writeyesrequest:ScriptUploadRequest<br>response:ScriptUploadResponse
DELETE /api/v1/scripts/{scriptUploadId}deleteScriptstory:writeno
GET /api/v1/scripts/{scriptUploadId}getScriptstory:readnoresponse:WriterScriptEnvelope
PATCH /api/v1/scripts/{scriptUploadId}updateScriptstory:writenorequest:ScriptMetadataPatch<br>response:WriterScriptEnvelope
PATCH /api/v1/scripts/{scriptUploadId}/contentwriteScriptContentstory:writenorequest:ScriptContentWriteRequest<br>response:ScriptContentWriteResponse
GET /api/v1/scripts/{scriptUploadId}/exportexportScriptstory:readnoresponse:ScriptExportResponse
POST /api/v1/scripts/{scriptUploadId}/finishfinishDraftstory:writeyesrequest:FinishDraftRequest<br>response:FinishDraftResponse
GET /api/v1/scripts/{scriptUploadId}/lines/{entryIndex}getScriptLineTuningstory:readnoresponse:ScriptLineTuning
PATCH /api/v1/scripts/{scriptUploadId}/lines/{entryIndex}updateScriptLinestory:writenorequest:ScriptLineEdit<br>response:ScriptLineTuning
GET /api/v1/scripts/{scriptUploadId}/overridesgetScriptOverridesstory:readnoresponse:ScriptOverrides
PATCH /api/v1/scripts/{scriptUploadId}/overridesupdateScriptOverridesstory:writenorequest:ScriptOverridesPatch<br>response:ScriptOverrides
GET /api/v1/scripts/{scriptUploadId}/sharegetScriptSharestory:readnoresponse:ScriptShareState
POST /api/v1/scripts/{scriptUploadId}/sharecreateScriptShareartifact:publishnorequest:CreateScriptShareRequest<br>response:CreateScriptShareResult
POST /api/v1/scripts/{scriptUploadId}/table-read/characters/removeremoveScriptTableReadCharacterstory:writenorequest:RemoveCharacterRequest<br>response:RemoveCharacterResult
POST /api/v1/scripts/{scriptUploadId}/table-read/prepareprepareScriptTableReadartifact:publishyesrequest:PrepareTableReadRequest<br>response:TableReadPrepareEnvelope
POST /api/v1/scripts/{scriptUploadId}/table-read/retry-analysisretryScriptTableReadAnalysisstory:writenoresponse:RetryCreativeAnalysisResult
POST /api/v1/scripts/{scriptUploadId}/versionsuploadScriptVersionstory:writeyesrequest:ScriptVersionUploadRequest
DELETE /api/v1/scripts/{scriptUploadId}/versions/{versionId}deleteScriptVersionstory:writenoresponse:ScriptVersionDeleteResponse
GET /api/v1/season-runs/{runId}getStorySeasonRunstory:readnoresponse:SeasonRunEnvelope
POST /api/v1/season-runs/{runId}/advanceadvanceStorySeasonRunstory:write, artifact:publish, publishing:writeyesrequest:SeasonRunAdvanceRequest<br>response:SeasonRunEnvelope
POST /api/v1/season-runs/{runId}/approveapproveStorySeasonMapstory:writeyesrequest:SeasonRunApprovalRequest<br>response:SeasonRunEnvelope
PATCH /api/v1/season-runs/{runId}/episodes/{episodeId}updateStorySeasonEpisodestory:writenorequest:SeasonRunEpisodeUpdateRequest<br>response:SeasonRunEnvelope
GET /api/v1/show-source-templateslistShowSourceTemplatespublishing:readnoresponse:ShowSourceCatalog
GET /api/v1/story-jobslistStoryJobsstory:readnoresponse:StoryJobList
POST /api/v1/story-jobscreateStoryJobstory:writeyesrequest:StoryJobCreate<br>response:StoryJobEnvelope
GET /api/v1/story-jobs/{jobId}getStoryJobstory:readnoresponse:StoryJobEnvelope
GET /api/v1/story-jobs/{jobId}/artifactslistStoryJobArtifactsartifact:readnoresponse:StoryArtifactListResponse
POST /api/v1/story-jobs/{jobId}/cancelcancelStoryJobstory:writeyesresponse:StoryJobEnvelope
POST /api/v1/story-jobs/{jobId}/resumeresumeStoryJobstory:writeyesresponse:StoryJobResumeResponse
GET /api/v1/story-plans/{planId}getStoryPlanstory:readnoresponse:StoryPlanEnvelopeResponse
PATCH /api/v1/story-plans/{planId}renameStoryPlanstory:writenorequest:ArtifactRenameRequest<br>response:StoryPlanEnvelopeResponse
POST /api/v1/story-plans/{planId}/approveapproveStoryPlanstory:writeyesrequest:StoryPlanApprovalRequest<br>response:StoryPlanEnvelopeResponse
POST /api/v1/story-plans/{planId}/rejectrejectStoryPlanstory:writeyesresponse:StoryPlanEnvelopeResponse
POST /api/v1/story-plans/{planId}/resumeresumeStoryPlanstory:writeyesresponse:StoryPlanEnvelopeResponse
GET /api/v1/story-projectslistStoryProjectsstory:readnoresponse:StoryProjectList
POST /api/v1/story-projectscreateStoryProjectstory:writeyesrequest:StoryProjectCreate<br>response:StoryProjectEnvelope
DELETE /api/v1/story-projects/{projectId}deleteStoryProjectstory:writenoresponse:ProjectDeletionResult
GET /api/v1/story-projects/{projectId}getStoryProjectstory:readnoresponse:StoryProjectDetailEnvelope
PATCH /api/v1/story-projects/{projectId}updateStoryProjectstory:writenorequest:StoryProjectPatch<br>response:StoryProjectEnvelope
GET /api/v1/story-projects/{projectId}/cast-canongetProjectCastCanonstory:readnoresponse:CastCanonEnvelope
PATCH /api/v1/story-projects/{projectId}/cast-canonsaveProjectCastCanonstory:writenorequest:CastCanonPatch<br>response:CastCanonEnvelope
GET /api/v1/story-projects/{projectId}/cast-lookgetProjectCastLookstory:readnoresponse:CastLookRead
PATCH /api/v1/story-projects/{projectId}/cast-looksetProjectCastLookstory:writenorequest:CastLookPatch<br>response:CastLookSaved
POST /api/v1/story-projects/{projectId}/cast-portraits/choosechooseProjectCastPortraitstory:writeyesrequest:CastPortraitChooseRequest<br>response:CastPortraitChooseResponse
POST /api/v1/story-projects/{projectId}/cast-portraits/designdesignProjectCastPortraitsartifact:publishyesrequest:CastPortraitDesignRequest<br>response:CastPortraitDesignEnvelope
GET /api/v1/story-projects/{projectId}/cast-portraits/designslistProjectCastPortraitDesignsstory:readnoresponse:CastPortraitDesignListResponse
GET /api/v1/story-projects/{projectId}/cast-portraits/designs/{designId}/coveragegetProjectCastPortraitCoveragestory:readnoresponse:CastingPortraitCoverageResponse
POST /api/v1/story-projects/{projectId}/cast-portraits/designs/{designId}/coveragegenerateProjectCastPortraitCoveragestory:writeyesrequest:CastingCoverageGenerateRequest<br>response:CastingPortraitCoverageResponse
PATCH /api/v1/story-projects/{projectId}/cast-voicesetProjectCastVoicestory:writenorequest:CastVoiceSetRequest<br>response:CastVoiceSetResponse
POST /api/v1/story-projects/{projectId}/cast-voice/choosechooseProjectCastVoicestory:writeyesrequest:CastVoiceChooseRequest<br>response:CastVoiceChooseResponse
POST /api/v1/story-projects/{projectId}/cast-voice/designdesignProjectCastVoiceartifact:publishyesrequest:CastVoiceDesignRequest<br>response:CastVoiceDesignEnvelope
GET /api/v1/story-projects/{projectId}/cast-voice/designslistProjectCastVoiceDesignsstory:readnoresponse:CastVoiceDesignListResponse
GET /api/v1/story-projects/{projectId}/cast-voice/designs/{designId}/coveragegetProjectCastVoiceCoveragestory:readnoresponse:CastingCoverageResponse
POST /api/v1/story-projects/{projectId}/cast-voice/designs/{designId}/coveragegenerateProjectCastVoiceCoveragestory:writeyesrequest:CastingCoverageGenerateRequest<br>response:CastingCoverageResponse
GET /api/v1/story-projects/{projectId}/castgetProjectCaststory:readnoresponse:ProjectCastReadEnvelope
PATCH /api/v1/story-projects/{projectId}/castupdateEpisodeCharacterDirectionstory:writenorequest:EpisodeCharacterDirectionRequest<br>response:EpisodeCharacterDirectionResult
POST /api/v1/story-projects/{projectId}/castgenerateProjectCastartifact:publishyesrequest:GenerateProjectCastRequest<br>response:ProjectCastEnvelope
GET /api/v1/story-projects/{projectId}/episodeslistProjectEpisodesstory:readnoresponse:ProjectEpisodesResponse
POST /api/v1/story-projects/{projectId}/episodesstartPlannedEpisodestory:writeyesrequest:StartPlannedEpisodeRequest<br>response:StartPlannedEpisodeResponse
GET /api/v1/story-projects/{projectId}/mood-boardgetProjectMoodBoardstory:readnoresponse:MoodBoardEnvelope
POST /api/v1/story-projects/{projectId}/mood-board/frameskeepProjectMoodBoardFramestory:writeyesrequest:MoodBoardFrameKeepRequest<br>response:MoodBoardEnvelope
DELETE /api/v1/story-projects/{projectId}/mood-board/frames/{frameId}dropProjectMoodBoardFramestory:writenoresponse:MoodBoardEnvelope
POST /api/v1/story-projects/{projectId}/mood-board/render-framesrenderProjectMoodBoardFramesartifact:publishyesrequest:MoodBoardRenderRequest<br>response:MoodBoardRenderEnvelope
GET /api/v1/story-projects/{projectId}/outline-mapgetProjectOutlineMapstory:readnoresponse:OutlineMapEnvelope
PATCH /api/v1/story-projects/{projectId}/outline-mapsaveProjectEpisodeOutlinestory:writenorequest:SaveEpisodeOutlineRequest<br>response:OutlineMapEnvelope
GET /api/v1/story-projects/{projectId}/outline-map/coveragegetProjectOutlineCoveragestory:readnoresponse:OutlineCoverageEnvelope
POST /api/v1/story-projects/{projectId}/outline-map/coveragegenerateProjectOutlineCoveragestory:writeyesrequest:OutlineCoverageGenerateRequest<br>response:OutlineCoverageEnvelope
GET /api/v1/story-projects/{projectId}/publishing-serieslistPublishingSeriespublishing:readnoresponse:PublishingSeriesList
POST /api/v1/story-projects/{projectId}/publishing-seriescreatePublishingSeriespublishing:writeyesrequest:PublishingSeriesCreateRequest<br>response:PublishingSeriesEnvelope
POST /api/v1/story-projects/{projectId}/restorerestoreStoryProjectstory:writeyesresponse:ProjectRestoreResult
GET /api/v1/story-projects/{projectId}/season-runslistStorySeasonRunsstory:readnoresponse:SeasonRunList
POST /api/v1/story-projects/{projectId}/season-runscreateStorySeasonRunstory:write, publishing:writeyesrequest:SeasonRunCreateRequest<br>response:SeasonRunEnvelope
POST /api/v1/story-projects/{projectId}/seasonscreateProjectSeasonstory:writeyesrequest:ProjectSeasonCreateRequest<br>response:ProjectSeasonCreateResponse
GET /api/v1/story-projects/{projectId}/series-biblegetProjectSeriesBiblestory:readnoresponse:SeriesBibleEnvelope
PATCH /api/v1/story-projects/{projectId}/series-biblesaveProjectSeriesBiblestory:writenorequest:SeriesBiblePatch<br>response:SeriesBibleSaveResult
POST /api/v1/story-projects/{projectId}/series-biblegenerateProjectSeriesBiblestory:writeyesrequest:SeriesBibleGenerateRequest<br>response:SeriesBibleSaveResult
GET /api/v1/story-projects/{projectId}/series-bible/charactersgetSeriesBibleCharacterstory:readnoresponse:SeriesBibleCharacterResult
PATCH /api/v1/story-projects/{projectId}/series-bible/charactersupdateSeriesBibleCharacterstory:writenorequest:SeriesBibleCharacterUpdateRequest<br>response:SeriesBibleCharacterResult
GET /api/v1/story-projects/{projectId}/series-bible/coveragegetProjectSeriesBibleCoveragestory:readnoresponse:SeriesBibleCoverageEnvelope
POST /api/v1/story-projects/{projectId}/series-bible/coveragegenerateProjectSeriesBibleCoveragestory:writeyesrequest:SeriesBibleCoverageGenerateRequest<br>response:SeriesBibleCoverageEnvelope
GET /api/v1/story-projects/{projectId}/soundslistProjectSoundsstory:readno
GET /api/v1/story-projects/{projectId}/sourceslistStorySourcessource:readnoresponse:StorySourceList
POST /api/v1/story-projects/{projectId}/sourcescreateStorySourcesource:writeyesrequest:StorySourceCreate<br>response:StorySourceCreateResult
DELETE /api/v1/story-projects/{projectId}/sources/{sourceId}deleteStorySourcesource:writenoresponse:DeletionAck
GET /api/v1/story-projects/{projectId}/sources/{sourceId}getStorySourcesource:readnoresponse:StorySourceEnvelope
GET /api/v1/story-projects/{projectId}/story-planslistStoryPlansstory:readnoresponse:StoryPlanList
POST /api/v1/story-projects/{projectId}/story-planscreateStoryPlanstory:writeyesrequest:StoryPlanCreate<br>response:StoryPlanEnvelopeResponse
GET /api/v1/story-projects/deletedlistDeletedStoryProjectsstory:readnoresponse:DeletedStoryProjectList
POST /api/v1/story-projects/from-scriptcreateStoryProjectFromScriptstory:writeyesrequest:StoryProjectFromScript<br>response:StoryProjectFromScriptEnvelope
GET /api/v1/table-read/performance-boothgetPerformanceBoothStatusstory:readno
POST /api/v1/table-read/performance-boothstartPerformanceBoothSessionstory:writeyes
DELETE /api/v1/trailers/{jobId}deleteTrailerstory:writenoresponse:VideoDeleteResult
PATCH /api/v1/trailers/{jobId}renameTrailerstory:writenorequest:ArtifactRenameRequest<br>response:RenamedVideo
GET /api/v1/trailers/{jobId}/aspectgetTrailerAspectstory:readno
POST /api/v1/trailers/{jobId}/aspectsetTrailerAspectstory:writeyes
POST /api/v1/trailers/{jobId}/audio-policysetTrailerAudioPolicystory:writeyes
GET /api/v1/trailers/{jobId}/beatsgetTrailerBeatsstory:readnoresponse:TrailerBeats
POST /api/v1/trailers/{jobId}/beats/{beatIndex}/abandon-takeabandonTrailerTakeartifact:publishyesrequest:TakeAbandonRequest<br>response:TakeAbandonResult
POST /api/v1/trailers/{jobId}/beats/{beatIndex}/drop-linedropTrailerBeatLinestory:writeyesrequest:TrailerDropLineRequest<br>response:TrailerDropLineAnswer
POST /api/v1/trailers/{jobId}/beats/{beatIndex}/repair-takerepairTrailerTakeartifact:publishyesrequest:TakeRepairRequest<br>response:TakeRepairAnswer
POST /api/v1/trailers/{jobId}/beats/{beatIndex}/select-takeselectTrailerTakestory:writeyesrequest:TrailerSelectTakeRequest<br>response:TrailerSelectTakeAck
POST /api/v1/trailers/{jobId}/beats/{beatIndex}/stage-voice-overstageVoiceOverTrailerTakeartifact:publishyesrequest:StageVoiceOverRequest<br>response:StageVoiceOverAnswer
POST /api/v1/trailers/{jobId}/beats/{beatIndex}/take-repair-overrideoverrideTrailerTakeRepairstory:writeyesrequest:TakeRepairOverrideRequest<br>response:TakeRepairOverrideAck
POST /api/v1/trailers/{jobId}/beats/{beatIndex}/trim-taketrimTrailerTakestory:writeyesrequest:TakeTrimRequest<br>response:TakeTrimQueued
POST /api/v1/trailers/{jobId}/beats/refinerefineTrailerBeatstory:writeyesrequest:TrailerBeatRefineRequest<br>response:TrailerBeatPreview
POST /api/v1/trailers/{jobId}/beats/render-cliprenderTrailerBeatClipartifact:publishyesrequest:TrailerRenderClipRequest<br>response:TrailerRenderAnswer
GET /api/v1/trailers/{jobId}/cameragetTrailerCamerastory:readnoresponse:CameraView
POST /api/v1/trailers/{jobId}/camerasetTrailerCamerastory:writeyesrequest:CameraSetRequest<br>response:CameraSetAck
POST /api/v1/trailers/{jobId}/cancel-rendercancelTrailerRenderartifact:publishyesresponse:RenderCancelResult
POST /api/v1/trailers/{jobId}/closing-sequenceupdateTrailerClosingSequencestory:writeyesrequest:TrailerClosingSequenceUpdateRequest<br>response:TrailerClosingSequenceUpdateAck
POST /api/v1/trailers/{jobId}/duplicateduplicateTrailerstory:writeyesrequest:TrailerDuplicateRequest<br>response:TrailerDuplicate
POST /api/v1/trailers/{jobId}/finishfinishTrailerartifact:publishyesrequest:TrailerFinishRequest<br>response:TrailerFinishAnswer
GET /api/v1/trailers/{jobId}/intentgetTrailerIntentstory:readnoresponse:VideoIntent
POST /api/v1/trailers/{jobId}/intentupdateTrailerIntentstory:writeyesrequest:VideoIntentEditRequest<br>response:VideoIntentEditAck
POST /api/v1/trailers/{jobId}/interludesupdateTrailerInterludesstory:writeyesrequest:TrailerInterludesUpdateRequest<br>response:TrailerInterludesUpdateAck
GET /api/v1/trailers/{jobId}/lookgetTrailerLookstory:readnoresponse:FinishView
POST /api/v1/trailers/{jobId}/looksetTrailerLookstory:writeyesrequest:FinishSetRequest<br>response:FinishSetAck
POST /api/v1/trailers/{jobId}/more-fixesallowMoreTrailerFixesartifact:publishyesrequest:MoreFixesRequest<br>response:MoreFixesAnswer
GET /api/v1/trailers/{jobId}/motion-blurgetTrailerMotionBlurstory:readnoresponse:MotionBlurView
POST /api/v1/trailers/{jobId}/motion-blursetTrailerMotionBlurstory:writeyesrequest:MotionBlurSetRequest<br>response:MotionBlurSetAck
GET /api/v1/trailers/{jobId}/narratorgetTrailerNarratorstory:readno
POST /api/v1/trailers/{jobId}/narratorsetTrailerNarratorstory:writeyes
POST /api/v1/trailers/{jobId}/plan/approveapproveTrailerPlanstory:writeyesrequest:TrailerPlanApproveRequest<br>response:TrailerRenderAnswer
GET /api/v1/trailers/{jobId}/quiet-trackgetTrailerQuietTrackstory:readnoresponse:QuietTrackView
POST /api/v1/trailers/{jobId}/quiet-tracksetTrailerQuietTrackstory:writeyesrequest:QuietTrackSetRequest<br>response:QuietTrackSetAck
POST /api/v1/trailers/{jobId}/reassemblereassembleTrailerstory:writeyesresponse:RenderReassembleAck
GET /api/v1/trailers/{jobId}/render-statesgetTrailerRenderStatesstory:readnoresponse:TrailerBeatRenderStates
GET /api/v1/trailers/{jobId}/resolutiongetTrailerResolutionstory:readno
POST /api/v1/trailers/{jobId}/resolutionsetTrailerResolutionstory:writeyes
GET /api/v1/trailers/{jobId}/score-to-picturegetTrailerScoreToPicturestory:readno
POST /api/v1/trailers/{jobId}/score-to-picturescoreTrailerToPictureartifact:publishyes
POST /api/v1/trailers/{jobId}/score-to-picture/revertrevertTrailerScoreToPicturestory:writeyes
GET /api/v1/trailers/{jobId}/storyboard/audio-timelinegetTrailerAudioTimelinestory:readno
POST /api/v1/trailers/{jobId}/storyboard/audio-timelineeditTrailerAudioTimelinestory:writeyes
GET /api/v1/trailers/{jobId}/storyboard/audiogetTrailerSceneAudiostory:readno
GET /api/v1/trailers/{jobId}/storyboard/coveragegetTrailerStoryboardCoveragestory:readno
POST /api/v1/trailers/{jobId}/storyboard/coveragegenerateTrailerStoryboardCoveragestory:writeyes
POST /api/v1/trailers/{jobId}/storyboard/direct-text-motiondirectTrailerTextMotionstory:writeyesrequest:TrailerDirectTextMotionRequest<br>response:TrailerDirectTextMotionAck
POST /api/v1/trailers/{jobId}/storyboard/insert-beatinsertTrailerBeatstory:writeyesrequest:TrailerInsertBeatRequest<br>response:TrailerBeatOrderAck
POST /api/v1/trailers/{jobId}/storyboard/move-beatmoveTrailerBeatstory:writeyesrequest:TrailerMoveBeatRequest<br>response:TrailerBeatOrderAck
POST /api/v1/trailers/{jobId}/storyboard/musiceditTrailerSceneMusicstory:writeyes
POST /api/v1/trailers/{jobId}/storyboard/regenerate-textregenerateTrailerTextartifact:publishyesrequest:TrailerBeatIndexRequest<br>response:TrailerTextRenderAnswer
POST /api/v1/trailers/{jobId}/storyboard/remove-beatremoveTrailerBeatstory:writeyesrequest:TrailerRemoveBeatRequest<br>response:TrailerBeatOrderAck
POST /api/v1/trailers/{jobId}/storyboard/restore-takerestoreTrailerTakestory:writeyesrequest:TrailerRestoreTakeRequest<br>response:TrailerRestoreTakeAck
POST /api/v1/trailers/{jobId}/storyboard/sfxeditTrailerSceneSfxstory:writeyes
GET /api/v1/trailers/{jobId}/storyboard/sound-mapgetTrailerSoundMapstory:readno
GET /api/v1/trailers/{jobId}/storyboard/takesgetTrailerBeatTakesstory:readnoresponse:TrailerBeatTakes
GET /api/v1/trailers/{jobId}/versionslistTrailerVersionsstory:readnoresponse:TrailerVersions
GET /api/v1/trailers/{jobId}/versions/{number}getTrailerVersionstory:readnoresponse:TrailerVersionRead
POST /api/v1/trailers/{jobId}/versions/{number}/ziprequestTrailerVersionZipstory:writeyesresponse:VideoVersionZipAck
GET /api/v1/trailers/{jobId}/video-coveragegetTrailerVideoCoveragestory:readnoresponse:VideoCoverageEnvelope
POST /api/v1/trailers/{jobId}/video-coveragegenerateTrailerVideoCoveragestory:writeyesrequest:VideoCoverageGenerateRequest<br>response:VideoCoverageEnvelope
POST /api/v1/trailers/{jobId}/video-exportexportTrailerVideostory:writeyesresponse:TrailerExportAck
GET /api/v1/voice-migrationslistVoiceMigrationsstory:readnoresponse:VoiceMigrationListResponse
POST /api/v1/voice-migrationsmigrateVoicestory:writeyesrequest:VoiceMigrationRequest<br>response:VoiceMigrationEnvelope
POST /api/v1/voice-migrations/{migrationId}/undoundoVoiceMigrationstory:writeyesresponse:VoiceMigrationUndoResponse
GET /api/v1/voiceslistStudioVoicesstory:readnoresponse:StudioVoiceListResponse
DELETE /api/v1/voices/{voiceId}deleteStudioVoicestory:writenoresponse:StudioVoiceDeleteResponse
PATCH /api/v1/voices/{voiceId}renameStudioVoicestory:writenorequest:StudioVoiceRenameRequest<br>response:StudioVoiceRenameResponse
POST /api/v1/voices/{voiceId}/consent-linkcreateVoiceConsentLinkstory:writeyesresponse:VoiceConsentLinkResponse
POST /api/v1/voices/{voiceId}/revoke-consentrevokeVoiceConsentstory:writeyesresponse:VoiceConsentRevokeResponse
POST /api/v1/voices/clone-linkcreateVoiceCloneLinkstory:writeyesresponse:VoiceCloneLinkResponse
POST /api/v1/voices/previewpreviewStudioVoicestory:writeyesrequest:VoicePreviewRequest<br>response:VoicePreviewResponse
GET /api/v1/voices/pro/{jobId}getProVoiceClonestory:readnoresponse:ProVoiceCloneStatus
GET /api/v1/voices/pro/scriptgetProVoiceCloneScriptstory:readnoresponse:ProVoiceCloneScript
POST /api/v1/voices/pro/startstartProVoiceClonestory:writeyesrequest:ProVoiceCloneStartRequest<br>response:ProVoiceCloneStartResult
POST /api/v1/voices/pro/trainstartProVoiceCloneTrainingstory:writeyesrequest:ProVoiceCloneTrainRequest<br>response:ProVoiceCloneTrainResult

Example recipes

RecipeStatusScopesSteps
Discover supported features before integrating<br><small>discover-capabilities</small>availablestory:readGET /capabilities
Check Studio Credit balance before generating<br><small>check-credits</small>availablecredits:readGET /credits
Recover from auth, rate limit, and idempotency errors<br><small>handle-errors</small>availableGET /capabilities
Create a project and attach an inline text source<br><small>create-project-and-attach-text-source</small>availablestory:write<br>source:writePOST /story-projects<br>POST /story-projects/{projectId}/sources
Read, save, or generate a project Series Bible<br><small>project-series-bible</small>availablestory:read<br>story:writePOST /story-projects/{projectId}/series-bible<br>POST /story-projects/{projectId}/series-bible/coverage
Create a StoryPlan from sources and poll until terminal<br><small>generate-story-plan</small>availablestory:write<br>story:readPOST /story-projects/{projectId}/story-plans<br>GET /story-plans/{planId}<br>POST /story-plans/{planId}/approve
Ingest a PDF source (async, polled)<br><small>ingest-pdf-source</small>availablesource:write<br>source:readPOST /story-projects/{projectId}/sources
Ingest a URL source (async, polled)<br><small>ingest-url-source</small>availablesource:write<br>source:readPOST /story-projects/{projectId}/sources<br>GET /story-projects/{projectId}/sources/{sourceId}
Refine a table read artifact with a free-form instruction<br><small>refine-table-read</small>availableartifact:publish<br>story:read<br>artifact:readPOST /artifacts/{artifactId}/refine<br>GET /story-jobs/{jobId}
Apply a voice effect to a range of lines<br><small>modify-voice-range</small>availableartifact:publishPOST /artifacts/{artifactId}/voice-modification
Render a trailer, choose its takes, and finish it<br><small>render-and-finish-a-trailer</small>availablestory:read<br>story:write<br>artifact:publishPOST /trailers/{jobId}/plan/approve<br>POST /trailers/{jobId}/plan/approve<br>GET /trailers/{jobId}/beats<br>POST /trailers/{jobId}/beats/{beatIndex}/select-take<br>GET /trailers/{jobId}/video-coverage<br>POST /trailers/{jobId}/finish<br>POST /trailers/{jobId}/finish
Render a pitch deck, choose its takes, and finish it<br><small>render-and-finish-a-pitch-deck</small>availablestory:read<br>story:write<br>artifact:publishPOST /pitch-decks/{jobId}/plan/approve<br>POST /pitch-decks/{jobId}/plan/approve<br>GET /pitch-decks/{jobId}/chapters<br>POST /pitch-decks/{jobId}/chapters/{chapterIndex}/select-take<br>GET /pitch-decks/{jobId}/video-coverage<br>POST /pitch-decks/{jobId}/finish<br>POST /pitch-decks/{jobId}/finish
Regenerate a character avatar, restyle the cast, and poll the enriched cast<br><small>recast-avatars</small>availableartifact:publish<br>artifact:readPOST /artifacts/{artifactId}/avatar<br>POST /artifacts/{artifactId}/cast<br>GET /artifacts/{artifactId}/cast
Finalize a table read artifact as a durable MP3<br><small>finalize-audio-mp3</small>availableartifact:publishPOST /artifacts/{artifactId}/finalize<br>GET /artifacts/{artifactId}
Promote a finalized table-read artifact to a podcast feed<br><small>publish-finalized-table-read-podcast</small>availablepublishing:write<br>publishing:publish<br>publishing:readPOST /story-projects/{projectId}/publishing-series<br>POST /publishing-series/{seriesId}/releases<br>POST /publishing-releases/{releaseId}/schedule<br>POST /publishing-releases/{releaseId}/refresh-media<br>GET /publishing-feeds/{seriesSlug}.xml
Safely retry expensive POSTs with Idempotency-Key<br><small>idempotent-post-recipe</small>plannedstory:writePOST /story-jobs
Generate a table read from an approved plan, then read the share URLs<br><small>generate-table-read</small>availablestory:write<br>story:read<br>artifact:readPOST /story-jobs<br>GET /story-jobs/{jobId}<br>GET /artifacts/{artifactId}/script?scope=page&page=1<br>GET /artifacts/{artifactId}