{"version":1,"title":"Sleeper Hit Studio API / CLI / MCP docs","description":"Agent-native index for Sleeper Hit Studio Story API, CLI, and MCP documentation.","canonicalBaseUrl":"https://docs.sleeperhit.studio","generatedAt":"1970-01-01T00:00:00.000Z","surfaces":{"llms":"/llms.txt","llmsFull":"/llms-full.txt","openapi":"/api/v1/openapi.json","capabilities":"/api/v1/capabilities","agentGuidance":"/api/v1/agent-guidance","examples":"/api/v1/examples","searchIndex":"/docs/search-index.json","cliCommands":"/docs/cli-commands.json","mcpTools":"/docs/mcp-tools.json"},"pages":[{"id":"index","title":"Sleeper Hit Studio Story API","description":"Agent and developer documentation for turning sources into narrated table reads and story artifacts.","url":"https://docs.sleeperhit.studio/","markdownUrl":"https://docs.sleeperhit.studio/docs.md","sourcePath":"docs/agents/README.md","tags":["overview","agent-docs"],"headings":[{"id":"mental-model","depth":2,"text":"Mental model"},{"id":"what-is-live-today","depth":2,"text":"What is live today"},{"id":"what-is-coming-soon","depth":2,"text":"What is coming soon"},{"id":"pages-in-this-directory","depth":2,"text":"Pages in this directory"},{"id":"machine-readable-discovery-surfaces","depth":2,"text":"Machine-readable discovery surfaces"},{"id":"authentication-quick-reference","depth":2,"text":"Authentication quick reference"},{"id":"pricing-note","depth":2,"text":"Pricing note"}]},{"id":"quickstart","title":"Quickstart","description":"End-to-end source to playable table read walkthrough.","url":"https://docs.sleeperhit.studio/quickstart","markdownUrl":"https://docs.sleeperhit.studio/quickstart.md","sourcePath":"docs/agents/quickstart.md","tags":["quickstart","api","cli","mcp"],"headings":[{"id":"prerequisites","depth":2,"text":"Prerequisites"},{"id":"step-1-confirm-capabilities","depth":2,"text":"Step 1 — Confirm capabilities"},{"id":"step-2-check-your-credit-balance","depth":2,"text":"Step 2 — Check your credit balance"},{"id":"step-3-create-a-project","depth":2,"text":"Step 3 — Create a project"},{"id":"step-4-attach-sources","depth":2,"text":"Step 4 — Attach sources"},{"id":"option-a-inline-text-synchronous-instant-ready","depth":3,"text":"Option A — Inline text (synchronous, instant READY)"},{"id":"option-b-url-async-must-poll","depth":3,"text":"Option B — URL (async, must poll)"},{"id":"option-c-pdf-async-must-poll","depth":3,"text":"Option C — PDF (async, must poll)"},{"id":"step-5-wait-for-source-digests-optional-but-recommended","depth":2,"text":"Step 5 — Wait for source digests (optional but recommended)"},{"id":"step-6-generate-a-storyplan","depth":2,"text":"Step 6 — Generate a StoryPlan"},{"id":"step-7-poll-the-plan-until-approved","depth":2,"text":"Step 7 — Poll the plan until approved"},{"id":"step-8-create-a-story-job","depth":2,"text":"Step 8 — Create a story job"},{"id":"step-9-poll-the-job-until-terminal","depth":2,"text":"Step 9 — Poll the job until terminal"},{"id":"step-10-read-the-artifact-manifest","depth":2,"text":"Step 10 — Read the artifact manifest"},{"id":"optional-refine-the-artifact","depth":2,"text":"Optional: refine the artifact"},{"id":"optional-recast-a-voice-add-music-or-add-sfx","depth":2,"text":"Optional: recast a voice, add music, or add SFX"},{"id":"optional-finalize-an-mp3-or-mp4","depth":2,"text":"Optional: finalize an MP3 or MP4"},{"id":"complete-node-js-example","depth":2,"text":"Complete Node.js example"},{"id":"error-handling-essentials","depth":2,"text":"Error handling essentials"}]},{"id":"concepts","title":"Concepts","description":"Projects, sources, plans, jobs, artifacts, credits, and lifecycle semantics.","url":"https://docs.sleeperhit.studio/concepts","markdownUrl":"https://docs.sleeperhit.studio/concepts.md","sourcePath":"docs/agents/concepts.md","tags":["concepts","api"],"headings":[{"id":"projects","depth":2,"text":"Projects"},{"id":"sources","depth":2,"text":"Sources"},{"id":"source-types","depth":3,"text":"Source types"},{"id":"source-lifecycle-status","depth":3,"text":"Source lifecycle (status)"},{"id":"source-fields","depth":3,"text":"Source fields"},{"id":"retention-policies","depth":3,"text":"Retention policies"},{"id":"ssrf-guards-url-and-pdf","depth":3,"text":"SSRF guards (URL and PDF)"},{"id":"source-digest","depth":2,"text":"Source digest"},{"id":"digest-lifecycle-digeststatus","depth":3,"text":"Digest lifecycle (digestStatus)"},{"id":"digest-fields-when-digeststatus-ready","depth":3,"text":"Digest fields (when digestStatus: READY)"},{"id":"storyplan","depth":2,"text":"StoryPlan"},{"id":"plan-lifecycle-status","depth":3,"text":"Plan lifecycle (status)"},{"id":"the-autoapprove-flag","depth":3,"text":"The autoApprove flag"},{"id":"the-plan-envelope","depth":3,"text":"The plan envelope"},{"id":"beat-roles","depth":3,"text":"Beat roles"},{"id":"the-credit-quote","depth":3,"text":"The credit quote"},{"id":"refining-a-plan-via-the-refine-endpoint-see-artifacts","depth":3,"text":"Refining a plan (via the refine endpoint — see Artifacts)"},{"id":"story-jobs","depth":2,"text":"Story Jobs"},{"id":"job-lifecycle-status","depth":3,"text":"Job lifecycle (status)"},{"id":"canceling-a-job","depth":3,"text":"Canceling a job"},{"id":"idempotency-on-job-creation","depth":3,"text":"Idempotency on job creation"},{"id":"artifacts","depth":2,"text":"Artifacts"},{"id":"artifact-lifecycle-status","depth":3,"text":"Artifact lifecycle (status)"},{"id":"the-table-read-artifact","depth":3,"text":"The table read artifact"},{"id":"other-artifact-types-coming-soon","depth":3,"text":"Other artifact types (coming soon)"},{"id":"credits","depth":2,"text":"Credits"},{"id":"credit-lifecycle-for-a-job","depth":3,"text":"Credit lifecycle for a job"},{"id":"share-tokens","depth":2,"text":"Share tokens"},{"id":"scopes","depth":2,"text":"Scopes"},{"id":"idempotency","depth":2,"text":"Idempotency"},{"id":"versioning","depth":2,"text":"Versioning"}]},{"id":"api-reference","title":"API Reference","description":"Endpoint reference for the Story API.","url":"https://docs.sleeperhit.studio/api-reference","markdownUrl":"https://docs.sleeperhit.studio/api-reference.md","sourcePath":"docs/agents/api-reference.md","tags":["api","reference"],"headings":[{"id":"authentication-and-scopes","depth":2,"text":"Authentication and scopes"},{"id":"scope-table","depth":3,"text":"Scope table"},{"id":"key-format","depth":3,"text":"Key format"},{"id":"discovery","depth":2,"text":"Discovery"},{"id":"get-capabilities","depth":3,"text":"GET /capabilities"},{"id":"get-openapi-json","depth":3,"text":"GET /openapi.json"},{"id":"get-examples","depth":3,"text":"GET /examples"},{"id":"credits","depth":2,"text":"Credits"},{"id":"get-credits","depth":3,"text":"GET /credits"},{"id":"story-projects","depth":2,"text":"Story Projects"},{"id":"post-story-projects","depth":3,"text":"POST /story-projects"},{"id":"get-story-projects","depth":3,"text":"GET /story-projects"},{"id":"get-story-projects-projectid","depth":3,"text":"GET /story-projects/{projectId}"},{"id":"patch-story-projects-projectid","depth":3,"text":"PATCH /story-projects/{projectId}"},{"id":"delete-story-projects-projectid","depth":3,"text":"DELETE /story-projects/{projectId}"},{"id":"sources","depth":2,"text":"Sources"},{"id":"post-story-projects-projectid-sources","depth":3,"text":"POST /story-projects/{projectId}/sources"},{"id":"get-story-projects-projectid-sources","depth":3,"text":"GET /story-projects/{projectId}/sources"},{"id":"get-story-projects-projectid-sources-sourceid","depth":3,"text":"GET /story-projects/{projectId}/sources/{sourceId}"},{"id":"delete-story-projects-projectid-sources-sourceid","depth":3,"text":"DELETE /story-projects/{projectId}/sources/{sourceId}"},{"id":"story-plans","depth":2,"text":"Story Plans"},{"id":"post-story-projects-projectid-story-plans","depth":3,"text":"POST /story-projects/{projectId}/story-plans"},{"id":"get-story-projects-projectid-story-plans","depth":3,"text":"GET /story-projects/{projectId}/story-plans"},{"id":"get-story-plans-planid","depth":3,"text":"GET /story-plans/{planId}"},{"id":"post-story-plans-planid-approve","depth":3,"text":"POST /story-plans/{planId}/approve"},{"id":"post-story-plans-planid-reject","depth":3,"text":"POST /story-plans/{planId}/reject"},{"id":"story-jobs","depth":2,"text":"Story Jobs"},{"id":"post-story-jobs","depth":3,"text":"POST /story-jobs"},{"id":"get-story-jobs","depth":3,"text":"GET /story-jobs"},{"id":"get-story-jobs-jobid","depth":3,"text":"GET /story-jobs/{jobId}"},{"id":"post-story-jobs-jobid-cancel","depth":3,"text":"POST /story-jobs/{jobId}/cancel"},{"id":"get-story-jobs-jobid-artifacts","depth":3,"text":"GET /story-jobs/{jobId}/artifacts"},{"id":"artifacts","depth":2,"text":"Artifacts"},{"id":"get-artifacts-artifactid","depth":3,"text":"GET /artifacts/{artifactId}"},{"id":"post-artifacts-artifactid-render-video","depth":3,"text":"POST /artifacts/{artifactId}/render-video"},{"id":"post-artifacts-artifactid-refine","depth":3,"text":"POST /artifacts/{artifactId}/refine"},{"id":"post-artifacts-artifactid-finalize","depth":3,"text":"POST /artifacts/{artifactId}/finalize"},{"id":"post-artifacts-artifactid-voice","depth":3,"text":"POST /artifacts/{artifactId}/voice"},{"id":"post-artifacts-artifactid-coverage","depth":3,"text":"POST /artifacts/{artifactId}/coverage"},{"id":"get-artifacts-artifactid-coverage","depth":3,"text":"GET /artifacts/{artifactId}/coverage"},{"id":"post-artifacts-artifactid-music","depth":3,"text":"POST /artifacts/{artifactId}/music"},{"id":"get-artifacts-artifactid-music","depth":3,"text":"GET /artifacts/{artifactId}/music"},{"id":"post-artifacts-artifactid-sfx","depth":3,"text":"POST /artifacts/{artifactId}/sfx"},{"id":"get-artifacts-artifactid-sfx","depth":3,"text":"GET /artifacts/{artifactId}/sfx"},{"id":"error-codes","depth":2,"text":"Error codes"},{"id":"error-envelope","depth":3,"text":"Error envelope"},{"id":"response-headers","depth":2,"text":"Response headers"},{"id":"idempotency","depth":2,"text":"Idempotency"},{"id":"rate-limits","depth":2,"text":"Rate limits"},{"id":"pagination","depth":2,"text":"Pagination"}]},{"id":"recipes","title":"Recipes","description":"Task-oriented integration recipes for agents and developers.","url":"https://docs.sleeperhit.studio/recipes","markdownUrl":"https://docs.sleeperhit.studio/recipes.md","sourcePath":"docs/agents/recipes.md","tags":["recipes","api","cli","mcp"],"headings":[{"id":"recipe-1-turn-an-rss-feed-item-into-a-podcast-table-read","depth":2,"text":"Recipe 1: Turn an RSS feed item into a podcast table read"},{"id":"steps","depth":3,"text":"Steps"},{"id":"code","depth":3,"text":"Code"},{"id":"recipe-2-ingest-a-pdf-research-report-and-produce-a-documentary-table-read","depth":2,"text":"Recipe 2: Ingest a PDF research report and produce a documentary table read"},{"id":"notes","depth":3,"text":"Notes"},{"id":"recipe-3-refine-the-tone-or-recast-a-host-then-finalize-an-mp3-for-download","depth":2,"text":"Recipe 3: Refine the tone or recast a host, then finalize an MP3 for download"},{"id":"steps-2","depth":3,"text":"Steps"},{"id":"recipe-4-embed-the-fullscreen-theater-in-your-own-page","depth":2,"text":"Recipe 4: Embed the fullscreen theater in your own page"},{"id":"html-embed","depth":3,"text":"HTML embed"},{"id":"dynamic-embed-react-js","depth":3,"text":"Dynamic embed (React/JS)"},{"id":"recipe-5-trigger-and-poll-the-mp4-render","depth":2,"text":"Recipe 5: Trigger and poll the MP4 render"},{"id":"steps-3","depth":3,"text":"Steps"},{"id":"recipe-6-add-adaptive-music-and-timed-sfx-to-a-live-read","depth":2,"text":"Recipe 6: Add adaptive music and timed SFX to a live read"},{"id":"steps-4","depth":3,"text":"Steps"},{"id":"recipe-7-attach-multiple-source-types-to-a-single-project","depth":2,"text":"Recipe 7: Attach multiple source types to a single project"},{"id":"recipe-8-handle-credit-shortfalls-gracefully","depth":2,"text":"Recipe 8: Handle credit shortfalls gracefully"},{"id":"recipe-9-add-the-story-api-to-your-own-agent-workflow","depth":2,"text":"Recipe 9: Add the Story API to your own agent workflow"},{"id":"tool-definition-claude-tool-use-style","depth":3,"text":"Tool definition (Claude tool-use style)"},{"id":"tool-execution-handlers","depth":3,"text":"Tool execution handlers"},{"id":"recipe-10-error-recovery-and-retry","depth":2,"text":"Recipe 10: Error recovery and retry"},{"id":"recipe-11-drive-the-live-audio-performance-from-your-own-ui","depth":2,"text":"Recipe 11: Drive the live audio performance from your own UI"}]},{"id":"cli","title":"CLI","description":"Install, configure, and automate Sleeper Hit Studio from a terminal.","url":"https://docs.sleeperhit.studio/cli","markdownUrl":"https://docs.sleeperhit.studio/cli.md","sourcePath":"packages/cli/README.md","tags":["cli","automation"],"headings":[{"id":"requirements","depth":2,"text":"Requirements"},{"id":"install","depth":2,"text":"Install"},{"id":"global-link-run-sleeperhit-anywhere","depth":3,"text":"Global link (run sleeperhit anywhere)"},{"id":"run-without-building-dev","depth":3,"text":"Run without building (dev)"},{"id":"configuration","depth":2,"text":"Configuration"},{"id":"commands","depth":2,"text":"Commands"},{"id":"planned-forward-compatible-commands","depth":3,"text":"Planned (forward-compatible) commands"},{"id":"end-to-end-example","depth":2,"text":"End-to-end example"},{"id":"use-it-in-your-own-agent-workflow","depth":2,"text":"Use it in your own agent workflow"},{"id":"see-also","depth":2,"text":"See also"}]},{"id":"mcp","title":"MCP Server","description":"Connect the Sleeper Hit MCP server to agent clients.","url":"https://docs.sleeperhit.studio/mcp","markdownUrl":"https://docs.sleeperhit.studio/mcp.md","sourcePath":"packages/mcp-server/README.md","tags":["mcp","agents"],"headings":[{"id":"what-an-agent-can-do-with-this","depth":2,"text":"What an agent can do with this"},{"id":"tool-catalog","depth":3,"text":"Tool catalog"},{"id":"install-build","depth":2,"text":"Install & build"},{"id":"environment-variables","depth":2,"text":"Environment variables"},{"id":"mcp-client-config","depth":2,"text":"MCP client config"},{"id":"claude-desktop-claude-code","depth":3,"text":"Claude Desktop / Claude Code"},{"id":"notes","depth":2,"text":"Notes"}]},{"id":"openapi","title":"OpenAPI and surface map","description":"Unified operation map across API, CLI, and MCP.","url":"https://docs.sleeperhit.studio/openapi","markdownUrl":"https://docs.sleeperhit.studio/openapi.md","sourcePath":"packages/web/src/lib/api-v1/surface-registry.ts","tags":["openapi","api","cli","mcp"],"headings":[{"id":"machine-readable-versions","depth":2,"text":"Machine-readable versions"}]},{"id":"distribution","title":"AI discovery checklist","description":"First-party and external surfaces for AI/search/MCP/npm discoverability.","url":"https://docs.sleeperhit.studio/distribution","markdownUrl":"https://docs.sleeperhit.studio/distribution.md","sourcePath":"docs/goals/api-cli-mcp-self-hosted-docs-site.md","tags":["distribution","ai-discovery"],"headings":[{"id":"first-party-surfaces-shipped-by-this-docs-site","depth":2,"text":"First-party surfaces shipped by this docs site"},{"id":"external-publishing-actions","depth":2,"text":"External publishing actions"},{"id":"canonical-citation-targets","depth":2,"text":"Canonical citation targets"}]}],"operations":[{"id":"capabilities","title":"Discover live capabilities","description":"Read the feature manifest before integrating a flow.","availability":"available","docsSlug":"api-reference","tags":["discovery"],"api":{"method":"GET","path":"/capabilities","operationId":"getCapabilities","scope":"story:read"},"cli":{"command":"sleeperhit capabilities"},"mcp":{"resource":"sleeperhit://capabilities"},"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","docsSlug":"api-reference","tags":["discovery"],"api":{"method":"GET","path":"/agent-guidance","operationId":"getAgentGuidance","scope":"story:read"},"cli":{"command":"sleeperhit guidance"},"mcp":{"tool":"get_agent_guidance","resource":"sleeperhit://agent-guidance"},"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","docsSlug":"api-reference","tags":["credits"],"api":{"method":"GET","path":"/credits","operationId":"getCredits","scope":"credits:read"},"cli":{"command":"sleeperhit credits"},"mcp":{"tool":"get_credits"},"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","docsSlug":"quickstart","tags":["projects"],"api":{"method":"POST","path":"/story-projects","operationId":"createStoryProject","scope":"story:write","idempotent":true},"cli":{"command":"sleeperhit projects create --name <name>"},"mcp":{"tool":"create_project"},"docsUrl":"https://docs.sleeperhit.studio/quickstart"},{"id":"projects.list","title":"List story projects","description":"Cursor-paginated project list.","availability":"available","docsSlug":"api-reference","tags":["projects"],"api":{"method":"GET","path":"/story-projects","operationId":"listStoryProjects","scope":"story:read"},"cli":{"command":"sleeperhit projects list"},"mcp":{"tool":"list_projects"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"projects.get","title":"Read a story project","description":"Fetch one project by id.","availability":"available","docsSlug":"api-reference","tags":["projects"],"api":{"method":"GET","path":"/story-projects/{projectId}","operationId":"getStoryProject","scope":"story:read"},"cli":{"command":"sleeperhit projects get <projectId>"},"mcp":{"tool":"get_project"},"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","docsSlug":"api-reference","tags":["projects"],"api":{"method":"PATCH","path":"/story-projects/{projectId}","operationId":"updateStoryProject","scope":"story:write"},"cli":{"command":"sleeperhit projects update <projectId> [--name <text>] [--description <text>] [--metadata <json>] [--archived true|false]"},"mcp":{"tool":"update_project"},"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","docsSlug":"api-reference","tags":["projects"],"api":{"method":"DELETE","path":"/story-projects/{projectId}","operationId":"deleteStoryProject","scope":"story:write"},"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.","availability":"available","docsSlug":"api-reference","tags":["projects","documents"],"api":{"method":"GET","path":"/story-projects/{projectId}/series-bible","operationId":"getProjectSeriesBible","scope":"story:read"},"cli":{"command":"sleeperhit bible get <projectId>"},"mcp":{"tool":"get_series_bible"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"projects.series-bible.save","title":"Save a project Series Bible","description":"Persist project canon, episode map, characters, and style/audio direction.","availability":"available","docsSlug":"api-reference","tags":["projects","documents"],"api":{"method":"PATCH","path":"/story-projects/{projectId}/series-bible","operationId":"saveProjectSeriesBible","scope":"story:write"},"cli":{"command":"sleeperhit bible save <projectId> --json <object>"},"mcp":{"tool":"save_series_bible"},"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 project-level canon from project context.","availability":"available","docsSlug":"api-reference","tags":["projects","documents"],"api":{"method":"POST","path":"/story-projects/{projectId}/series-bible","operationId":"generateProjectSeriesBible","scope":"story:write","idempotent":true},"cli":{"command":"sleeperhit bible generate <projectId>"},"mcp":{"tool":"generate_series_bible"},"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","docsSlug":"quickstart","tags":["sources"],"api":{"method":"POST","path":"/story-projects/{projectId}/sources","operationId":"createStorySource","scope":"source:write","idempotent":true},"cli":{"command":"sleeperhit sources add <projectId> --type text|markdown|url|pdf"},"mcp":{"tool":"add_source"},"docsUrl":"https://docs.sleeperhit.studio/quickstart"},{"id":"sources.list","title":"List sources","description":"List sources attached to a project.","availability":"available","docsSlug":"api-reference","tags":["sources"],"api":{"method":"GET","path":"/story-projects/{projectId}/sources","operationId":"listStorySources","scope":"source:read"},"cli":{"command":"sleeperhit sources list <projectId>"},"mcp":{"tool":"list_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","docsSlug":"api-reference","tags":["sources"],"api":{"method":"GET","path":"/story-projects/{projectId}/sources/{sourceId}","operationId":"getStorySource","scope":"source:read"},"cli":{"command":"sleeperhit sources get <projectId> <sourceId>"},"mcp":{"tool":"get_source"},"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","docsSlug":"api-reference","tags":["sources"],"api":{"method":"DELETE","path":"/story-projects/{projectId}/sources/{sourceId}","operationId":"deleteStorySource","scope":"source:write"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"plans.create","title":"Generate a StoryPlan","description":"Generate the source-grounded plan that drives artifact jobs.","availability":"available","docsSlug":"quickstart","tags":["plans"],"api":{"method":"POST","path":"/story-projects/{projectId}/story-plans","operationId":"createStoryPlan","scope":"story:write","idempotent":true},"cli":{"command":"sleeperhit plans create <projectId> --target ... --artifact ..."},"mcp":{"tool":"create_plan"},"docsUrl":"https://docs.sleeperhit.studio/quickstart"},{"id":"plans.list","title":"List StoryPlans","description":"List generated plans for a project.","availability":"available","docsSlug":"api-reference","tags":["plans"],"api":{"method":"GET","path":"/story-projects/{projectId}/story-plans","operationId":"listStoryPlans","scope":"story:read"},"cli":{"command":"sleeperhit plans list <projectId>"},"mcp":{"tool":"list_plans"},"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.","availability":"available","docsSlug":"api-reference","tags":["plans"],"api":{"method":"GET","path":"/story-plans/{planId}","operationId":"getStoryPlan","scope":"story:read"},"cli":{"command":"sleeperhit plans get <planId>"},"mcp":{"tool":"get_plan"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"plans.approve","title":"Approve a StoryPlan","description":"Move a plan out of the human approval hold.","availability":"available","docsSlug":"api-reference","tags":["plans"],"api":{"method":"POST","path":"/story-plans/{planId}/approve","operationId":"approveStoryPlan","scope":"story:write","idempotent":true},"cli":{"command":"sleeperhit plans approve <planId>"},"mcp":{"tool":"approve_plan"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"plans.reject","title":"Reject a StoryPlan","description":"Reject a plan with an optional reason.","availability":"available","docsSlug":"api-reference","tags":["plans"],"api":{"method":"POST","path":"/story-plans/{planId}/reject","operationId":"rejectStoryPlan","scope":"story:write","idempotent":true},"cli":{"command":"sleeperhit plans reject <planId>"},"mcp":{"tool":"reject_plan"},"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.","availability":"available","docsSlug":"quickstart","tags":["jobs"],"api":{"method":"POST","path":"/story-jobs","operationId":"createStoryJob","scope":"story:write","idempotent":true},"cli":{"command":"sleeperhit jobs create <planId>"},"mcp":{"tool":"create_job"},"docsUrl":"https://docs.sleeperhit.studio/quickstart"},{"id":"jobs.list","title":"List story jobs","description":"List queued and completed jobs.","availability":"available","docsSlug":"api-reference","tags":["jobs"],"api":{"method":"GET","path":"/story-jobs","operationId":"listStoryJobs","scope":"story:read"},"cli":{"command":"sleeperhit jobs list"},"mcp":{"tool":"list_jobs"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"jobs.get","title":"Read a story job","description":"Poll job status and artifact readiness.","availability":"available","docsSlug":"quickstart","tags":["jobs"],"api":{"method":"GET","path":"/story-jobs/{jobId}","operationId":"getStoryJob","scope":"story:read"},"cli":{"command":"sleeperhit jobs get <jobId>"},"mcp":{"tool":"get_job"},"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","docsSlug":"api-reference","tags":["jobs"],"api":{"method":"POST","path":"/story-jobs/{jobId}/cancel","operationId":"cancelStoryJob","scope":"story:write","idempotent":true},"cli":{"command":"sleeperhit jobs cancel <jobId>"},"mcp":{"tool":"cancel_job"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.list","title":"List job artifacts","description":"List artifacts produced by a job.","availability":"available","docsSlug":"api-reference","tags":["artifacts"],"api":{"method":"GET","path":"/story-jobs/{jobId}/artifacts","operationId":"listStoryJobArtifacts","scope":"artifact:read"},"cli":{"command":"sleeperhit jobs artifacts <jobId>"},"mcp":{"tool":"list_artifacts"},"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","docsSlug":"api-reference","tags":["artifacts"],"api":{"method":"GET","path":"/artifacts/{artifactId}","operationId":"getStoryArtifact","scope":"artifact:read"},"cli":{"command":"sleeperhit artifacts get <artifactId>"},"mcp":{"tool":"get_artifact"},"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","docsSlug":"api-reference","tags":["artifacts","video"],"api":{"method":"POST","path":"/artifacts/{artifactId}/render-video","operationId":"renderArtifactVideo","scope":"artifact:publish","idempotent":true},"cli":{"command":"sleeperhit artifacts render-video <artifactId>"},"mcp":{"tool":"render_artifact_video"},"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","docsSlug":"api-reference","tags":["artifacts","table_read"],"api":{"method":"POST","path":"/artifacts/{artifactId}/refine","operationId":"refineArtifact","scope":"artifact:publish","idempotent":true},"cli":{"command":"sleeperhit refine <artifactId> <instruction...>"},"mcp":{"tool":"refine_artifact"},"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","docsSlug":"api-reference","tags":["artifacts","table_read"],"api":{"method":"POST","path":"/artifacts/{artifactId}/finalize","operationId":"finalizeArtifact","scope":"artifact:publish","idempotent":true},"cli":{"command":"sleeperhit finalize <artifactId> --mode audio|video"},"mcp":{"tool":"finalize_artifact"},"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","docsSlug":"api-reference","tags":["artifacts","voice"],"api":{"method":"GET","path":"/artifacts/{artifactId}","operationId":"getStoryArtifact","scope":"artifact:read"},"cli":{"command":"sleeperhit cast <artifactId>"},"mcp":{"tool":"get_cast"},"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","docsSlug":"api-reference","tags":["artifacts","table_read","script"],"api":{"method":"GET","path":"/artifacts/{artifactId}/script","operationId":"getArtifactScript","scope":"artifact:read"},"cli":{"command":"sleeperhit script get <artifactId>"},"mcp":{"tool":"get_table_read_script"},"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","docsSlug":"api-reference","tags":["artifacts","table_read","script"],"api":{"method":"GET","path":"/artifacts/{artifactId}/script","operationId":"getArtifactScript","scope":"artifact:read"},"cli":{"command":"sleeperhit script page <artifactId> <page>"},"mcp":{"tool":"get_script_page"},"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","docsSlug":"api-reference","tags":["artifacts","table_read","script"],"api":{"method":"GET","path":"/artifacts/{artifactId}/script","operationId":"getArtifactScript","scope":"artifact:read"},"cli":{"command":"sleeperhit script scene <artifactId> <sceneIndex>"},"mcp":{"tool":"get_script_scene"},"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","docsSlug":"api-reference","tags":["artifacts","table_read","script"],"api":{"method":"GET","path":"/artifacts/{artifactId}/script","operationId":"getArtifactScript","scope":"artifact:read"},"cli":{"command":"sleeperhit script character <artifactId> <character...>"},"mcp":{"tool":"get_character_lines"},"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","docsSlug":"api-reference","tags":["artifacts","voice"],"api":{"method":"POST","path":"/artifacts/{artifactId}/voice","operationId":"recastArtifactVoice","scope":"artifact:publish","idempotent":true},"cli":{"command":"sleeperhit voice set <artifactId> --character <c> --voice-id <id> --voice-name <name>"},"mcp":{"tool":"recast_voice"},"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","docsSlug":"api-reference","tags":["artifacts","cast","avatar"],"api":{"method":"POST","path":"/artifacts/{artifactId}/avatar","operationId":"recastArtifactAvatar","scope":"artifact:publish","idempotent":true},"cli":{"command":"sleeperhit avatar set <artifactId> --character <c> [--refine <text>] [--style <style>]"},"mcp":{"tool":"recast_avatar"},"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","docsSlug":"api-reference","tags":["artifacts","cast","voice","avatar"],"api":{"method":"POST","path":"/artifacts/{artifactId}/cast","operationId":"updateArtifactCast","scope":"artifact:publish","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"},"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","docsSlug":"api-reference","tags":["artifacts","cast","voice","avatar"],"api":{"method":"GET","path":"/artifacts/{artifactId}/cast","operationId":"getArtifactCast","scope":"artifact:read"},"cli":{"command":"sleeperhit cast <artifactId>"},"mcp":{"tool":"get_cast"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.coverage.generate","title":"Generate script coverage","description":"Generate async professional coverage for the screenplay backing a table read.","availability":"available","docsSlug":"api-reference","tags":["artifacts","coverage"],"api":{"method":"POST","path":"/artifacts/{artifactId}/coverage","operationId":"generateArtifactCoverage","scope":"story:write","idempotent":true},"cli":{"command":"sleeperhit coverage generate <artifactId>"},"mcp":{"tool":"generate_coverage"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.coverage.get","title":"Read script coverage","description":"Poll or read the latest coverage report for a table-read artifact.","availability":"available","docsSlug":"api-reference","tags":["artifacts","coverage"],"api":{"method":"GET","path":"/artifacts/{artifactId}/coverage","operationId":"getArtifactCoverage","scope":"artifact:read"},"cli":{"command":"sleeperhit coverage get <artifactId>"},"mcp":{"tool":"get_coverage"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.music.generate","title":"Generate adaptive music","description":"Generate or regenerate per-scene music for a table-read artifact.","availability":"available","docsSlug":"api-reference","tags":["artifacts","music"],"api":{"method":"POST","path":"/artifacts/{artifactId}/music","operationId":"generateArtifactMusic","scope":"artifact:publish","idempotent":true},"cli":{"command":"sleeperhit music generate <artifactId>"},"mcp":{"tool":"generate_music"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.music.update","title":"Update scene music","description":"Tune or mute one scene music direction for a table-read artifact.","availability":"available","docsSlug":"api-reference","tags":["artifacts","music"],"api":{"method":"POST","path":"/artifacts/{artifactId}/music","operationId":"generateArtifactMusic","scope":"artifact:publish","idempotent":true},"cli":{"command":"sleeperhit music update <artifactId> --scene <n>"},"mcp":{"tool":"update_music"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.music.get","title":"Read adaptive music status","description":"Poll adaptive music readiness for a table-read artifact.","availability":"available","docsSlug":"api-reference","tags":["artifacts","music"],"api":{"method":"GET","path":"/artifacts/{artifactId}/music","operationId":"getArtifactMusic","scope":"artifact:read"},"cli":{"command":"sleeperhit music get <artifactId>"},"mcp":{"tool":"get_music"},"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","docsSlug":"api-reference","tags":["artifacts","voice"],"api":{"method":"POST","path":"/artifacts/{artifactId}/voice-modification","operationId":"modifyArtifactVoice","scope":"artifact:publish","idempotent":true},"cli":{"command":"sleeperhit modify-voice <artifactId> --start <n> --end <n>"},"mcp":{"tool":"modify_voice"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"},{"id":"artifacts.sfx.manage","title":"Manage sound effects","description":"Add or remove timed SFX cues for a table-read artifact.","availability":"available","docsSlug":"api-reference","tags":["artifacts","sfx"],"api":{"method":"POST","path":"/artifacts/{artifactId}/sfx","operationId":"manageArtifactSfx","scope":"artifact:publish","idempotent":true},"cli":{"command":"sleeperhit sfx add|remove <artifactId>"},"mcp":{"tool":"add_sfx"},"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","docsSlug":"api-reference","tags":["artifacts","sfx"],"api":{"method":"GET","path":"/artifacts/{artifactId}/sfx","operationId":"listArtifactSfx","scope":"artifact:read"},"cli":{"command":"sleeperhit sfx list <artifactId>"},"mcp":{"tool":"list_sfx"},"docsUrl":"https://docs.sleeperhit.studio/api-reference"}]}