# StillMade Blocks and the SDK

What StillMade's own Blocks do, and how a creator Block does the same with the public SDK.

StillMade's own Blocks run on host services. Each one is listed here with the public SDK features that give a creator Block the same capability, so nothing StillMade builds for itself stays out of reach without a stated reason. A test fails when one of StillMade's Blocks starts using a service that is not on this list.

| What StillMade's Blocks do | How a creator Block does it | Notes |
| --- | --- | --- |
| Animated scene assets: generated props and backgrounds, scene video slicing, sprite sheets. | hosted `image.generate`, hosted `video.generate`, action `media.generate`, `stillmade.media.transform`, `stillmade.files.write`, `stillmade.assets.create`, permission `context.shots.read`, permission `workspace.animation.propose` | Same capability |
| Browses other projects' scripts the person can open. | `stillmade.project.read` | Gap: Blocks read only the current project; reading another project the person can open is first-party only. |
| Canvas generation: images, videos, variations, stock and recording the asset. | hosted `image.generate`, hosted `video.generate`, action `media.generate`, action `stock.search`, `stillmade.assets.create` | Same capability |
| Canvas media: stock search, uploads and generation with prices. | hosted `image.generate`, hosted `video.generate`, action `media.generate`, action `stock.search`, `stillmade.files.write`, control `file` | Same capability |
| Canvas node placement for shipped workflow nodes. | permission `context.canvas.read`, permission `workspace.canvas.propose` | Same capability |
| Canvas workspace chrome (low-balance ribbon, default model). | `IMAGE_GENERATION_MODELS` from the SDK | The credit balance ribbon is account UI; creator Blocks see prices in StillMade's own approval dialog before any paid run. |
| Collaborative script editing. | `StillMade.getShared`, `StillMade.updateShared`, `StillMade.connectDocument` | Same capability |
| Composes the Canvas workspace from its native parts. | permission `workspace.canvas.propose` | StillMade React components and hooks only render inside the app; creator interfaces are frame views (any framework) or standard views with generated controls, styled with the same theme variables. |
| Connects a YouTube channel. | `stillmade.connections.call`, `stillmade.net.fetch` | Same capability |
| Creates a visual style with generated samples. | hosted `image.generate`, permission `context.styles.read` | Same capability |
| Credits or the person's own key for image, video, chat, voice, music and effects. | hosted `text.generate`, hosted `image.generate`, hosted `video.generate`, hosted `audio.speech`, hosted `audio.music`, hosted `audio.sfx` | Same capability |
| Crops panel images. | `stillmade.files.read`, `stillmade.files.write`, `stillmade.media.transform` | Same capability |
| Describes images and media for prompts and context. | hosted `image.describe`, hosted `media.analyze` | Same capability |
| Downloads the media a controller selected, under the export policy. | control `download`, port type `file-bundle`, action `final.render` | Same capability |
| Editor asset generation with a model, prompt, aspect, quality and reference images. | hosted `image.generate`, hosted `video.generate`, action `media.generate` | Same capability |
| Edits panel settings with local runs and confirmations. | `StillMade.run`, `StillMade.updateShared` | Same capability |
| Embeds the score, vibe and rough-cut panels in the Editor. | port type `timeline-edit`, permission `timeline.propose`, permission `context.timeline.read` | Same capability |
| Final renders of the timeline on the device, under the export policy. | action `final.render`, `stillmade.media.transform` | Same capability |
| Finds, loads and tags pipeline assets. | permission `context.assets.read`, `stillmade.project.read`, `stillmade.assets.appendVersion` | Gap: Clearing a generation watermark is tied to the account's plan and is not offered to Blocks. |
| Generates panel images with model, quality and references. | hosted `image.generate`, hosted `video.generate`, action `media.generate` | Same capability |
| Lists and applies saved visual styles. | permission `context.styles.read`, `stillmade.storage.get` | Same capability |
| Live collaborative timeline editing with permitted updates. | `StillMade.getShared`, `StillMade.updateShared`, `StillMade.connectDocument`, permission `workspace.editor.propose` | Same capability |
| Model lists and price labels for generation settings. | `IMAGE_GENERATION_MODELS` from the SDK, `VIDEO_GENERATION_MODELS` from the SDK, `AUDIO_GENERATION` from the SDK | Same capability |
| Model, resolution, quality and voice options for pipeline settings. | `IMAGE_GENERATION_MODELS` from the SDK, `VIDEO_GENERATION_MODELS` from the SDK, `AUDIO_GENERATION` from the SDK | Same capability |
| Notices, StillMade AI's presenter and upgrade prompts. | Not needed | Notices and plan upgrade prompts are account UI; a Block cannot raise them, so it cannot imitate billing or account messages. |
| Opens and closes StillMade AI's presentation of a Step. | Not needed | This is StillMade AI's own presentation of Steps; creator Blocks are presented the same way automatically and need no API. |
| Phone or desktop layout detection in the Editor. | `StillMade.render` | Device layout in a creator interface is ordinary responsive CSS inside the frame; StillMade checks it at 320 to 1280 pixels before import. |
| Places StillMade AI's generated elements on a board or canvas. | permission `workspace.board.propose`, permission `workspace.canvas.propose` | Same capability |
| Plans a panel strip from the script with a model. | hosted `text.generate`, permission `context.script.read`, permission `workspace.panels.propose` | Same capability |
| Provisions StillMade AI's paid generation for a presentation. | action `presenter.generate`, action `media.generate` | Same capability |
| Remembers a person's default image model and quality. | `stillmade.storage.get`, `stillmade.storage.set` | Same capability |
| Rewrites panel prompts with a model. | hosted `text.generate` | Same capability |
| Rough cut: frames, local footage, analysis, refinement, transcription and voiceover. | `stillmade.media.transform`, hosted `media.analyze`, hosted `audio.transcribe`, hosted `audio.speech`, hosted `text.generate`, `stillmade.files.write`, permission `timeline.propose` | Gap: Reading footage straight from the person's disk (without uploading it) is a desktop-only first-party path. |
| Runs a draft recipe or JavaScript Block locally while it is edited. | `StillMade.run` | Same capability |
| Runs Editor operations: renders, previews and timeline edits. | `stillmade.media.transform`, action `final.render`, permission `timeline.propose` | Same capability |
| Runs the production pipeline: assembly, generation, budgets, references and deliveries. | hosted `image.generate`, hosted `video.generate`, action `media.generate`, hosted `text.generate`, `stillmade.files.write`, permission `workspace.canvas.propose`, trigger `media.saved` | Same capability |
| Runs the shot planning workspace in its sandbox. | `StillMade.run`, permission `workspace.shotPlan.propose` | Same capability |
| Score and sound effect lanes: generated music and effects placed in the Editor. | hosted `audio.music`, hosted `audio.sfx`, action `media.generate`, action `stock.search`, permission `timeline.propose` | Same capability |
| Script services: drafts, models and project context. | hosted `text.generate`, permission `context.script.read`, `stillmade.project.read` | Same capability |
| Shot planning services: shots, versions and planning with a model. | hosted `text.generate`, permission `context.shots.read`, permission `workspace.shotPlan.propose`, port type `shot-plan` | Same capability |
| Shows a panel image large with its narration and text. | `StillMade.previewImage` | Same capability |
| Shows the script in its workspace layout. | port type `script`, control `document` | StillMade React components and hooks only render inside the app; creator interfaces are frame views (any framework) or standard views with generated controls, styled with the same theme variables. |
| StillMade AI presents a workspace and adds board elements. | action `presenter.generate`, permission `workspace.board.propose` | Same capability |
| StillMade dialogs and notices for Image Panels. | `StillMade.render` | StillMade's own dialogs stay host-owned so a Block cannot imitate account, payment or permission prompts; creator interfaces show their own confirmations inside their frame. |
| Story bible editing with collaboration and the bible graph hash. | `StillMade.getShared`, `StillMade.updateShared`, `StillMade.connectDocument`, permission `context.blueprint.read`, permission `workspace.blueprint.propose`, hosted `text.generate` | Same capability |
| Story bible workspace UI (selects, step header, bottom sheet, help). | `StillMade.render`, `StillMade.schemaFields` | StillMade React components and hooks only render inside the app; creator interfaces are frame views (any framework) or standard views with generated controls, styled with the same theme variables. |
| Text, story segments and voiceover inside pipeline nodes. | hosted `text.generate`, hosted `audio.speech` | Same capability |
| The Canvas preview shown for a Step. | `StillMade.render`, permission `context.canvas.read` | StillMade React components and hooks only render inside the app; creator interfaces are frame views (any framework) or standard views with generated controls, styled with the same theme variables. |
| The Editor media library: project assets and uploads. | permission `context.assets.read`, `stillmade.project.read`, `stillmade.assets.create`, `stillmade.assets.appendVersion` | Same capability |
| The Editor preview shown for a Step. | `StillMade.previewMedia`, permission `context.timeline.read` | StillMade React components and hooks only render inside the app; creator interfaces are frame views (any framework) or standard views with generated controls, styled with the same theme variables. |
| The host side of the shot planning sandbox. | `StillMade.run`, permission `workspace.shotPlan.propose` | Same capability |
| The voiceover preview shown for a Step. | `StillMade.previewMedia` | StillMade React components and hooks only render inside the app; creator interfaces are frame views (any framework) or standard views with generated controls, styled with the same theme variables. |
| Uploads a stored export to YouTube. | action `youtube.upload` | Same capability |
| Uploads and checks media files, thumbnails and downloads. | control `file`, `stillmade.files.write`, `stillmade.assets.create` | Same capability |
| Vectorizes and upscales panel images. | `stillmade.asset`, `stillmade.files.read`, `stillmade.files.write` | Gap: Upscaling with a hosted model is not a hosted operation yet; module Blocks can only upscale with a model they ship in WebAssembly. |
| Video assets workspace: model limits, durations, voices, prices and batch generation. | hosted `image.generate`, hosted `video.generate`, action `media.generate`, hosted `audio.speech`, `VIDEO_GENERATION_MODELS` from the SDK | Same capability |
| Voiceover services: voices, takes and transcripts. | hosted `audio.speech`, hosted `audio.transcribe`, permission `context.transcript.read` | Same capability |
| Voiceover workspace UI with live collaboration. | `StillMade.getShared`, `StillMade.updateShared`, `StillMade.connectDocument`, `StillMade.previewMedia` | StillMade React components and hooks only render inside the app; creator interfaces are frame views (any framework) or standard views with generated controls, styled with the same theme variables. |
| White Board Motion: live collaborative board edits, elements and assets. | `StillMade.getShared`, `StillMade.updateShared`, `StillMade.connectDocument`, permission `context.board.read`, permission `workspace.board.propose`, permission `context.assets.read` | Same capability |
| Who may change Image Panels right now. | `StillMade.getShared` | Same capability |

Missing something? [Request a primitive](/create?request=primitive).
