{"manifestVersion":1,"name":"Sleeper Hit Studio","summary":"A story-creation and production workspace for developing, writing, performing, packaging, and publishing narrative work.","ideaFirstPrompt":"Start from an initial premise, notes, research, or an existing screenplay. An existing screenplay is not required.","api":{"version":"v1","status":"foundation"},"canonicalUrl":"https://docs.sleeperhit.studio/capabilities.json","access":{"accountRequired":true,"signupMode":"waitlist","waitlistUrl":"https://docs.sleeperhit.studio/waitlist","loginUrl":"https://docs.sleeperhit.studio/login","intents":[{"id":"business","label":"Business and brand storytelling","audience":"Companies, agencies, and brand or marketing teams producing narrative work.","url":"https://docs.sleeperhit.studio/waitlist?intent=business"},{"id":"creator","label":"Independent creator","audience":"Solo creators and small studios publishing their own shows, podcasts, and short-form video.","url":"https://docs.sleeperhit.studio/waitlist?intent=creator"},{"id":"writer","label":"Screenwriter","audience":"Screenwriters developing scripts, pilots, features, and pitch material.","url":"https://docs.sleeperhit.studio/waitlist?intent=writer"}],"withoutAccount":["Search opted-in creator profiles, project summaries, and creator-approved public assets through the public MCP server or the public discovery API.","Read every published contract: the capability manifest, OpenAPI spec, docs site, llms.txt, and the CLI and MCP tool maps.","Open public share links (table reads, pitch decks, trailers) a creator has already published."],"withAccount":["Create story projects, attach source material, and develop a project Series Bible.","Plan, generate, and revise screenplay installments, table reads, pitch decks, and trailers.","Spend Studio Credits on generation, rendering, casting, scoring, and finalization.","Publish durable releases to the first-party RSS feed and connected destinations."],"publicMcpUrl":"https://docs.sleeperhit.studio/api/mcp","authenticatedMcpUrl":"https://docs.sleeperhit.studio/mcp","capabilityManifestUrl":"https://docs.sleeperhit.studio/capabilities.json","note":"Sleeper Hit accounts are waitlist-gated. There is no self-serve signup, and an agent cannot create an account on a user's behalf: hand the human the waitlist link that matches their intent and stop there."},"surfaces":{"mcpAuthenticated":{"role":"Full story-development and production access","transport":"streamable-http","url":"https://docs.sleeperhit.studio/mcp","auth":{"accountRequired":true,"type":"oauth2.1","scopes":["story:read","story:write","source:read","source:write","artifact:read","artifact:publish","publishing:read","publishing:write","publishing:publish","publishing:connect","publishing:analytics","credits:read","webhook:write","app:read","app:write"],"discoveryScopes":["openid","profile","email","offline_access","story:read","story:write","source:read","source:write","artifact:read","artifact:publish","publishing:read","publishing:write","publishing:publish","publishing:connect","publishing:analytics","credits:read","webhook:write","app:read","app:write"],"protectedResourceMetadataUrl":"https://docs.sleeperhit.studio/.well-known/oauth-protected-resource","authorizationServerMetadataUrl":"https://docs.sleeperhit.studio/.well-known/oauth-authorization-server"},"recommendedStartTools":["whoami","get_agent_guidance","get_credits"],"workflowGroups":[{"id":"orientation-account","title":"Orientation and account","summary":"Confirm the connected identity and load live backend guidance before choosing a workflow.","startWith":["whoami","get_agent_guidance"],"cost":"none","intent":"routine"},{"id":"credits-usage","title":"Credits and usage","summary":"Check the available Studio Credit balance before any generation or rendering work.","startWith":["get_credits"],"cost":"none","intent":"routine"},{"id":"projects-sources","title":"Projects and source material","summary":"Create or resume a project and ground it in notes, URLs, PDFs, research, or an existing script.","startWith":["list_projects","create_project"],"cost":"inspect-first","intent":"explicit-user-intent"},{"id":"series-bible-development","title":"Series Bible and development","summary":"Establish canon, format, characters, world, episode architecture, and foundational coverage.","startWith":["get_series_bible","get_cast_canon"],"cost":"credits","intent":"confirm-expensive-work"},{"id":"planning-screenwriting","title":"Planning and screenwriting","summary":"Create a reviewable plan, generate an installment, inspect real pages, and revise the same artifact.","startWith":["create_plan","get_plan"],"cost":"credits","intent":"confirm-expensive-work"},{"id":"visual-development-storyboarding","title":"Visual development and storyboarding","summary":"Review and refine pitch-deck and trailer boards without losing the approved story context.","startWith":["get_pitch_deck_storyboard","get_trailer_storyboard"],"cost":"credits","intent":"confirm-expensive-work"},{"id":"table-reads-audio","title":"Table reads and audio","summary":"Cast, perform, score, add effects, and create durable audio from a screenplay-backed table read.","startWith":["get_cast","get_table_read_script"],"cost":"credits","intent":"confirm-expensive-work"},{"id":"video-rendering","title":"Video rendering","summary":"Direct theater motion and render a durable video from a reviewed artifact.","startWith":["get_artifact","direct_theater_motion_beat"],"cost":"credits","intent":"confirm-expensive-work"},{"id":"coverage-revision","title":"Coverage and revision","summary":"Read existing coverage first, request analysis when needed, and revise before final packaging.","startWith":["get_coverage","get_brand_coverage"],"cost":"credits","intent":"confirm-expensive-work"},{"id":"apps-seasons-automation","title":"Apps, seasons, and automation","summary":"Operate repeatable story apps and controlled multi-installment season workflows.","startWith":["list_apps","list_season_runs"],"cost":"credits","intent":"explicit-user-intent"},{"id":"publishing-analytics","title":"Publishing and analytics","summary":"Prepare destinations and releases, then publish only after the user approves the exact externally visible action.","startWith":["list_publishing_series","list_publishing_releases"],"cost":"inspect-first","intent":"explicit-user-intent"}]},"mcpPublic":{"role":"Read-only public discovery","transport":"streamable-http","url":"https://docs.sleeperhit.studio/api/mcp","auth":{"accountRequired":false,"type":"none"},"tools":["search","fetch","find_writers","get_writer_profile","find_projects","get_project_summary","list_writer_assets","list_project_assets","get_public_pitch_assets","get_access_info"]},"storyApi":{"role":"HTTP Story API for creation, generation, and publishing","baseUrl":"https://docs.sleeperhit.studio/api/v1","auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read","story:write","source:read","source:write","artifact:read","artifact:publish","publishing:read","publishing:write","publishing:publish","publishing:connect","publishing:analytics","credits:read","webhook:write","app:read","app:write"],"header":"Authorization: Bearer <oauth-access-token | sh_<prefix>_<secret>>","idempotency":"Idempotency-Key is required on every credit-reserving or mutating POST."},"openapiUrl":"https://docs.sleeperhit.studio/api/v1/openapi.json","capabilitiesUrl":"https://docs.sleeperhit.studio/api/v1/capabilities","agentGuidanceUrl":"https://docs.sleeperhit.studio/api/v1/agent-guidance","examplesUrl":"https://docs.sleeperhit.studio/api/v1/examples","errorCodes":["authentication_required","invalid_api_key","api_key_revoked","api_key_expired","account_disabled","ip_not_allowed","insufficient_scope","rate_limited","idempotency_key_required","idempotency_conflict","validation_failed","project_not_found","source_not_found","source_type_unsupported","source_too_large","source_fetch_failed","story_plan_not_found","story_plan_state_invalid","story_plan_failed","season_run_not_found","season_run_state_invalid","story_job_not_found","story_job_state_invalid","artifact_not_found","artifact_not_ready","artifact_generation_failed","publishing_series_not_found","publishing_destination_not_found","publishing_release_not_found","publishing_release_state_invalid","publishing_asset_not_ready","publishing_asset_stale","insufficient_credits","internal_error"]},"cli":{"role":"Terminal and script client over the same Story API","package":"@sleeperhit/cli","install":"npm install -g @sleeperhit/cli","auth":"sleeperhit login (device flow) or SLEEPERHIT_API_KEY with an sh_ key.","commandCount":117,"commandsUrl":"https://docs.sleeperhit.studio/docs/cli-commands.json","docsUrl":"https://docs.sleeperhit.studio/cli"}},"scopes":[{"name":"story:read","description":"View your scripts, projects, story plans, and coverage","write":false},{"name":"story:write","description":"Create and edit scripts, projects, and story plans","write":true},{"name":"source:read","description":"Read the full text of your uploaded scripts","write":false},{"name":"source:write","description":"Upload and modify script source text","write":true},{"name":"artifact:read","description":"View generated artifacts — table reads, pitch decks, trailers","write":false},{"name":"artifact:publish","description":"Publish and render generated artifacts","write":true},{"name":"publishing:read","description":"View your publishing destinations and posts","write":false},{"name":"publishing:write","description":"Create and edit publishing content","write":true},{"name":"publishing:publish","description":"Publish content to your connected destinations","write":true},{"name":"publishing:connect","description":"Connect and manage publishing destinations","write":true},{"name":"publishing:analytics","description":"View your publishing analytics","write":false},{"name":"credits:read","description":"View your Studio Credit balance and usage","write":false},{"name":"webhook:write","description":"Create and manage webhooks","write":true},{"name":"app:read","description":"View your Sleeper Apps and their manifests","write":false},{"name":"app:write","description":"Create and update Sleeper Apps and publish manifest releases","write":true}],"capabilities":[{"id":"capabilities","title":"Discover live capabilities","description":"Read the feature manifest before integrating a flow.","availability":"available","tags":["discovery"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/capabilities","operationId":"getCapabilities","idempotent":false},"cli":{"command":"sleeperhit capabilities"},"mcp":{"tool":null,"resource":"sleeperhit://capabilities","workflowId":null},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"agent-guidance","title":"Read agent guidance","description":"Read the backend-managed workflow guidance for Story API, CLI, and MCP agents.","availability":"available","tags":["discovery"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/agent-guidance","operationId":"getAgentGuidance","idempotent":false},"cli":{"command":"sleeperhit guidance"},"mcp":{"tool":"get_agent_guidance","resource":"sleeperhit://agent-guidance","workflowId":"orientation-account"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"credits.read","title":"Read Studio Credit balance","description":"Read available credits before starting generation work.","availability":"available","tags":["credits"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["credits:read"]},"api":{"method":"GET","path":"/credits","operationId":"getCredits","idempotent":false},"cli":{"command":"sleeperhit credits"},"mcp":{"tool":"get_credits","resource":null,"workflowId":"credits-usage"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"generation.health","title":"Check generation health","description":"See whether the writing pipeline can reach a healthy model provider before blaming a failed job on your request.","availability":"available","tags":["health"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/generation-health","operationId":"getGenerationHealth","idempotent":false},"cli":{"command":"sleeperhit generation-health"},"mcp":{"tool":"get_generation_health","resource":null,"workflowId":"credits-usage"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"projects.create","title":"Create a story project","description":"Create a workspace that groups sources, plans, jobs, and artifacts.","availability":"available","tags":["projects"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/story-projects","operationId":"createStoryProject","idempotent":true},"cli":{"command":"sleeperhit projects create --name <name>"},"mcp":{"tool":"create_project","resource":null,"workflowId":"projects-sources"},"docsUrl":"https://docs.sleeperhit.studio/quickstart"},{"id":"projects.list","title":"List story projects","description":"Cursor-paginated project list.","availability":"available","tags":["projects"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/story-projects","operationId":"listStoryProjects","idempotent":false},"cli":{"command":"sleeperhit projects list"},"mcp":{"tool":"list_projects","resource":null,"workflowId":"projects-sources"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"projects.get","title":"Read a story project","description":"Fetch one project by id.","availability":"available","tags":["projects"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/story-projects/{projectId}","operationId":"getStoryProject","idempotent":false},"cli":{"command":"sleeperhit projects get <projectId>"},"mcp":{"tool":"get_project","resource":null,"workflowId":"projects-sources"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"projects.update","title":"Update a story project","description":"Rename a project or patch its description, metadata, or archived state from the API, CLI, or MCP.","availability":"available","tags":["projects"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"PATCH","path":"/story-projects/{projectId}","operationId":"updateStoryProject","idempotent":false},"cli":{"command":"sleeperhit projects update <projectId> [--name <text>] [--description <text>] [--metadata <json>] [--archived true|false]"},"mcp":{"tool":"update_project","resource":null,"workflowId":"projects-sources"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"projects.delete","title":"Archive a story project","description":"Soft-delete a project from the API.","availability":"available","tags":["projects"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"DELETE","path":"/story-projects/{projectId}","operationId":"deleteStoryProject","idempotent":false},"cli":{"command":"sleeperhit projects delete <projectId>"},"mcp":{"tool":"delete_project","resource":null,"workflowId":"projects-sources"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"projects.series-bible.get","title":"Read a project Series Bible","description":"Fetch the durable project-level canon and continuity document; use it as the preferred first gate before screenplay generation.","availability":"available","tags":["projects","documents"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/story-projects/{projectId}/series-bible","operationId":"getProjectSeriesBible","idempotent":false},"cli":{"command":"sleeperhit bible get <projectId>"},"mcp":{"tool":"get_series_bible","resource":null,"workflowId":"series-bible-development"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"projects.series-bible.save","title":"Save a project Series Bible","description":"Persist full project canon, episode map, characters, and style/audio direction before planning or generating screenplay pages.","availability":"available","tags":["projects","documents"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"PATCH","path":"/story-projects/{projectId}/series-bible","operationId":"saveProjectSeriesBible","idempotent":false},"cli":{"command":"sleeperhit bible save <projectId> --json <object>"},"mcp":{"tool":"save_series_bible","resource":null,"workflowId":"series-bible-development"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"projects.series-bible.generate","title":"Generate a project Series Bible","description":"Use the backend sidecar to synthesize or refresh full project-level canon from project context before screenplay generation.","availability":"available","tags":["projects","documents"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/story-projects/{projectId}/series-bible","operationId":"generateProjectSeriesBible","idempotent":true},"cli":{"command":"sleeperhit bible generate <projectId>"},"mcp":{"tool":"generate_series_bible","resource":null,"workflowId":"series-bible-development"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"projects.series-bible.coverage.get","title":"Read foundational Series Bible coverage","description":"Read the current-or-stale Bible-rubric report from the shared coverage lifecycle and its first-pass gate before individual script coverage.","availability":"available","tags":["projects","documents","coverage"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/story-projects/{projectId}/series-bible/coverage","operationId":"getProjectSeriesBibleCoverage","idempotent":false},"cli":{"command":"sleeperhit bible coverage <projectId>"},"mcp":{"tool":"get_series_bible_coverage","resource":null,"workflowId":"series-bible-development"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"projects.series-bible.coverage.generate","title":"Generate foundational Series Bible coverage","description":"Queue a versioned Series Bible report in the shared coverage lifecycle, calibrated against 72 provenance-backed series craft profiles.","availability":"available","tags":["projects","documents","coverage"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/story-projects/{projectId}/series-bible/coverage","operationId":"generateProjectSeriesBibleCoverage","idempotent":true},"cli":{"command":"sleeperhit bible coverage <projectId> --generate"},"mcp":{"tool":"generate_series_bible_coverage","resource":null,"workflowId":"series-bible-development"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"seasons.create","title":"Create a conversational season run","description":"Create a durable runner from the Series Bible episode map; every episode remains in a conversational mapping gate until the user confirms it.","availability":"available","tags":["publishing","seasons"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write","publishing:write"]},"api":{"method":"POST","path":"/story-projects/{projectId}/season-runs","operationId":"createStorySeasonRun","idempotent":true},"cli":{"command":"sleeperhit seasons create <projectId>"},"mcp":{"tool":"create_season_run","resource":null,"workflowId":"apps-seasons-automation"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"seasons.list","title":"List season runs","description":"List persisted season maps and their coverage, finalization, and publishing progress.","availability":"available","tags":["publishing","seasons"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/story-projects/{projectId}/season-runs","operationId":"listStorySeasonRuns","idempotent":false},"cli":{"command":"sleeperhit seasons list <projectId>"},"mcp":{"tool":"list_season_runs","resource":null,"workflowId":"apps-seasons-automation"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"seasons.get","title":"Read a season run","description":"Read the complete persisted runner state, episode coverage scores, and the next human or automated action.","availability":"available","tags":["publishing","seasons"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/season-runs/{runId}","operationId":"getStorySeasonRun","idempotent":false},"cli":{"command":"sleeperhit seasons get <runId>"},"mcp":{"tool":"get_season_run","resource":null,"workflowId":"apps-seasons-automation"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"seasons.episodes.map","title":"Map one season episode","description":"Save one episode brief agreed in conversation using the latest required mapVersion; confirmed=true is reserved for explicit user agreement.","availability":"available","tags":["publishing","seasons"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"PATCH","path":"/season-runs/{runId}/episodes/{episodeId}","operationId":"updateStorySeasonEpisode","idempotent":false},"cli":{"command":"sleeperhit seasons map <runId> <episodeId> --expected-map-version <n> --patch <json> [--confirm]"},"mcp":{"tool":"map_season_episode","resource":null,"workflowId":"apps-seasons-automation"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"seasons.approve","title":"Approve a complete season map","description":"Lock the exact mapVersion the user reviewed; stale versions are rejected. Episode plans retain a separate human approval hold.","availability":"available","tags":["publishing","seasons"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/season-runs/{runId}/approve","operationId":"approveStorySeasonMap","idempotent":true},"cli":{"command":"sleeperhit seasons approve <runId> --expected-map-version <n> --confirm"},"mcp":{"tool":"approve_season_map","resource":null,"workflowId":"apps-seasons-automation"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"seasons.advance","title":"Advance a coverage-gated season episode","description":"Take one durable generation step, or submit an explicitly confirmed replan, same-report coverage retry, revision, exact screenplay replacement, or publish action. Replans can carry a durable correction brief, defaulting to a rejected plan's persisted reason. The runner never approves an episode plan and cannot publish before the configured coverage gate and durable MP3 pass.","availability":"available","tags":["publishing","seasons","coverage"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write","artifact:publish","publishing:write","publishing:publish"]},"api":{"method":"POST","path":"/season-runs/{runId}/advance","operationId":"advanceStorySeasonRun","idempotent":true},"cli":{"command":"sleeperhit seasons advance <runId> | replan <runId> [--instruction <text>] --confirm | retry-coverage <runId> --confirm | revise <runId> (--instruction <text> | --screenplay-file <path>) --confirm | publish <runId> --confirm"},"mcp":{"tool":"advance_season_run","resource":null,"workflowId":"apps-seasons-automation"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"projects.cast-canon.get","title":"Read a project cast canon","description":"Fetch the project-level canonical portrait, body, and character-sheet assets every new episode inherits. Visual direction lives in the Series Bible.","availability":"available","tags":["projects","documents"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/story-projects/{projectId}/cast-canon","operationId":"getProjectCastCanon","idempotent":false},"cli":{"command":"sleeperhit cast-canon get <projectId>"},"mcp":{"tool":"get_cast_canon","resource":null,"workflowId":"series-bible-development"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"projects.cast-canon.save","title":"Save a project cast canon","description":"Pin per-character portrait, body, and character-sheet assets for a project; new episodes reuse these instead of rendering replacements (characters merge by name).","availability":"available","tags":["projects","documents"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"PATCH","path":"/story-projects/{projectId}/cast-canon","operationId":"saveProjectCastCanon","idempotent":false},"cli":{"command":"sleeperhit cast-canon save <projectId> --json '<object>' | --file <json> [--replace]"},"mcp":{"tool":"save_cast_canon","resource":null,"workflowId":"series-bible-development"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"sources.create","title":"Attach a source","description":"Attach text, markdown, URL, or PDF source material to a project.","availability":"available","tags":["sources"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["source:write"]},"api":{"method":"POST","path":"/story-projects/{projectId}/sources","operationId":"createStorySource","idempotent":true},"cli":{"command":"sleeperhit sources add <projectId> --type text|markdown|url|pdf"},"mcp":{"tool":"add_source","resource":null,"workflowId":"projects-sources"},"docsUrl":"https://docs.sleeperhit.studio/quickstart"},{"id":"sources.list","title":"List sources","description":"List sources attached to a project.","availability":"available","tags":["sources"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["source:read"]},"api":{"method":"GET","path":"/story-projects/{projectId}/sources","operationId":"listStorySources","idempotent":false},"cli":{"command":"sleeperhit sources list <projectId>"},"mcp":{"tool":"list_sources","resource":null,"workflowId":"projects-sources"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"sources.get","title":"Read a source","description":"Poll one source until extraction and digest states are terminal.","availability":"available","tags":["sources"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["source:read"]},"api":{"method":"GET","path":"/story-projects/{projectId}/sources/{sourceId}","operationId":"getStorySource","idempotent":false},"cli":{"command":"sleeperhit sources get <projectId> <sourceId>"},"mcp":{"tool":"get_source","resource":null,"workflowId":"projects-sources"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"sources.delete","title":"Delete a source","description":"Soft-delete one source and clear extracted preview data.","availability":"available","tags":["sources"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["source:write"]},"api":{"method":"DELETE","path":"/story-projects/{projectId}/sources/{sourceId}","operationId":"deleteStorySource","idempotent":false},"cli":{"command":"sleeperhit sources delete <projectId> <sourceId>"},"mcp":{"tool":"delete_source","resource":null,"workflowId":"projects-sources"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"plans.create","title":"Generate a StoryPlan","description":"Generate the source-grounded plan that drives artifact jobs; for screenplay/table_read work, the planner auto-loads the saved Series Bible and the user should review the plan against it.","availability":"available","tags":["plans"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/story-projects/{projectId}/story-plans","operationId":"createStoryPlan","idempotent":true},"cli":{"command":"sleeperhit plans create <projectId> --target ... --artifact ..."},"mcp":{"tool":"create_plan","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/quickstart"},{"id":"plans.list","title":"List StoryPlans","description":"List generated plans for a project.","availability":"available","tags":["plans"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/story-projects/{projectId}/story-plans","operationId":"listStoryPlans","idempotent":false},"cli":{"command":"sleeperhit plans list <projectId>"},"mcp":{"tool":"list_plans","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"plans.get","title":"Read a StoryPlan","description":"Poll a StoryPlan until it is ready, approved, rejected, or failed; provider backoff remains PENDING and is retried by Sleeper Hit without a client-side recovery loop.","availability":"available","tags":["plans"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/story-plans/{planId}","operationId":"getStoryPlan","idempotent":false},"cli":{"command":"sleeperhit plans get <planId>"},"mcp":{"tool":"get_plan","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"plans.resume","title":"Resume a StoryPlan","description":"Requeue pre-output failures or stale planning under the same durable plan id; active and review-ready plans are replay-safe no-ops.","availability":"available","tags":["plans","recovery"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/story-plans/{planId}/resume","operationId":"resumeStoryPlan","idempotent":true},"cli":{"command":"sleeperhit plans resume <planId>"},"mcp":{"tool":"resume_story_plan","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"plans.approve","title":"Approve a StoryPlan","description":"Move a reviewed plan out of the human approval hold only with explicit user confirmation.","availability":"available","tags":["plans"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/story-plans/{planId}/approve","operationId":"approveStoryPlan","idempotent":true},"cli":{"command":"sleeperhit plans approve <planId> --confirm"},"mcp":{"tool":"approve_plan","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"plans.reject","title":"Reject a StoryPlan","description":"Reject a plan with an optional reason.","availability":"available","tags":["plans"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/story-plans/{planId}/reject","operationId":"rejectStoryPlan","idempotent":true},"cli":{"command":"sleeperhit plans reject <planId>"},"mcp":{"tool":"reject_plan","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"jobs.create","title":"Create a story job","description":"Reserve credits and enqueue artifact generation for an approved plan; if this creates screenplay pages, the adapter auto-loads the saved Series Bible, and coverage should run after the artifact is ready.","availability":"available","tags":["jobs"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/story-jobs","operationId":"createStoryJob","idempotent":true},"cli":{"command":"sleeperhit jobs create <planId>"},"mcp":{"tool":"create_job","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/quickstart"},{"id":"jobs.list","title":"List story jobs","description":"List queued and completed jobs.","availability":"available","tags":["jobs"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/story-jobs","operationId":"listStoryJobs","idempotent":false},"cli":{"command":"sleeperhit jobs list"},"mcp":{"tool":"list_jobs","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"jobs.get","title":"Read a story job","description":"Poll job status and artifact readiness; a RESERVED job with progress.stage=provider_backoff already has a centralized delayed retry.","availability":"available","tags":["jobs"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/story-jobs/{jobId}","operationId":"getStoryJob","idempotent":false},"cli":{"command":"sleeperhit jobs get <jobId>"},"mcp":{"tool":"get_job","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/quickstart"},{"id":"jobs.cancel","title":"Cancel a story job","description":"Cancel a non-terminal job and release unsettled credits.","availability":"available","tags":["jobs"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/story-jobs/{jobId}/cancel","operationId":"cancelStoryJob","idempotent":true},"cli":{"command":"sleeperhit jobs cancel <jobId>"},"mcp":{"tool":"cancel_job","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"jobs.resume","title":"Resume a story job","description":"Recover terminal legacy/pre-worker failures or continue a failed artifact finalize; active provider backoff is already scheduled centrally and is a replay-safe no-op.","availability":"available","tags":["jobs","recovery"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/story-jobs/{jobId}/resume","operationId":"resumeStoryJob","idempotent":true},"cli":{"command":"sleeperhit jobs resume <jobId>"},"mcp":{"tool":"resume_story_job","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.list","title":"List job artifacts","description":"List artifacts produced by a job.","availability":"available","tags":["artifacts"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:read"]},"api":{"method":"GET","path":"/story-jobs/{jobId}/artifacts","operationId":"listStoryJobArtifacts","idempotent":false},"cli":{"command":"sleeperhit jobs artifacts <jobId>"},"mcp":{"tool":"list_artifacts","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.get","title":"Read an artifact","description":"Read a generated artifact, manifest URLs, and revision state.","availability":"available","tags":["artifacts"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:read"]},"api":{"method":"GET","path":"/artifacts/{artifactId}","operationId":"getStoryArtifact","idempotent":false},"cli":{"command":"sleeperhit artifacts get <artifactId>"},"mcp":{"tool":"get_artifact","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.renderVideo","title":"Render a table-read video","description":"Queue the opt-in MP4 render for a ready table-read artifact.","availability":"available","tags":["artifacts","video"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/artifacts/{artifactId}/render-video","operationId":"renderArtifactVideo","idempotent":true},"cli":{"command":"sleeperhit artifacts render-video <artifactId>"},"mcp":{"tool":"render_artifact_video","resource":null,"workflowId":"video-rendering"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.renderVideo.status","title":"Read render status + share link","description":"Poll the durable render (theater MP4 / full-mix MP3) status for an artifact and get the shareable link to watch or listen.","availability":"available","tags":["artifacts","video"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:read"]},"api":{"method":"GET","path":"/artifacts/{artifactId}/render-video","operationId":"getArtifactRenderStatus","idempotent":false},"cli":{"command":"sleeperhit artifacts render-status <artifactId>"},"mcp":{"tool":"get_artifact_share","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.theaterMotion.direct","title":"Direct a theater motion graphic","description":"Add or refine a motion beat (kinetic text, a lower-third, or a title card) in a table-read theater scene, baked into the durable theater video. Returns a shareable link to the enhanced video.","availability":"available","tags":["artifacts","theater"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/artifacts/{artifactId}/theater-motion","operationId":"directTheaterMotionBeat","idempotent":true},"cli":{"command":"sleeperhit artifacts theater-motion <artifactId> --scene <n> --entry <n> --composition motion-only|motion-over-clip|performance-motion-overlay [--caption <text>] [--direction <text>] [--duration <0.5..15>] [--clip-prompt <text>]"},"mcp":{"tool":"direct_theater_motion_beat","resource":null,"workflowId":"video-rendering"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.theaterMotion.clip","title":"Generate a theater motion background clip","description":"Generate the background clip a \"motion-over-clip\" theater motion beat plays its text over (author the beat first). Returns a shareable link to the enhanced theater video.","availability":"available","tags":["artifacts","theater"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/artifacts/{artifactId}/theater-motion-clip","operationId":"generateTheaterMotionClip","idempotent":true},"cli":{"command":"sleeperhit artifacts theater-motion-clip <artifactId> --scene <n> --entry <n> [--prompt <text>] [--duration <4..15>]"},"mcp":{"tool":"generate_theater_motion_clip","resource":null,"workflowId":"video-rendering"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.theaterCanvas.apply","title":"Design a theater scene canvas","description":"Commit a whole theater scene as one immersive canvas — an ordered list of full-canvas motion-graphic beats baked into the durable theater video. Returns a shareable link to the enhanced video.","availability":"available","tags":["artifacts","theater"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/artifacts/{artifactId}/theater-canvas","operationId":"applyTheaterCanvas","idempotent":true},"cli":{"command":"sleeperhit artifacts theater-canvas <artifactId> --scene <n> --beats <json-array>"},"mcp":{"tool":"apply_theater_canvas","resource":null,"workflowId":"video-rendering"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.refine","title":"Refine a table read","description":"Revise a table read in place while keeping the artifact id and share URLs stable.","availability":"available","tags":["artifacts","table_read"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/artifacts/{artifactId}/refine","operationId":"refineArtifact","idempotent":true},"cli":{"command":"sleeperhit refine <artifactId> <instruction...>"},"mcp":{"tool":"refine_artifact","resource":null,"workflowId":"coverage-revision"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.finalize","title":"Finalize a durable MP3 or MP4","description":"Render a durable audio or video file for a table-read artifact.","availability":"available","tags":["artifacts","table_read"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/artifacts/{artifactId}/finalize","operationId":"finalizeArtifact","idempotent":true},"cli":{"command":"sleeperhit finalize <artifactId> --mode audio|video"},"mcp":{"tool":"finalize_artifact","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.finalize.retry","title":"Retry a failed durable MP3 finalize","description":"Resume a failed audio render from the existing artifact without regenerating its performance.","availability":"available","tags":["artifacts","table_read","recovery"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/artifacts/{artifactId}/finalize/retry","operationId":"retryArtifactFinalize","idempotent":true},"cli":{"command":"sleeperhit finalize <artifactId> --retry"},"mcp":{"tool":"retry_artifact_finalize","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.cast","title":"Read a table-read cast","description":"Read voice assignments from the artifact manifest.","availability":"available","tags":["artifacts","voice"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:read"]},"api":{"method":"GET","path":"/artifacts/{artifactId}","operationId":"getStoryArtifact","idempotent":false},"cli":{"command":"sleeperhit cast <artifactId>"},"mcp":{"tool":"get_cast","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.script.get","title":"Read table-read script content","description":"Read the backing script entries for a table-read artifact.","availability":"available","tags":["artifacts","table_read","script"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:read"]},"api":{"method":"GET","path":"/artifacts/{artifactId}/script","operationId":"getArtifactScript","idempotent":false},"cli":{"command":"sleeperhit script get <artifactId>"},"mcp":{"tool":"get_table_read_script","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.script.replace","title":"Replace a table-read screenplay exactly","description":"Version customer-authored screenplay content without an AI rewrite, optionally deferring automatic music for exact clip production, while preserving stable artifact URLs.","availability":"available","tags":["artifacts","table_read","script"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/artifacts/{artifactId}/script","operationId":"replaceArtifactScript","idempotent":true},"cli":{"command":"sleeperhit script replace <artifactId> --file <path> [--instruction <text>] [--narration-policy include|suppress] [--defer-music]"},"mcp":{"tool":"replace_artifact_script","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.script.page","title":"Read script content by page","description":"Read actual script entries on one rendered page.","availability":"available","tags":["artifacts","table_read","script"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:read"]},"api":{"method":"GET","path":"/artifacts/{artifactId}/script","operationId":"getArtifactScript","idempotent":false},"cli":{"command":"sleeperhit script page <artifactId> <page>"},"mcp":{"tool":"get_script_page","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.script.scene","title":"Read script content by scene","description":"Read actual script entries in one scene window.","availability":"available","tags":["artifacts","table_read","script"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:read"]},"api":{"method":"GET","path":"/artifacts/{artifactId}/script","operationId":"getArtifactScript","idempotent":false},"cli":{"command":"sleeperhit script scene <artifactId> <sceneIndex>"},"mcp":{"tool":"get_script_scene","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.script.character","title":"Read character lines","description":"Read actual dialogue entries for one character.","availability":"available","tags":["artifacts","table_read","script"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:read"]},"api":{"method":"GET","path":"/artifacts/{artifactId}/script","operationId":"getArtifactScript","idempotent":false},"cli":{"command":"sleeperhit script character <artifactId> <character...>"},"mcp":{"tool":"get_character_lines","resource":null,"workflowId":"planning-screenwriting"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.recastVoice","title":"Recast a character voice","description":"Reassign one character voice on a table read without changing share URLs.","availability":"available","tags":["artifacts","voice"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/artifacts/{artifactId}/voice","operationId":"recastArtifactVoice","idempotent":true},"cli":{"command":"sleeperhit voice set <artifactId> --character <c> --voice-id <id> --voice-name <name>"},"mcp":{"tool":"recast_voice","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.recastAvatar","title":"Regenerate a character avatar","description":"Re-render one character avatar portrait on a table read in place (async, queue-backed) without changing share URLs.","availability":"available","tags":["artifacts","cast","avatar"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/artifacts/{artifactId}/avatar","operationId":"recastArtifactAvatar","idempotent":true},"cli":{"command":"sleeperhit avatar set <artifactId> --character <c> [--refine <text>] [--style <style>]"},"mcp":{"tool":"recast_avatar","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.updateCast","title":"Update the cast (voices + avatars)","description":"Batch-reassign voices and/or queue per-character avatar renders (with an optional cast-wide restyle) on a table read in place.","availability":"available","tags":["artifacts","cast","voice","avatar"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/artifacts/{artifactId}/cast","operationId":"updateArtifactCast","idempotent":true},"cli":{"command":"sleeperhit cast update <artifactId> --json '<entries-or-{entries,avatarStyle}>'  (cast-wide restyle: sleeperhit cast restyle <artifactId> --style <s>)"},"mcp":{"tool":"update_cast","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.getCast","title":"Read the enriched cast","description":"Read each character voice merged with its avatar (url, style, render status) for a table read; poll after avatar renders.","availability":"available","tags":["artifacts","cast","voice","avatar"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:read"]},"api":{"method":"GET","path":"/artifacts/{artifactId}/cast","operationId":"getArtifactCast","idempotent":false},"cli":{"command":"sleeperhit cast <artifactId>"},"mcp":{"tool":"get_cast","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.coverage.generate","title":"Generate script coverage","description":"Generate the recommended first development coverage round for the screenplay backing a table read before finalization, pitch packaging, or later-installment work.","availability":"available","tags":["artifacts","coverage"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/artifacts/{artifactId}/coverage","operationId":"generateArtifactCoverage","idempotent":true},"cli":{"command":"sleeperhit coverage generate <artifactId>"},"mcp":{"tool":"generate_coverage","resource":null,"workflowId":"coverage-revision"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.coverage.get","title":"Read script coverage","description":"Poll or read the latest screenplay-rubric report from the shared coverage lifecycle for a table-read artifact.","availability":"available","tags":["artifacts","coverage"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:read"]},"api":{"method":"GET","path":"/artifacts/{artifactId}/coverage","operationId":"getArtifactCoverage","idempotent":false},"cli":{"command":"sleeperhit coverage get <artifactId>"},"mcp":{"tool":"get_coverage","resource":null,"workflowId":"coverage-revision"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"brand.coverage.analyze","title":"Analyze brand storytelling coverage","description":"Queue a brand-rubric report in the shared coverage lifecycle for marketing narrative (copy, a brand film, a founder pitch, a case study) across eight craft dimensions. Async — returns `{ reportId, status }`; poll the brand coverage read until complete.","availability":"available","tags":["brand","coverage"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/brand-coverage","operationId":"analyzeBrandCoverage","idempotent":true},"cli":{"command":"sleeperhit brand-coverage generate <content|-> [--type <text>] [--audience <text>] [--industry <text>] [--channel <text>] [--voice <text>]"},"mcp":{"tool":"analyze_brand_coverage","resource":null,"workflowId":"coverage-revision"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"brand.coverage.get","title":"Read brand coverage report","description":"Poll or read a brand-rubric report from the shared coverage lifecycle by id.","availability":"available","tags":["brand","coverage"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/brand-coverage/{reportId}","operationId":"getBrandCoverage","idempotent":false},"cli":{"command":"sleeperhit brand-coverage get <reportId>"},"mcp":{"tool":"get_brand_coverage","resource":null,"workflowId":"coverage-revision"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"brand.narrative.generate","title":"Generate brand storytelling","description":"Turn a brief (+ optional source facts) into a finished piece of brand storytelling held to the studio craft bar. Synchronous — returns `{ narrative, modelId }`. Will not invent claims beyond the supplied facts.","availability":"available","tags":["brand"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/brand-narrative","operationId":"generateBrandNarrative","idempotent":true},"cli":{"command":"sleeperhit brand-narrative generate <brief|-> [--type <text>] [--audience <text>] [--industry <text>] [--channel <text>] [--voice <text>] [--length <text>] [--facts <file>]"},"mcp":{"tool":"generate_brand_narrative","resource":null,"workflowId":"coverage-revision"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.music.generate","title":"Generate scene music","description":"Render scene music for a table-read artifact: durable per-scene music clips on defined-clip scripts (pass scene indexes to re-render specific clips), or regenerate adaptive soundtrack directions on realtime scripts. Clips render instrumental unless vocals are explicitly enabled per scene.","availability":"available","tags":["artifacts","music"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/artifacts/{artifactId}/music","operationId":"generateArtifactMusic","idempotent":true},"cli":{"command":"sleeperhit music generate <artifactId> [--coverage <0..1|0..100>] [--scenes 0,2,5]"},"mcp":{"tool":"generate_music","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.music.update","title":"Update scene music","description":"Edit one scene's defined music clip (prompt, explicit vocals opt-in, disable, volume, fades, play-once vs loop, banked audio with start/end anchoring, or a final music-only post-roll), re-render clips, or tune soundtrack direction for a whole read, one scene, or one entry. `defined_clips` is the only music mode (realtime streaming is deprecated).","availability":"available","tags":["artifacts","music"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/artifacts/{artifactId}/music","operationId":"generateArtifactMusic","idempotent":true},"cli":{"command":"sleeperhit 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>] [--scope screenplay|scene|entry] [--mode merge|replace]"},"mcp":{"tool":"update_music","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.music.get","title":"Read scene music status","description":"Poll scene-music readiness for a table-read artifact — music mode, status, and per-scene defined clips (prompt, vocals, render status, audio URL).","availability":"available","tags":["artifacts","music"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:read"]},"api":{"method":"GET","path":"/artifacts/{artifactId}/music","operationId":"getArtifactMusic","idempotent":false},"cli":{"command":"sleeperhit music get <artifactId>"},"mcp":{"tool":"get_music","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.voiceModification","title":"Modify voices over a range","description":"Apply a voice effect (autotune) to a contiguous range of dialogue entries on a table-read artifact.","availability":"available","tags":["artifacts","voice"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/artifacts/{artifactId}/voice-modification","operationId":"modifyArtifactVoice","idempotent":true},"cli":{"command":"sleeperhit modify-voice <artifactId> --start <n> --end <n>"},"mcp":{"tool":"modify_voice","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.performance","title":"Refine character performance","description":"Adjust emotion, speed (absolute or relative %), volume, and cadence across ALL of one character's lines — including the NARRATOR or ALL voiced lines — on a table-read artifact. A prompt-driven delivery refine, e.g. \"make the narration flatter and 20% faster\".","availability":"available","tags":["artifacts","performance","voice"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/artifacts/{artifactId}/performance","operationId":"updateArtifactPerformance","idempotent":true},"cli":{"command":"sleeperhit performance <artifactId> --character <name|NARRATOR|ALL> [--speed-factor 1.2] [--emotions a,b]"},"mcp":{"tool":"refine_performance","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"voices.list","title":"List my studio voices","description":"List the caller's reusable studio voices — designed (text-description) and cloned (recorded sample) — with provider and source tagging.","availability":"available","tags":["voices"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/voices","operationId":"listStudioVoices","idempotent":false},"cli":{"command":"sleeperhit voices list"},"mcp":{"tool":"list_voices","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"voices.cloneLink","title":"Mint a voice-clone recording link","description":"Mint a short-lived browser URL (My Library with the recorder ready) where the user records a 15-60s sample; the clone lands in their library as a reusable voice (tagged \"cloned\"). Headless surfaces hand this URL to the human — recording needs a microphone.","availability":"available","tags":["voices"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/voices/clone-link","operationId":"createVoiceCloneLink","idempotent":true},"cli":{"command":"sleeperhit voices clone"},"mcp":{"tool":"create_voice_clone_link","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"voices.pro.start","title":"Start a Pro voice clone","description":"Start a studio-grade (professional) voice clone fine-tuned on 30 min–2 hr of the speaker's audio; mints a long-lived browser recording link bound to the clone job. Premium, metered, async (~3 hr train, 250 credits on success).","availability":"available","tags":["voices"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/voices/pro/start","operationId":"startProVoiceClone","idempotent":true},"cli":{"command":"sleeperhit voices clone --pro --name <name> [--language <iso>] [--upgrade-from <voiceId>]"},"mcp":{"tool":"create_pro_voice_clone_link","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"voices.pro.script","title":"Read the Pro voice clone recording script","description":"The ~30-minute mixed-register script the user reads aloud to collect Pro-clone audio. Returns `{ title, intro, totalEstSeconds, passages }`.","availability":"available","tags":["voices"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/voices/pro/script","operationId":"getProVoiceCloneScript","idempotent":false},"cli":{"command":"sleeperhit voices pro script"},"mcp":{"tool":"get_pro_voice_clone_script","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"voices.pro.train","title":"Start Pro voice clone training","description":"Kick off the ~3 hour fine-tune for a Pro voice clone once enough audio is recorded. Charges 250 credits, settled only if training succeeds.","availability":"available","tags":["voices"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/voices/pro/train","operationId":"startProVoiceCloneTraining","idempotent":true},"cli":{"command":"sleeperhit voices pro train <jobId>"},"mcp":{"tool":"start_pro_voice_clone_training","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"voices.pro.get","title":"Poll a Pro voice clone","description":"Poll a Pro voice clone job: status (collecting → training → ready | failed), audio collected vs required, whether it is trainable yet, and the resulting voiceId once ready.","availability":"available","tags":["voices"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/voices/pro/{jobId}","operationId":"getProVoiceClone","idempotent":false},"cli":{"command":"sleeperhit voices pro status <jobId>"},"mcp":{"tool":"get_pro_voice_clone","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"pitchDeck.storyboard.get","title":"Read a pitch deck storyboard","description":"Read the staged pitch-deck storyboard as a list of beats (boards) — each with its keyframe still, shared-boundary handoff frame, motion prompt, and transition. Includes a browser `reviewUrl` (stills cannot render in a terminal).","availability":"available","tags":["pitch-deck","storyboard"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/pitch-decks/{jobId}/storyboard","operationId":"getPitchDeckStoryboard","idempotent":false},"cli":{"command":"sleeperhit pitch-deck storyboard <jobId>"},"mcp":{"tool":"get_pitch_deck_storyboard","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"pitchDeck.storyboard.refine","title":"Refine one storyboard frame","description":"Edit one storyboard beat (image/transition/motion prompts, composition kind, caption + text treatment, narration + voice, clip duration). Saves the edit (no credit spend) — re-render with the regenerate ops. Returns a shareable `previewUrl` for the scene.","availability":"available","tags":["pitch-deck","storyboard"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/pitch-decks/{jobId}/storyboard/refine","operationId":"refinePitchDeckFrame","idempotent":true},"cli":{"command":"sleeperhit pitch-deck refine <jobId> --chapter <n> [--image-prompt <text>] [--transition-prompt <text>] [--motion-prompt <text>] [--composition image|text|both] [--caption <text>] [--text-treatment <text>] [--text-mode voiceover|caption] [--narration <text>] [--narration-voice <id>] [--duration <4..15>]"},"mcp":{"tool":"refine_pitch_deck_frame","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"pitchDeck.storyboard.regenerateFrame","title":"Re-render one storyboard still","description":"Re-render one storyboard beat's still with its current prompts (metered — one per-frame credit). Returns `reviewUrl` + a shareable per-scene `previewUrl`.","availability":"available","tags":["pitch-deck","storyboard"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/pitch-decks/{jobId}/storyboard/regenerate","operationId":"regeneratePitchDeckFrame","idempotent":true},"cli":{"command":"sleeperhit pitch-deck regenerate <jobId> --chapter <n>"},"mcp":{"tool":"regenerate_pitch_deck_frame","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"pitchDeck.storyboard.regenerateClip","title":"Re-render one storyboard motion clip","description":"Render one scene's fast motion clip with its current camera/motion (metered — one per-clip credit). Returns `reviewUrl` + a shareable per-scene `previewUrl`.","availability":"available","tags":["pitch-deck","storyboard"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/pitch-decks/{jobId}/storyboard/regenerate-clip","operationId":"regeneratePitchDeckClip","idempotent":true},"cli":{"command":"sleeperhit pitch-deck regenerate-clip <jobId> --chapter <n>"},"mcp":{"tool":"regenerate_pitch_deck_clip","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"pitchDeck.storyboard.regenerateText","title":"Re-render one storyboard text layer","description":"Render one scene's on-screen text / motion-graphic layer with its current caption + treatment (metered — one per-text credit; zero-fal over the existing still/clip). Returns `reviewUrl` + a shareable per-scene `previewUrl`.","availability":"available","tags":["pitch-deck","storyboard"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/pitch-decks/{jobId}/storyboard/regenerate-text","operationId":"regeneratePitchDeckText","idempotent":true},"cli":{"command":"sleeperhit pitch-deck regenerate-text <jobId> --chapter <n>"},"mcp":{"tool":"regenerate_pitch_deck_text","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"pitchDeck.storyboard.approve","title":"Approve the pitch deck storyboard","description":"Approve the reviewed storyboard and start the fast DRAFT stage (motion clips + narration). Returns a browser `reviewUrl` to watch the draft.","availability":"available","tags":["pitch-deck","storyboard"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/pitch-decks/{jobId}/storyboard/approve","operationId":"approvePitchDeckStoryboard","idempotent":true},"cli":{"command":"sleeperhit pitch-deck approve-storyboard <jobId>"},"mcp":{"tool":"approve_pitch_deck_storyboard","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"pitchDeck.draft.approve","title":"Approve the pitch deck draft","description":"Approve the reviewed draft and start the FINAL render. Returns a browser `reviewUrl` to watch the final.","availability":"available","tags":["pitch-deck"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/pitch-decks/{jobId}/draft/approve","operationId":"approvePitchDeckDraft","idempotent":true},"cli":{"command":"sleeperhit pitch-deck approve-draft <jobId>"},"mcp":{"tool":"approve_pitch_deck_draft","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"pitchDeck.storyboard.swapLibrary","title":"Swap a storyboard still from My Library","description":"Replace one scene's still with an owned My-Library image (no credit charge, no upload). Returns the new still URL + a shareable per-scene `previewUrl`.","availability":"available","tags":["pitch-deck","storyboard"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/pitch-decks/{jobId}/storyboard/swap-library","operationId":"swapPitchDeckFrameFromLibrary","idempotent":true},"cli":{"command":"sleeperhit pitch-deck swap-library <jobId> --chapter <n> --image-id <id>"},"mcp":{"tool":"swap_pitch_deck_frame_from_library","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"pitchDeck.storyboard.applyComponent","title":"Apply a scene component to a pitch deck","description":"Drop a saved My-Library scene component (intro / outro / credits / title sequence) into a pitch deck — inserts a new scene by default, or overwrites via `targetChapterIndex`. Re-skins the component's motion text via `values`. Returns the chapter it landed on + a shareable `previewUrl`.","availability":"available","tags":["pitch-deck","storyboard"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/pitch-decks/{jobId}/storyboard/apply-component","operationId":"applySceneComponentToPitchDeck","idempotent":true},"cli":{"command":"sleeperhit pitch-deck apply-component <jobId> --component-id <id> [--chapter <n>] [--placement start|end|<n>] [--values <json>]"},"mcp":{"tool":"apply_scene_component_to_pitch_deck","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"trailer.storyboard.get","title":"Read a trailer storyboard","description":"Read the staged short-form (9:16 vertical) trailer storyboard as a list of beats (boards) — each with its keyframe still, shared-boundary handoff frame, motion prompt, on-screen caption, and transition. Includes a browser `reviewUrl`.","availability":"available","tags":["trailer","storyboard"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/trailers/{jobId}/storyboard","operationId":"getTrailerStoryboard","idempotent":false},"cli":{"command":"sleeperhit trailer storyboard <jobId>"},"mcp":{"tool":"get_trailer_storyboard","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"trailer.storyboard.refine","title":"Refine one trailer beat","description":"Edit one trailer beat (image/transition/motion prompts, on-screen caption, clip duration). Saves the edit (no credit spend) — re-render with the regenerate ops. Returns a shareable `previewUrl` for the beat.","availability":"available","tags":["trailer","storyboard"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/trailers/{jobId}/storyboard/refine","operationId":"refineTrailerFrame","idempotent":true},"cli":{"command":"sleeperhit trailer refine <jobId> --beat <n> [--image-prompt <text>] [--transition-prompt <text>] [--motion-prompt <text>] [--caption <text>] [--duration <4..15>]"},"mcp":{"tool":"refine_trailer_frame","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"trailer.storyboard.regenerateFrame","title":"Re-render one trailer still","description":"Re-render one trailer beat's still with its current prompts (metered — one per-frame credit). Returns `reviewUrl` + a shareable per-beat `previewUrl`.","availability":"available","tags":["trailer","storyboard"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/trailers/{jobId}/storyboard/regenerate","operationId":"regenerateTrailerFrame","idempotent":true},"cli":{"command":"sleeperhit trailer regenerate <jobId> --beat <n>"},"mcp":{"tool":"regenerate_trailer_frame","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"trailer.storyboard.regenerateClip","title":"Re-render one trailer motion clip","description":"Render one trailer beat's fast motion clip with its current camera/motion (metered — one per-clip credit). Returns `reviewUrl` + a shareable per-beat `previewUrl`.","availability":"available","tags":["trailer","storyboard"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/trailers/{jobId}/storyboard/regenerate-clip","operationId":"regenerateTrailerClip","idempotent":true},"cli":{"command":"sleeperhit trailer regenerate-clip <jobId> --beat <n>"},"mcp":{"tool":"regenerate_trailer_clip","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"trailer.storyboard.regenerateText","title":"Re-render one trailer text layer","description":"Render one trailer beat's on-screen text / motion-graphic layer with its current caption + treatment (metered — one per-text credit; zero-fal over the existing still/clip). Returns `reviewUrl` + a shareable per-beat `previewUrl`.","availability":"available","tags":["trailer","storyboard"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/trailers/{jobId}/storyboard/regenerate-text","operationId":"regenerateTrailerText","idempotent":true},"cli":{"command":"sleeperhit trailer regenerate-text <jobId> --beat <n>"},"mcp":{"tool":"regenerate_trailer_text","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"trailer.storyboard.approve","title":"Approve the trailer storyboard","description":"Approve the reviewed trailer storyboard and start the fast DRAFT stage (motion clips). Returns a browser `reviewUrl` to watch the draft.","availability":"available","tags":["trailer","storyboard"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/trailers/{jobId}/storyboard/approve","operationId":"approveTrailerStoryboard","idempotent":true},"cli":{"command":"sleeperhit trailer approve-storyboard <jobId>"},"mcp":{"tool":"approve_trailer_storyboard","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"trailer.draft.approve","title":"Approve the trailer draft","description":"Approve the reviewed trailer draft and start the FINAL render. Returns a browser `reviewUrl` to watch the final.","availability":"available","tags":["trailer"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/trailers/{jobId}/draft/approve","operationId":"approveTrailerDraft","idempotent":true},"cli":{"command":"sleeperhit trailer approve-draft <jobId>"},"mcp":{"tool":"approve_trailer_draft","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"trailer.storyboard.swapLibrary","title":"Swap a trailer still from My Library","description":"Replace one beat's still with an owned My-Library image (no credit charge, no upload). Returns the new still URL + a shareable per-beat `previewUrl`.","availability":"available","tags":["trailer","storyboard"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/trailers/{jobId}/storyboard/swap-library","operationId":"swapTrailerFrameFromLibrary","idempotent":true},"cli":{"command":"sleeperhit trailer swap-library <jobId> --beat <n> --image-id <id>"},"mcp":{"tool":"swap_trailer_frame_from_library","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"trailer.storyboard.applyComponent","title":"Apply a scene component to a trailer","description":"Drop a saved My-Library scene component (intro / outro / credits / title sequence) into a vertical (9:16) trailer — inserts a new beat by default, or overwrites via `targetBeatIndex`. Re-skins the component's motion text via `values`. Returns the beat it landed on + a shareable `previewUrl`.","availability":"available","tags":["trailer","storyboard"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/trailers/{jobId}/storyboard/apply-component","operationId":"applySceneComponentToTrailer","idempotent":true},"cli":{"command":"sleeperhit trailer apply-component <jobId> --component-id <id> [--beat <n>] [--placement start|end|<n>] [--values <json>]"},"mcp":{"tool":"apply_scene_component_to_trailer","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"library.images.list","title":"List My-Library images","description":"List your reusable My-Library images (cached character/avatar stills). Use the returned `id` as `libraryImageId` for the storyboard swap-library ops.","availability":"available","tags":["library"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/library/images","operationId":"listMyLibraryImages","idempotent":false},"cli":{"command":"sleeperhit library images"},"mcp":{"tool":"list_my_library_images","resource":null,"workflowId":"visual-development-storyboarding"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"library.audio.list","title":"List reusable My-Library audio","description":"List durable music, sound effects, and soundscapes, optionally filtered by kind or searched by label/prompt.","availability":"available","tags":["library"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:read"]},"api":{"method":"GET","path":"/library/audio","operationId":"listMyLibraryAudio","idempotent":false},"cli":{"command":"sleeperhit library audio list [--kind music|sfx|soundscape] [--query <text>]"},"mcp":{"tool":"list_my_library_audio","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"library.audio.import","title":"Import reusable audio","description":"Bank owned or licensed audio as a durable reusable music, SFX, or soundscape asset; public URLs and CLI-local files share the same validated import pipe.","availability":"available","tags":["library"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["story:write"]},"api":{"method":"POST","path":"/library/audio","operationId":"importMyLibraryAudio","idempotent":true},"cli":{"command":"sleeperhit library audio import (--file <path> | --source-url <url>) --kind <kind> --label <text>"},"mcp":{"tool":"import_my_library_audio","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.sfx.manage","title":"Manage sound effects","description":"Add, update, mute, retime, regenerate, or remove line-level SFX cues for a table-read artifact.","availability":"available","tags":["artifacts","sfx"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:publish"]},"api":{"method":"POST","path":"/artifacts/{artifactId}/sfx","operationId":"manageArtifactSfx","idempotent":true},"cli":{"command":"sleeperhit sfx add|update|remove <artifactId>"},"mcp":{"tool":"add_sfx/update_sfx/remove_sfx","resource":null,"workflowId":null},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.sfx.list","title":"List sound effects","description":"List timed SFX cues for a table-read artifact.","availability":"available","tags":["artifacts","sfx"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["artifact:read"]},"api":{"method":"GET","path":"/artifacts/{artifactId}/sfx","operationId":"listArtifactSfx","idempotent":false},"cli":{"command":"sleeperhit sfx list <artifactId>"},"mcp":{"tool":"list_sfx","resource":null,"workflowId":"table-reads-audio"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.providerConfigs.list","title":"List publishing provider config","description":"List user-level publishing provider configuration for future OAuth/API-key-backed destinations.","availability":"available","tags":["publishing","destinations"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:connect"]},"api":{"method":"GET","path":"/publishing-provider-configs","operationId":"listPublishingProviderConfigs","idempotent":false},"cli":{"command":"sleeperhit publishing provider-configs list"},"mcp":{"tool":"list_publishing_provider_configs","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.providerConfigs.upsert","title":"Upsert publishing provider config","description":"Create or update user-level provider configuration metadata and encrypted credential references.","availability":"available","tags":["publishing","destinations"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:connect"]},"api":{"method":"POST","path":"/publishing-provider-configs","operationId":"upsertPublishingProviderConfig","idempotent":true},"cli":{"command":"sleeperhit publishing provider-configs upsert --provider <provider> --medium <medium>"},"mcp":{"tool":"upsert_publishing_provider_config","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.series.create","title":"Create a publishing series","description":"Create a project-owned publishing series with cadence, medium, format, prompt direction, and default RSS destination for audio.","availability":"available","tags":["publishing","series"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:write"]},"api":{"method":"POST","path":"/story-projects/{projectId}/publishing-series","operationId":"createPublishingSeries","idempotent":true},"cli":{"command":"sleeperhit publishing series create <projectId> [--title <title>]"},"mcp":{"tool":"create_publishing_series","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.series.list","title":"List publishing series","description":"List publishing series owned by a story project.","availability":"available","tags":["publishing","series"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:read"]},"api":{"method":"GET","path":"/story-projects/{projectId}/publishing-series","operationId":"listPublishingSeries","idempotent":false},"cli":{"command":"sleeperhit publishing series list <projectId>"},"mcp":{"tool":"list_publishing_series","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.series.get","title":"Read a publishing series","description":"Read one series, including configured destinations and RSS feed URL.","availability":"available","tags":["publishing","series"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:read"]},"api":{"method":"GET","path":"/publishing-series/{seriesId}","operationId":"getPublishingSeries","idempotent":false},"cli":{"command":"sleeperhit publishing series get <seriesId>"},"mcp":{"tool":"get_publishing_series","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.series.update","title":"Update a publishing series","description":"Update series setup, cadence, status, ownership metadata, and prompt direction.","availability":"available","tags":["publishing","series"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:write"]},"api":{"method":"PATCH","path":"/publishing-series/{seriesId}","operationId":"updatePublishingSeries","idempotent":false},"cli":{"command":"sleeperhit publishing series update <seriesId> [--title <title>] [--status <status>]"},"mcp":{"tool":"update_publishing_series","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.series.generateCoverArt","title":"Generate podcast cover art","description":"Generate a 1536×1536 podcast cover image from the series context (title, description, genre). Returns a durable R2 URL; use update to persist it.","availability":"available","tags":["publishing","series"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:write"]},"api":{"method":"POST","path":"/publishing-series/{seriesId}/generate-cover-art","operationId":"generatePublishingSeriesCoverArt","idempotent":false},"cli":{"command":"sleeperhit publishing series generate-cover-art <seriesId> [--title <title>] [--description <text>] [--podcast-category <text>] [--podcast-subcategory <text>]"},"mcp":{"tool":"generate_publishing_cover_art","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.destinations.list","title":"List publishing destinations","description":"List series destinations, including RSS and later provider-specific targets.","availability":"available","tags":["publishing","destinations"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:read"]},"api":{"method":"GET","path":"/publishing-series/{seriesId}/destinations","operationId":"listPublishingDestinations","idempotent":false},"cli":{"command":"sleeperhit publishing destinations list <seriesId>"},"mcp":{"tool":"list_publishing_destinations","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.destinations.upsert","title":"Connect a publishing destination","description":"Create or update a series destination. RSS is first-party; provider-specific OAuth destinations can be configured for later publishers.","availability":"available","tags":["publishing","destinations"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:connect"]},"api":{"method":"POST","path":"/publishing-series/{seriesId}/destinations","operationId":"upsertPublishingDestination","idempotent":true},"cli":{"command":"sleeperhit publishing destinations upsert <seriesId> --provider rss"},"mcp":{"tool":"upsert_publishing_destination","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.releases.list","title":"List publishing releases","description":"List releases under a series with promoted assets and target status.","availability":"available","tags":["publishing","releases"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:read"]},"api":{"method":"GET","path":"/publishing-series/{seriesId}/releases","operationId":"listPublishingReleases","idempotent":false},"cli":{"command":"sleeperhit publishing releases list <seriesId>"},"mcp":{"tool":"list_publishing_releases","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.releases.create","title":"Promote an artifact into a publishing release","description":"Create a release under a series by promoting an already-finalized table-read artifact. Publishing does not create or refine MP3/MP4 assets.","availability":"available","tags":["publishing","releases"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:write"]},"api":{"method":"POST","path":"/publishing-series/{seriesId}/releases","operationId":"createPublishingRelease","idempotent":true},"cli":{"command":"sleeperhit publishing releases create <seriesId> --source-artifact-id <artifactId> --title <title>"},"mcp":{"tool":"create_publishing_release","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.releases.get","title":"Read a publishing release","description":"Read release metadata, linked StoryPlan/StoryJob/StoryArtifact ids, assets, and targets.","availability":"available","tags":["publishing","releases"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:read"]},"api":{"method":"GET","path":"/publishing-releases/{releaseId}","operationId":"getPublishingRelease","idempotent":false},"cli":{"command":"sleeperhit publishing releases get <releaseId>"},"mcp":{"tool":"get_publishing_release","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.releases.update","title":"Update publishing release metadata","description":"Update title, episode metadata, rights, prompt direction, and scheduled time without creating media.","availability":"available","tags":["publishing","releases"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:write"]},"api":{"method":"PATCH","path":"/publishing-releases/{releaseId}","operationId":"updatePublishingRelease","idempotent":false},"cli":{"command":"sleeperhit publishing releases update <releaseId> [--title <title>] [--description <text>]"},"mcp":{"tool":"update_publishing_release","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.releases.generate_description","title":"Generate a podcast episode description","description":"Write and persist short, specific podcast episode copy from the promoted table-read transcript. Accepts optional prompt direction to steer tone and emphasis.","availability":"available","tags":["publishing","releases"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:write"]},"api":{"method":"POST","path":"/publishing-releases/{releaseId}/description/generate","operationId":"generatePublishingReleaseDescription","idempotent":true},"cli":{"command":"sleeperhit publishing releases generate-description <releaseId> [--direction <text>]"},"mcp":{"tool":"generate_publishing_release_description","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.releases.schedule","title":"Schedule a publishing release","description":"Set the scheduled publish time for a promoted, ready release.","availability":"available","tags":["publishing","releases"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:publish"]},"api":{"method":"POST","path":"/publishing-releases/{releaseId}/schedule","operationId":"schedulePublishingRelease","idempotent":true},"cli":{"command":"sleeperhit publishing releases schedule <releaseId> --at <iso>"},"mcp":{"tool":"schedule_publishing_release","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.releases.publish","title":"Publish a release","description":"Queue provider target publishing. RSS v1 marks the item live in the first-party feed.","availability":"available","tags":["publishing","releases"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:publish"]},"api":{"method":"POST","path":"/publishing-releases/{releaseId}/publish","operationId":"publishPublishingRelease","idempotent":true},"cli":{"command":"sleeperhit publishing releases publish <releaseId>"},"mcp":{"tool":"publish_publishing_release","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.releases.refresh_media","title":"Refresh published release media","description":"Rebind a published audio episode's RSS enclosure to the latest finalized MP3 from its existing table-read source artifact without creating a duplicate episode; direct-provider targets are left unchanged.","availability":"available","tags":["publishing","releases","repair"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:publish"]},"api":{"method":"POST","path":"/publishing-releases/{releaseId}/refresh-media","operationId":"refreshPublishedReleaseMedia","idempotent":true},"cli":{"command":"sleeperhit publishing releases refresh-media <releaseId> --source-artifact-id <artifactId>"},"mcp":{"tool":"refresh_published_release_media","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.releases.cancel","title":"Cancel a publishing release","description":"Cancel a promoted release before it is published. Scheduled publish jobs become harmless because persisted release status is authoritative.","availability":"available","tags":["publishing","releases"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:publish"]},"api":{"method":"POST","path":"/publishing-releases/{releaseId}/cancel","operationId":"cancelPublishingRelease","idempotent":true},"cli":{"command":"sleeperhit publishing releases cancel <releaseId>"},"mcp":{"tool":"cancel_publishing_release","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.releases.targets","title":"List publishing release targets","description":"List provider target status for one promoted release.","availability":"available","tags":["publishing","releases","destinations"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:read"]},"api":{"method":"GET","path":"/publishing-releases/{releaseId}/targets","operationId":"listPublishingReleaseTargets","idempotent":false},"cli":{"command":"sleeperhit publishing releases targets <releaseId>"},"mcp":{"tool":"list_publishing_release_targets","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.analytics.list","title":"List publishing analytics","description":"List normalized analytics snapshots for a publishing series.","availability":"available","tags":["publishing","analytics"],"auth":{"accountRequired":true,"schemes":["oauth2.1","bearer_api_key"],"scopes":["publishing:analytics"]},"api":{"method":"GET","path":"/publishing-series/{seriesId}/analytics","operationId":"listPublishingAnalyticsSnapshots","idempotent":false},"cli":{"command":"sleeperhit publishing analytics list <seriesId>"},"mcp":{"tool":"list_publishing_analytics","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"publishing.feed","title":"Read RSS feed","description":"Public podcast RSS feed for one publishing series.","availability":"available","tags":["publishing","rss"],"auth":{"accountRequired":false,"schemes":[],"scopes":[]},"api":{"method":"GET","path":"/publishing-feeds/{seriesSlug}.xml","operationId":"getPublishingRssFeed","idempotent":false},"cli":{"command":"sleeperhit publishing feed <seriesSlug>"},"mcp":{"tool":"get_publishing_rss_feed","resource":null,"workflowId":"publishing-analytics"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"}],"publicCapabilities":[{"id":"public.search","title":"Search public Sleeper Hit discovery documents","description":"Search opted-in public writer profiles, project summaries, and writer-approved public assets. Compatible with ChatGPT deep research and company knowledge.","auth":{"accountRequired":false,"schemes":[],"scopes":[]},"mcp":{"tool":"search"}},{"id":"public.fetch","title":"Fetch public Sleeper Hit discovery document","description":"Fetch the full public discovery document for a search result by ID. Compatible with ChatGPT deep research and company knowledge.","auth":{"accountRequired":false,"schemes":[],"scopes":[]},"mcp":{"tool":"fetch"}},{"id":"public.find_writers","title":"Find writers","description":"Search opt-in public Sleeper Hit Studio writer profiles.","auth":{"accountRequired":false,"schemes":[],"scopes":[]},"mcp":{"tool":"find_writers"}},{"id":"public.get_writer_profile","title":"Get writer profile","description":"Get a public writer profile by slug, including public projects and shared assets.","auth":{"accountRequired":false,"schemes":[],"scopes":[]},"mcp":{"tool":"get_writer_profile"}},{"id":"public.find_projects","title":"Find projects","description":"List public projects for a writer. Results include project hub URLs and public asset summaries.","auth":{"accountRequired":false,"schemes":[],"scopes":[]},"mcp":{"tool":"find_projects"}},{"id":"public.get_project_summary","title":"Get project summary","description":"Get one public project summary for a writer.","auth":{"accountRequired":false,"schemes":[],"scopes":[]},"mcp":{"tool":"get_project_summary"}},{"id":"public.list_writer_assets","title":"List writer assets","description":"List all writer-approved public share URLs for a writer.","auth":{"accountRequired":false,"schemes":[],"scopes":[]},"mcp":{"tool":"list_writer_assets"}},{"id":"public.list_project_assets","title":"List project assets","description":"List writer-approved public share URLs for a specific project.","auth":{"accountRequired":false,"schemes":[],"scopes":[]},"mcp":{"tool":"list_project_assets"}},{"id":"public.get_public_pitch_assets","title":"Get public pitch assets","description":"List writer-approved public pitch deck assets for a writer.","auth":{"accountRequired":false,"schemes":[],"scopes":[]},"mcp":{"tool":"get_public_pitch_assets"}},{"id":"public.get_access_info","title":"Read Sleeper Hit access and onboarding routing","description":"Read what Sleeper Hit Studio can do without an account, what requires one, and the waitlist URL for each intent. Call this before telling a user you cannot create something here — creation lives on the separate authenticated connector.","auth":{"accountRequired":false,"schemes":[],"scopes":[]},"mcp":{"tool":"get_access_info"}}],"discovery":{"capabilityManifest":"https://docs.sleeperhit.studio/capabilities.json","openapi":"https://docs.sleeperhit.studio/api/v1/openapi.json","capabilities":"https://docs.sleeperhit.studio/api/v1/capabilities","agentGuidance":"https://docs.sleeperhit.studio/api/v1/agent-guidance","examples":"https://docs.sleeperhit.studio/api/v1/examples","llms":"https://docs.sleeperhit.studio/llms.txt","llmsFull":"https://docs.sleeperhit.studio/llms-full.txt","agentIndex":"https://docs.sleeperhit.studio/agent-index.json","surfaceContract":"https://docs.sleeperhit.studio/docs/surface-contract.json","cliCommands":"https://docs.sleeperhit.studio/docs/cli-commands.json","mcpTools":"https://docs.sleeperhit.studio/docs/mcp-tools.json","searchIndex":"https://docs.sleeperhit.studio/docs/search-index.json","publicDiscoveryApi":"https://docs.sleeperhit.studio/api/public/v1","docsSite":"https://docs.sleeperhit.studio/docs","sitemap":"https://docs.sleeperhit.studio/sitemap.xml","robots":"https://docs.sleeperhit.studio/robots.txt"}}