Use individual media operations
Individual tools such as generate_image, generate_music or assemble_video perform a specific operation with explicit parameters. They do not walk upstream through a graph as run_node does.
Use them when you already have the required text and owned material URLs. Prefer run a node when the project graph should supply Elements, scenes, lore and dependent work.
Discover and quote before generating
Section titled “Discover and quote before generating”Read the tool’s reference entry, discover the model and mode, then quote the same tool and params. The nested params object is intentionally open in the MCP schema: passing schema validation does not prove that a particular model accepts every supplied field.
For example, generate_voice requires a chosen voice and nonempty text; lipsync_video requires both video and audio. A dubbing result is audio even when the source is video. isolate_audio returns cleaner speech as voice_url and, when available, a background residual as bg_url. The residual may contain music, sound effects or ambience; it is best-effort, not a guaranteed clean stem. Listen to both outputs separately.
Handle the response you actually receive
Section titled “Handle the response you actually receive”| Response | Next step |
|---|---|
| Complete text | Read all of it, including warnings; save or place it where the workflow requires. |
| Completed file or artifact | Inspect it, retain its identifier and retrieve it when needed. |
| Job/request identifier | Follow get_job; acceptance is not completion. |
| Cached completed output | Inspect the reused material; a new job may not be needed. |
| Error or uncertain result | Read job, graph and billing state before repeating the operation. |
Supplying an optional node_id can attach supported results or job information to that node. Verify the returned attachment status and read the graph back. A successful generation alone does not prove that the node was updated.
Without a destination node, use the returned material and library records. Some local file operations return a URL without creating the same kind of generation artifact; inspect the response rather than inventing an artifact ID.
Follow assembly and decoration jobs
Section titled “Follow assembly and decoration jobs”decorate_video always answers within seconds with job_id (the same value as request_id) and status running; analysis, composition and rendering continue as a job. assemble_video can likewise return a request identifier while cloud processing continues. Follow the job with get_job; a finished decoration there carries artifact_id and a short-lived download_url. Use list_jobs to locate a job after reconnecting. Do not submit another operation just because the original response or connection was lost. If a decorate_video call is repeated with the same params while its job is running, it returns the same job_id with joined: true and reserves no money again; a call after the job has finished is a new, separately charged decoration. Montage remains $0, and decoration keeps its existing quote and saved-plan pricing.
For direct HTTP clients, POST /assemble and POST /gen/decorate/submit accept async: true. The initial response contains request_id, status and progress instead of requiring the connection to wait for a video. Poll GET /assemble/status?id=<request_id> or GET /gen/decorate/status?id=<request_id>. A running response supplies phase and progress; completion returns COMPLETED with the output and assembly facts or saved decoration plan. A plan-only decoration can complete with plan_only: true and a plan, without a video URL. Handle error as a terminal failure and inspect any retained plan.
Optional resume_key and resume_context carry client recovery metadata and are returned with saved status. They do not grant access or force fresh work; unchanged in-progress work joins its existing job. Keep the returned request identifier. The Studio uses its own recovery metadata to apply a result to the matching node inputs. See the application API reference for the route contract and run recovery before retrying an uncertain operation.
Keep operation boundaries clear
Section titled “Keep operation boundaries clear”assemble_video joins supplied clips; it does not enable run_node for Montage. The retained edit_video server trim operation does not represent the full browser Clip trim editor. The current browser Decoration workflow and the lower-level decorate_video route are also distinct.
The retained write_script and direct_scene operations do not make the legacy Scriptwriter and Director nodes recommended starting points. Use current nodes for new graphs.
Last checked: 21 October 2026. Model generation may charge; these job contracts do not promise a queue time or demonstrate media quality.
