Reusable Workflows and Video
Gavana separates saving a reusable workflow from running it. That makes a workflow safe to review and reuse before it asks a connected provider to generate anything.
Reusable canvas workflows
Create is not run
create_canvas_workflow saves a private workflow card on a selected canvas. It can declare typed text, sticky-note, or image inputs; its outputs describe text or image work. Creating it changes the canvas but never starts generation.
For a fixed visual reference, first use save_image_to_canvas, then use its returned image node as an input default. Later runs can supply only the inputs that change.
save_image_to_canvas (fixed reference)
→ create_canvas_workflow (inputs + outputs + optional fixed default)
→ review the workflow card on the canvasRun only with approval
run_canvas_workflow explicitly starts a saved workflow. It may use your connected image provider and can incur cost. Supply the exact returned workflowNodeId, a caller-stable idempotencyKey, and only the inputs you want to replace. Use get_canvas_workflow_run while its run: handle is queued or running.
run_canvas_workflow (exact workflowNodeId, changed inputs, idempotencyKey)
→ get_canvas_workflow_run (runId) until terminal
→ return the durable node/asset handles and review linkImage generation
generate_image_in_canvas creates a destination node and briefly waits for the connected image provider. It writes durable canvas work and may incur provider cost. Ask first; do not retry a failed paid request unless the user explicitly requests another attempt.
For precise non-AI transformations in the local MCP or CLI, use the deterministic Image Actions instead. Resize, crop, aspect-ratio change, composite, text overlay, overlay image, color grade, and rotate do not spend AI-generation credits. See the CLI reference and Canvas API reference for their exact schemas.
Video generation
Video is always an explicit, potentially paid action. Before generating, discover the exact connected model and capability; never make up a model: handle.
find_video_models (requested model/provider + required capability)
→ generate_video (exact returned model handle + prompt + idempotencyKey)
→ get_video_job (jobId) until terminalTo use a ChatGPT-made image as the first frame, save it to Gavana first and pass the returned node: handle as firstFrame. Use video.generate.fromImage when you need that capability. A last frame requires a first frame; references must be unique.
Agent checklist
- Inspect the destination canvas first and retain the returned handles.
- State whether the next action writes only, generates through a provider, or is a deterministic Image Action.
- Ask for current-turn confirmation before an image, workflow, or video run.
- Reuse an idempotency key only for the identical intended request.
- Poll only the matching run or job tool, then hand back durable output handles and a review link.
- Never expose OAuth tokens, Agent Access tokens, provider configuration, or scoped preview URLs.