Storyboards API, MCP & CLI
Create, edit, render and export scene-by-scene storyboard videos from the REST API, MCP clients or the mostly CLI.
A storyboard is a short video built scene by scene. Each scene has a beat (title, purpose, dialogue) and one or more shots labelled 3b (scene 3, second shot). The same operations are available in Moss chat, over MCP, from the mostly CLI and over REST.
Writing and editing are free. Rendering and exporting spend credits. Any call that would spend credits needs maxCredits: without it, or when the estimate is higher, nothing is spent and the response has "status": "needs_confirmation" with estimatedCredits.
Workflow
- Write:
POST /api/v1/storyboardswithpromptand optionallybeats(one per scene, in order). Scenes appear in about a minute. - Review:
GET /api/v1/storyboards/:id(add?format=fullfor whole prompts and the@[Name](image:id)mentions of your cast and products). - Render:
POST /api/v1/storyboards/:id/renderwith{}to get the price, then again withmaxCredits. - Edit: change shots and beats, then render again with
scope: "stale". Only edited shots re-render; earlier renders stay as alternative takes. - Export:
POST /api/v1/storyboards/:id/exportwithmaxCredits, then pollGET /api/v1/storyboards/:id/exports/:exportIdforvideoUrl.
Endpoints
| Method | Path | Body / query |
|---|---|---|
| GET | /api/v1/storyboards | ?limit=20&page=0 |
| POST | /api/v1/storyboards | prompt, beats, duration, aspectRatio, lens, productIds, avatars, references, videoModelId, resolution, render (none/video), maxCredits, webhookUrl |
| GET | /api/v1/storyboards/:id | ?format=compact|full|spec&scenes=1,3 |
| PATCH | /api/v1/storyboards/:id | name, lens, videoModelId, resolution, applyToExistingShots, productIds, avatars, addReferences, captions, webhookUrl |
| PUT | /api/v1/storyboards/:id | spec (from ?format=spec), prune, dryRun, render (none/changed/pending), maxCredits |
| POST | /api/v1/storyboards/:id/render | scenes, shots, scope (pending/missing/failed/stale/all), kinds, maxCredits |
| POST | /api/v1/storyboards/:id/export | maxCredits, allowIncomplete |
| GET | /api/v1/storyboards/:id/exports/:exportId |
All endpoints take Authorization: Bearer mst_live_... and an optional x-mostly-brand-id header.
Editing with a spec
GET ?format=spec returns every scene in order with its beat, narration and shots. Edit it and PUT it back:
- a scene or shot without
idis created, - the order of
scenes(and of each scene'sshots) becomes the play order, - with
prune: true, scenes and shots you left out are hidden (nothing is deleted), dryRun: truelists the changes without applying them.
Webhooks
Pass webhookUrl (public https) when creating or updating a storyboard. The response includes a webhookSecret once. Events are POSTed as JSON with an x-mostly-event header and x-mostly-signature: sha256=<HMAC-SHA256 of the raw body with the secret>:
storyboard.scenes_ready,storyboard.failedstoryboard.renders_settled(no render left running)storyboard.export_completed,storyboard.export_failed
Delivery is best-effort with one attempt, and you may receive an event more than once, so re-read the storyboard rather than relying on the payload alone.
MCP tools
list_storyboards, get_storyboard, generate_storyboard, update_storyboard, create_storyboard_scene, update_storyboard_scene, move_storyboard_scene, delete_storyboard_scene, generate_scene_content, update_storyboard_shot, add_storyboard_shot, delete_storyboard_shot, render_storyboard, review_storyboard (returns rendered frames as images), export_storyboard, get_storyboard_export, apply_storyboard_spec.
CLI
mostly storyboard create --prompt "UGC ad for our serum" --duration 30 --lens UGC --wait
mostly storyboard render <id> # prints the price, exit code 2
mostly storyboard render <id> --max-credits 150 --wait
mostly storyboard pull <id> --out sb.json && mostly storyboard apply sb.json --render changed --max-credits 100
mostly storyboard export <id> --max-credits 20 --out ad.mp4