Sleeper Hit Studio

API Reference

Generated endpoint reference for the Story API.

API Reference

This reference is generated from the live OpenAPI builder, schema registry, capabilities manifest, examples manifest, and UI/API/CLI/MCP surface registry. Do not hand-edit endpoint lists; change the contract code and regenerate.

Machine-readable surfaces

SurfacePath
Capabilities/api/v1/capabilities
OpenAPI JSON/api/v1/openapi.json
Examples/api/v1/examples
Agent index/agent-index.json
Four-surface contract/docs/surface-contract.json
CLI command map/docs/cli-commands.json
MCP tool map/docs/mcp-tools.json

Surface coverage

  • Operations: 116
  • OpenAPI operations: 111
  • Complete UI/API/CLI/MCP operations: 116 / 116
SurfaceBound operations
UI116 / 116
API116 / 116
CLI116 / 116
MCP116 / 116

Development flow warnings

Complete the Series Bible before screenplay pages

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

Complete Series Bible Visuals before storyboarding

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

Run one coverage round after the screenplay exists

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

Artifacts

EndpointOperation IDScopeIdempotentSchemas
GET /api/v1/artifacts/{artifactId}getStoryArtifactartifact:readnoresponse:StoryArtifactEnvelope
POST /api/v1/artifacts/{artifactId}/avatarrecastArtifactAvatarartifact:publishyesrequest:AvatarRecastRequest<br>response:AvatarRecastResponse
GET /api/v1/artifacts/{artifactId}/castgetArtifactCastartifact:readnoresponse:CastEnvelope
POST /api/v1/artifacts/{artifactId}/castupdateArtifactCastartifact:publishyesrequest:CastBatchRequest<br>response:CastBatchResponse
GET /api/v1/artifacts/{artifactId}/coveragegetArtifactCoverageartifact:readnoresponse:CoverageReportEnvelope
POST /api/v1/artifacts/{artifactId}/coveragegenerateArtifactCoveragestory:writeyesresponse:CoverageDispatchAck
POST /api/v1/artifacts/{artifactId}/finalizefinalizeArtifactartifact:publishyes
POST /api/v1/artifacts/{artifactId}/finalize/retryretryArtifactFinalizeartifact:publishyesresponse:ArtifactFinalizeAck
GET /api/v1/artifacts/{artifactId}/musicgetArtifactMusicartifact:readnoresponse:MusicStatusEnvelope
POST /api/v1/artifacts/{artifactId}/musicgenerateArtifactMusicartifact:publishyesrequest:MusicGenerateRequest<br>response:MusicGenerateResponse
POST /api/v1/artifacts/{artifactId}/performanceupdateArtifactPerformanceartifact:publishyesrequest:PerformanceDirectiveRequest<br>response:PerformanceDirectiveResponse
POST /api/v1/artifacts/{artifactId}/refinerefineArtifactartifact:publishyes
GET /api/v1/artifacts/{artifactId}/render-videogetArtifactRenderStatusartifact:readnoresponse:ArtifactRenderStatus
POST /api/v1/artifacts/{artifactId}/render-videorenderArtifactVideoartifact:publishyesresponse:ArtifactRenderAck
GET /api/v1/artifacts/{artifactId}/scriptgetArtifactScriptartifact:readnoresponse:ArtifactScriptContentEnvelope
POST /api/v1/artifacts/{artifactId}/scriptreplaceArtifactScriptartifact:publishyesrequest:ArtifactScriptReplacementRequest<br>response:StoryJobEnvelope
GET /api/v1/artifacts/{artifactId}/sfxlistArtifactSfxartifact:readnoresponse:SfxListResponse
POST /api/v1/artifacts/{artifactId}/sfxmanageArtifactSfxartifact:publishyesrequest:SfxManageRequest<br>response:SfxMutationResponse
POST /api/v1/artifacts/{artifactId}/theater-canvasapplyTheaterCanvasartifact:publishyesrequest:TheaterCanvasRequest<br>response:TheaterMotionResult
POST /api/v1/artifacts/{artifactId}/theater-motion-clipgenerateTheaterMotionClipartifact:publishyesrequest:TheaterMotionClipRequest<br>response:TheaterMotionResult
POST /api/v1/artifacts/{artifactId}/theater-motiondirectTheaterMotionBeatartifact:publishyesrequest:TheaterMotionBeatRequest<br>response:TheaterMotionResult
POST /api/v1/artifacts/{artifactId}/voice-modificationmodifyArtifactVoiceartifact:publishyesrequest:VoiceModificationRequest<br>response:VoiceModificationResponse
POST /api/v1/artifacts/{artifactId}/voicerecastArtifactVoiceartifact:publishyes
GET /api/v1/story-jobs/{jobId}/artifactslistStoryJobArtifactsartifact:readnoresponse:StoryArtifactListResponse

Brand

EndpointOperation IDScopeIdempotentSchemas
POST /api/v1/brand-coverageanalyzeBrandCoveragestory:writeyesrequest:BrandCoverageRequest<br>response:BrandCoverageAck
GET /api/v1/brand-coverage/{reportId}getBrandCoveragestory:readnoresponse:BrandCoverageReport
POST /api/v1/brand-narrativegenerateBrandNarrativestory:writeyesrequest:BrandNarrativeRequest<br>response:BrandNarrativeResponse

Credits

EndpointOperation IDScopeIdempotentSchemas
GET /api/v1/creditsgetCreditscredits:readnoresponse:CreditsSummary

Discovery

EndpointOperation IDScopeIdempotentSchemas
GET /api/v1/agent-guidancegetAgentGuidancestory:readnoresponse:AgentGuidance
GET /api/v1/capabilitiesgetCapabilitiesstory:readnoresponse:Capabilities

Jobs

EndpointOperation IDScopeIdempotentSchemas
GET /api/v1/story-jobslistStoryJobsstory:readnoresponse:StoryJobList
POST /api/v1/story-jobscreateStoryJobstory:writeyesrequest:StoryJobCreate<br>response:StoryJobEnvelope
GET /api/v1/story-jobs/{jobId}getStoryJobstory:readnoresponse:StoryJobEnvelope
POST /api/v1/story-jobs/{jobId}/cancelcancelStoryJobstory:writeyesresponse:StoryJobEnvelope
POST /api/v1/story-jobs/{jobId}/resumeresumeStoryJobstory:writeyesresponse:StoryJobResumeResponse

Library

EndpointOperation IDScopeIdempotentSchemas
GET /api/v1/library/audiolistMyLibraryAudiostory:readnoresponse:MyLibraryAudio
POST /api/v1/library/audioimportMyLibraryAudiostory:writeyesrequest:MyLibraryAudioImportRequest<br>response:MyLibraryAudioImportResponse
GET /api/v1/library/imageslistMyLibraryImagesstory:readnoresponse:MyLibraryImages

Pitch Deck

EndpointOperation IDScopeIdempotentSchemas
POST /api/v1/pitch-decks/{jobId}/draft/approveapprovePitchDeckDraftstory:writeyesresponse:PitchDeckStageAck
GET /api/v1/pitch-decks/{jobId}/storyboardgetPitchDeckStoryboardstory:readnoresponse:PitchDeckStoryboard
POST /api/v1/pitch-decks/{jobId}/storyboard/apply-componentapplySceneComponentToPitchDeckstory:writeyesrequest:PitchDeckApplyComponentRequest<br>response:PitchDeckFramePreview
POST /api/v1/pitch-decks/{jobId}/storyboard/approveapprovePitchDeckStoryboardstory:writeyesresponse:PitchDeckStageAck
POST /api/v1/pitch-decks/{jobId}/storyboard/refinerefinePitchDeckFramestory:writeyesrequest:PitchDeckFrameRefineRequest<br>response:PitchDeckFramePreview
POST /api/v1/pitch-decks/{jobId}/storyboard/regenerate-clipregeneratePitchDeckClipartifact:publishyesrequest:PitchDeckFrameIndexRequest<br>response:PitchDeckRegenAck
POST /api/v1/pitch-decks/{jobId}/storyboard/regenerate-textregeneratePitchDeckTextartifact:publishyesrequest:PitchDeckFrameIndexRequest<br>response:PitchDeckRegenAck
POST /api/v1/pitch-decks/{jobId}/storyboard/regenerateregeneratePitchDeckFrameartifact:publishyesrequest:PitchDeckFrameIndexRequest<br>response:PitchDeckRegenAck
POST /api/v1/pitch-decks/{jobId}/storyboard/swap-libraryswapPitchDeckFrameFromLibrarystory:writeyesrequest:PitchDeckSwapLibraryRequest<br>response:PitchDeckFramePreview

Plans

EndpointOperation IDScopeIdempotentSchemas
GET /api/v1/story-plans/{planId}getStoryPlanstory:readnoresponse:StoryPlanEnvelopeResponse
POST /api/v1/story-plans/{planId}/approveapproveStoryPlanstory:writeyesrequest:StoryPlanApprovalRequest<br>response:StoryPlanEnvelopeResponse
POST /api/v1/story-plans/{planId}/rejectrejectStoryPlanstory:writeyesresponse:StoryPlanEnvelopeResponse
POST /api/v1/story-plans/{planId}/resumeresumeStoryPlanstory:writeyesresponse:StoryPlanEnvelopeResponse
GET /api/v1/story-projects/{projectId}/story-planslistStoryPlansstory:readnoresponse:StoryPlanList
POST /api/v1/story-projects/{projectId}/story-planscreateStoryPlanstory:writeyesrequest:StoryPlanCreate<br>response:StoryPlanEnvelopeResponse

Projects

EndpointOperation IDScopeIdempotentSchemas
GET /api/v1/story-projectslistStoryProjectsstory:readnoresponse:StoryProjectList
POST /api/v1/story-projectscreateStoryProjectstory:writeyesrequest:StoryProjectCreate<br>response:StoryProjectEnvelope
DELETE /api/v1/story-projects/{projectId}deleteStoryProjectstory:writenoresponse:DeletionAck
GET /api/v1/story-projects/{projectId}getStoryProjectstory:readnoresponse:StoryProjectEnvelope
PATCH /api/v1/story-projects/{projectId}updateStoryProjectstory:writenorequest:StoryProjectPatch<br>response:StoryProjectEnvelope
GET /api/v1/story-projects/{projectId}/cast-canongetProjectCastCanonstory:readnoresponse:CastCanonEnvelope
PATCH /api/v1/story-projects/{projectId}/cast-canonsaveProjectCastCanonstory:writenorequest:CastCanonPatch<br>response:CastCanonEnvelope
GET /api/v1/story-projects/{projectId}/series-biblegetProjectSeriesBiblestory:readnoresponse:SeriesBibleEnvelope
PATCH /api/v1/story-projects/{projectId}/series-biblesaveProjectSeriesBiblestory:writenorequest:SeriesBiblePatch<br>response:SeriesBibleEnvelope
POST /api/v1/story-projects/{projectId}/series-biblegenerateProjectSeriesBiblestory:writeyesrequest:SeriesBibleGenerateRequest<br>response:SeriesBibleEnvelope
GET /api/v1/story-projects/{projectId}/series-bible/coveragegetProjectSeriesBibleCoveragestory:readnoresponse:SeriesBibleCoverageEnvelope
POST /api/v1/story-projects/{projectId}/series-bible/coveragegenerateProjectSeriesBibleCoveragestory:writeyesrequest:SeriesBibleCoverageGenerateRequest<br>response:SeriesBibleCoverageEnvelope

Publishing

EndpointOperation IDScopeIdempotentSchemas
GET /api/v1/publishing-feeds/{seriesSlug}.xmlgetPublishingRssFeedno
GET /api/v1/publishing-provider-configslistPublishingProviderConfigspublishing:connectnoresponse:PublishingProviderConfigList
POST /api/v1/publishing-provider-configsupsertPublishingProviderConfigpublishing:connectyesrequest:PublishingProviderConfigUpsertRequest<br>response:PublishingProviderConfigEnvelope
GET /api/v1/publishing-releases/{releaseId}getPublishingReleasepublishing:readnoresponse:PublishingReleaseEnvelope
PATCH /api/v1/publishing-releases/{releaseId}updatePublishingReleasepublishing:writenorequest:PublishingReleaseUpdateRequest<br>response:PublishingReleaseEnvelope
POST /api/v1/publishing-releases/{releaseId}/cancelcancelPublishingReleasepublishing:publishyesresponse:PublishingReleaseEnvelope
POST /api/v1/publishing-releases/{releaseId}/description/generategeneratePublishingReleaseDescriptionpublishing:writeyesresponse:PublishingReleaseEnvelope
POST /api/v1/publishing-releases/{releaseId}/publishpublishPublishingReleasepublishing:publishyesresponse:PublishingReleaseEnvelope
POST /api/v1/publishing-releases/{releaseId}/refresh-mediarefreshPublishedReleaseMediapublishing:publishyesrequest:PublishingReleaseRefreshMediaRequest<br>response:PublishingReleaseEnvelope
POST /api/v1/publishing-releases/{releaseId}/scheduleschedulePublishingReleasepublishing:publishyesresponse:PublishingReleaseEnvelope
GET /api/v1/publishing-releases/{releaseId}/targetslistPublishingReleaseTargetspublishing:readnoresponse:PublishingTargetList
GET /api/v1/publishing-series/{seriesId}getPublishingSeriespublishing:readnoresponse:PublishingSeriesEnvelope
PATCH /api/v1/publishing-series/{seriesId}updatePublishingSeriespublishing:writenorequest:PublishingSeriesUpdateRequest<br>response:PublishingSeriesEnvelope
GET /api/v1/publishing-series/{seriesId}/analyticslistPublishingAnalyticsSnapshotspublishing:analyticsnoresponse:PublishingAnalyticsList
GET /api/v1/publishing-series/{seriesId}/destinationslistPublishingDestinationspublishing:readnoresponse:PublishingDestinationList
POST /api/v1/publishing-series/{seriesId}/destinationsupsertPublishingDestinationpublishing:connectyesrequest:PublishingDestinationUpsertRequest<br>response:PublishingDestinationEnvelope
POST /api/v1/publishing-series/{seriesId}/generate-cover-artgeneratePublishingSeriesCoverArtpublishing:writenorequest:PublishingCoverArtGenerateRequest<br>response:PublishingCoverArtGenerateResponse
GET /api/v1/publishing-series/{seriesId}/releaseslistPublishingReleasespublishing:readnoresponse:PublishingReleaseList
POST /api/v1/publishing-series/{seriesId}/releasescreatePublishingReleasepublishing:writeyesrequest:PublishingReleaseCreateRequest<br>response:PublishingReleaseEnvelope
GET /api/v1/story-projects/{projectId}/publishing-serieslistPublishingSeriespublishing:readnoresponse:PublishingSeriesList
POST /api/v1/story-projects/{projectId}/publishing-seriescreatePublishingSeriespublishing:writeyesrequest:PublishingSeriesCreateRequest<br>response:PublishingSeriesEnvelope

Seasons

EndpointOperation IDScopeIdempotentSchemas
GET /api/v1/season-runs/{runId}getStorySeasonRunstory:readnoresponse:SeasonRunEnvelope
POST /api/v1/season-runs/{runId}/advanceadvanceStorySeasonRunstory:write, artifact:publish, publishing:write, publishing:publishyesrequest:SeasonRunAdvanceRequest<br>response:SeasonRunEnvelope
POST /api/v1/season-runs/{runId}/approveapproveStorySeasonMapstory:writeyesrequest:SeasonRunApprovalRequest<br>response:SeasonRunEnvelope
PATCH /api/v1/season-runs/{runId}/episodes/{episodeId}updateStorySeasonEpisodestory:writenorequest:SeasonRunEpisodeUpdateRequest<br>response:SeasonRunEnvelope
GET /api/v1/story-projects/{projectId}/season-runslistStorySeasonRunsstory:readnoresponse:SeasonRunList
POST /api/v1/story-projects/{projectId}/season-runscreateStorySeasonRunstory:write, publishing:writeyesrequest:SeasonRunCreateRequest<br>response:SeasonRunEnvelope

Sources

EndpointOperation IDScopeIdempotentSchemas
GET /api/v1/story-projects/{projectId}/sourceslistStorySourcessource:readnoresponse:StorySourceList
POST /api/v1/story-projects/{projectId}/sourcescreateStorySourcesource:writeyesrequest:StorySourceCreate<br>response:StorySourceEnvelope
DELETE /api/v1/story-projects/{projectId}/sources/{sourceId}deleteStorySourcesource:writenoresponse:DeletionAck
GET /api/v1/story-projects/{projectId}/sources/{sourceId}getStorySourcesource:readnoresponse:StorySourceEnvelope

Trailer

EndpointOperation IDScopeIdempotentSchemas
POST /api/v1/trailers/{jobId}/draft/approveapproveTrailerDraftstory:writeyesresponse:TrailerStageAck
GET /api/v1/trailers/{jobId}/storyboardgetTrailerStoryboardstory:readnoresponse:TrailerStoryboard
POST /api/v1/trailers/{jobId}/storyboard/apply-componentapplySceneComponentToTrailerstory:writeyesrequest:TrailerApplyComponentRequest<br>response:TrailerFramePreview
POST /api/v1/trailers/{jobId}/storyboard/approveapproveTrailerStoryboardstory:writeyesresponse:TrailerStageAck
POST /api/v1/trailers/{jobId}/storyboard/refinerefineTrailerFramestory:writeyesrequest:TrailerFrameRefineRequest<br>response:TrailerFramePreview
POST /api/v1/trailers/{jobId}/storyboard/regenerate-clipregenerateTrailerClipartifact:publishyesrequest:TrailerBeatIndexRequest<br>response:TrailerRegenAck
POST /api/v1/trailers/{jobId}/storyboard/regenerate-textregenerateTrailerTextartifact:publishyesrequest:TrailerBeatIndexRequest<br>response:TrailerRegenAck
POST /api/v1/trailers/{jobId}/storyboard/regenerateregenerateTrailerFrameartifact:publishyesrequest:TrailerBeatIndexRequest<br>response:TrailerRegenAck
POST /api/v1/trailers/{jobId}/storyboard/swap-libraryswapTrailerFrameFromLibrarystory:writeyesrequest:TrailerSwapLibraryRequest<br>response:TrailerFramePreview

Voices

EndpointOperation IDScopeIdempotentSchemas
GET /api/v1/voiceslistStudioVoicesstory:readnoresponse:StudioVoiceListResponse
POST /api/v1/voices/clone-linkcreateVoiceCloneLinkstory:writeyesresponse:VoiceCloneLinkResponse
GET /api/v1/voices/pro/{jobId}getProVoiceClonestory:readnoresponse:ProVoiceCloneStatus
GET /api/v1/voices/pro/scriptgetProVoiceCloneScriptstory:readnoresponse:ProVoiceCloneScript
POST /api/v1/voices/pro/startstartProVoiceClonestory:writeyesrequest:ProVoiceCloneStartRequest<br>response:ProVoiceCloneStartResult
POST /api/v1/voices/pro/trainstartProVoiceCloneTrainingstory:writeyesrequest:ProVoiceCloneTrainRequest<br>response:ProVoiceCloneTrainResult