StillMade AIDeveloper docs
Browse documentation · SDK 0.1.0

Permissions

Every permission a Block can declare, generated from the SDK.

Permission families

Every manifest declares permissions with these families. Anything not declared is unavailable; declaring a permission never grants access the user has not authorized.

FamilyAllowed values
projectProject scopes below (any runtime)
capabilitiesExactly one hosted operation for runtime: "capability" (text.generate, audio.speech, audio.transcribe, audio.music, audio.sfx, image.generate, video.generate, image.describe, media.analyze, web.fetch, web.research, timeline.propose, workspace.propose, connection.execute), or comfyui.execute for runtime: "comfyui". See runtime capabilities.
actionsPortable media actions below, for runtime: "javascript" or "module"
desktopDesktop permissions below, used through the host desktop bridge
networkFor runtime: "module": up to 8 exact https origins the Block calls with stillmade.net.fetch, each optionally with the key it needs (`{origin, auth: {scheme: "bearer" \"header" \"query" \"oauth2", name or app, label, help}}`). People add their own key or sign in once per Block; the host adds it on its servers. Other runtimes: empty. See Outside APIs.
connectionsFor runtime: "module": up to 8 published adapters by app ID (app:openapi:notion), called with stillmade.connections.call. Other runtimes: empty.
filesystem, secretsMust be empty arrays. Blocks have no ambient file or secret access; keys come from the people running the Block, through declared network access.

Project scopes

ScopeGrants
context.script.readRead the project's script as script through a declared context input.
context.transcript.readRead the project's transcript as transcript through a declared context input.
context.shots.readRead the project's shots as shot[] through a declared context input.
context.shotPlan.readRead the project's shotPlan as shot-plan through a declared context input.
context.scenes.readRead the project's scenes as scene[] through a declared context input.
context.characters.readRead the project's characters as character[] through a declared context input.
context.locations.readRead the project's locations as location[] through a declared context input.
context.styles.readRead the project's styles as style[] through a declared context input.
context.assets.readRead the project's assets as asset[] through a declared context input.
context.files.readRead the project's files as file[] through a declared context input.
context.generations.readRead the project's generations as metadata[] through a declared context input.
context.versions.readRead the project's versions as metadata[] through a declared context input.
context.timeline.readRead the project's timeline as timeline through a declared context input.
context.editor.readRead the project's editor as timeline through a declared context input.
context.canvas.readRead the project's canvas as pipeline through a declared context input.
context.blueprint.readRead the project's blueprint as bible through a declared context input.
context.panels.readRead the project's panels as panel-document through a declared context input.
context.board.readRead the project's board as board-document through a declared context input.
context.animation.readRead the project's animation as scene-document through a declared context input.
context.metadata.readRead the project's metadata as metadata through a declared context input.
asset.readRead authorized media references the host supplies through inputs or declared context; declaring it is not permission to any particular asset.
asset.createModule Blocks: add a saved image, video or audio file to the project's media as a new asset with stillmade.assets.create. Needs edit access to the project.
asset.version.appendModule Blocks: add a saved file as the newest version of a project asset the Block received, read or created, keeping its history, with stillmade.assets.appendVersion.
project.readModule Blocks: read the project while running with stillmade.project.read(fields), limited to the metadata and each field declared with context.FIELD.read.
project.patchReserved. Accepted by the manifest validator; no host applies changes through it today. Use a workspace.FIELD.propose or timeline.propose proposal.
timeline.readReserved. Accepted by the manifest validator; read the Editor timeline with context.timeline.read.
timeline.proposePropose a strict timeline edit (timeline-edit output). Requires context.timeline.read; the user previews and applies it.
workspace.animation.proposePropose a workspace-edit to the animation workspace. Requires the matching context.animation.read; the user previews and applies it.
workspace.canvas.proposePropose a workspace-edit to the canvas workspace. Requires the matching context.canvas.read; the user previews and applies it.
workspace.blueprint.proposePropose a workspace-edit to the blueprint workspace. Requires the matching context.blueprint.read; the user previews and applies it.
workspace.shotPlan.proposePropose a workspace-edit to the shotPlan workspace. Requires the matching context.shotPlan.read; the user previews and applies it.
workspace.panels.proposePropose a workspace-edit to the panels workspace. Requires the matching context.panels.read; the user previews and applies it.
workspace.board.proposePropose a workspace-edit to the board workspace. Requires the matching context.board.read; the user previews and applies it.
workspace.editor.proposePropose a workspace-edit to the editor workspace. Requires the matching context.editor.read; the user previews and applies it.
state.stepKeep persistent per-Step state for a JavaScript Block that declares manifest.state.
work.sharedRun shared background work (sharedWork) that every collaborator in the project sees.

Portable media actions

A JavaScript Block returns a {schemaVersion: 1, kind: "stillmade.media-action", operation, request, resultPort} value for an action it declared; the host validates and performs it.

ActionPerforms
final.renderAsk the host to render the project timeline to a final video.
stock.searchSearch approved stock photos, videos or audio by query.
presenter.generateGenerate presenter poses for a board from a prompt and its voiceover.
quality.analyzeAnalyze up to 16 owned images for production quality.
image.generateGenerate one image from a bounded visual prompt through the host.
image.generate.batchGenerate up to 100 panel images from prompts in one aspect ratio, pinned to the requesting Block version.
media.generateGenerate up to 50 images, videos, voice recordings, music tracks or sound effects with any StillMade catalog model, voice and settings (aspect ratio, resolution, quality, duration, sound, seed, reference images, first and last frames, voice, speed, length), paid with the user's StillMade credits after they approve one maximum for the batch.
youtube.uploadUpload an owned video to the owner's connected YouTube channel with title, description, tags, visibility, schedule and disclosure fields.

Desktop permissions

PermissionAllows
screen.captureChoose a screen or window, then record it.
cursor.trackGlobal cursor coordinates and display geometry; no click or keyboard monitoring.
camera.captureCamera recording after device and OS approval.
microphone.captureMicrophone recording after device and OS approval.
clipboard.readRead clipboard text, bounded to 100,000 characters.
clipboard.writeReplace clipboard text.
media.pickNative picker for up to 20 media files; no arbitrary path access.
notifications.showA Block-branded desktop notification, at most one every ten seconds.
power.keep-awakeKeep the app from suspending until disabled, revoked, closed or expired.
native.toolsUse one exact versioned adapter for an approved installed desktop application.

Details and request shapes: desktop capabilities.