Skip to main content
Glama

create the edited dialogue video

dialogue-videos_create
Destructive

Render the final Edit Dialogue video by lip-syncing a saved single-speaker source video to an approved preview’s audio, creating a new generation for review and download.

Instructions

Render the final Edit Dialogue video: lip-sync the saved single-speaker source video to a finished, user-approved preview's audio, creating a new generation. Not for translation (dubbing_create), whole-script replacement or a different voice (lipsync_create with a script), or the audio preview itself (dialogue-previews_create). This is a paid action that starts a generation job and consumes sync. credits. First use dialogue-videos_estimate with the same source, preview and model, then obtain the user's approval of the preview, configuration and estimated cost. Despite the destructive hint it only adds a generation and never overwrites the source video. Returns the generation (id, status) right away, not a finished video; poll generations_get, or jobs_wait with kind generation when available,, then read outputMediaUrl when COMPLETED. Persist one idempotencyKey for the approved request; on an uncertain response, reuse that key with identical inputs instead of starting a second paid job. Use continuation only for an explicitly requested continuation of an edit_dialogue generation in this project. With projectId, projectIntent=explicit is required; default new work to a new project.

Input Schema

NameRequiredDescriptionDefault
modelYesLip-sync model returned by models_list, matching the approved estimate.
optionsNoOptional model controls. Omit any field to use its default.
projectIdYesProject for the new output, the one used for the preview. Keep unchanged on retries. Default new work to a new project: the id projects_create returned for this request (defaultWorkflow edit_dialogue). Use an existing project only when the user explicitly chose it, and then pass projectIntent=explicit.
continuationNoOnly for an explicitly requested continuation of an existing generation in this project. The workflow must be edit_dialogue.
videoAssetIdYesSaved VIDEO asset used for the approved dialogue preview, accessible to the connected account.
projectIntentNoRequired with projectId. Set only for an explicit user project selection/update, or the new project just created for this request. Never infer intent from a matching project name, workflow name or active editor.
dialogueEditIdYesCompleted Edit Dialogue audio preview ID for this source video and the current user-approved edits. Not a transcription or generation ID.
idempotencyKeyYesPersist one unique key per approved generation. Reuse the exact key and unchanged inputs when recovering an uncertain response; never automatically generate a replacement key.
organizationIdNoRun only this call in another of the user’s Sync organizations, by id from organizations_list, when the user asks for it (for example “generate this in the Acme org”). The session keeps its organization; reads of the ids this call returns stay in this organization. Omit to use the session’s organization.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.2.4
    • changedInput schema / properties / projectId / description
      Previous value: -"Accessible Sync project for the new output. Keep unchanged on retries."New value: +"Project for the new output, the one used for the preview. Keep unchanged on retries. Default new work to a new project: the id projects_create returned for this request (defaultWorkflow edit_dialogue). Use an existing project only when the user explicitly chose it, and then pass projectIntent=explicit."
  2. Changed9 schema fields changed
    • addedInput schema / properties / continuation / properties / parentGenerationId / description
      Added value: +"Id of the existing generation this continues."
    • addedInput schema / properties / continuation / properties / workflow / description
      Added value: +"The parent generation's workflow, from generations_get-continuation."
    • addedInput schema / properties / options / description
      Added value: +"Optional model controls. Omit any field to use its default."
    • changedInput schema / properties / options / properties / active_speaker_detection / anyOf
      Previous value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "auto_detect": {
      -        "type": "boolean"
      -      },
      -      "coordinates": {
      -        "items": false,
      -        "maxItems": 2,
      -        "minItems": 2,
      -        "prefixItems": [
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "number"
      -          }
      -        ],
      -        "type": "array"
      -      },
      -      "face_image": {
      -        "type": "string"
      -      },
      -      "frame_number": {
      -        "maximum": 9007199254740991,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "use_v2": {
      -        "type": "boolean"
      -      },
      -      "v3": {
      -        "type": "boolean"
      -      }
      -    },
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "auto_detect": {
      +        "description": "Find the person speaking automatically.",
      +        "type": "boolean"
      +      },
      +      "coordinates": {
      +        "description": "[x, y] pixel position of the speaker's face on frame_number.",
      +        "items": false,
      +        "maxItems": 2,
      +        "minItems": 2,
      +        "prefixItems": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "number"
      +          }
      +        ],
      +        "type": "array"
      +      },
      +      "face_image": {
      +        "description": "URL of a reference image of the speaker's face.",
      +        "type": "string"
      +      },
      +      "frame_number": {
      +        "description": "Zero-based video frame that coordinates refer to.",
      +        "maximum": 9007199254740991,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "use_v2": {
      +        "description": "Use the second-generation speaker detector.",
      +        "type": "boolean"
      +      },
      +      "v3": {
      +        "description": "Use the third-generation speaker detector.",
      +        "type": "boolean"
      +      }
      +    },
      +    "type": "object"
      +  }
      +]
    • addedInput schema / properties / options / properties / active_speaker_detection / description
      Added value: +"Which face to lipsync when several people are visible: true or { auto_detect: true } to find the speaker, or frame_number plus coordinates to pick one. Omit for a single face or an image."
    • addedInput schema / properties / options / properties / model_mode / description
      Added value: +"How much of the face the model may change: lips, face or head."
    • addedInput schema / properties / options / properties / occlusion_detection_enabled / description
      Added value: +"Keep hands, microphones and other objects that pass in front of the mouth in front of it. Slower."
    • addedInput schema / properties / options / properties / sync_mode / description
      Added value: +"How to fit audio and video of different lengths: bounce (play the video forward, then in reverse), loop, cut_off (stop at the shorter input), silence (pad with silence to the longer input) or remap (change the video speed to match the audio)."
    • addedInput schema / properties / options / properties / temperature / description
      Added value: +"How expressive the mouth movement is, from 0 to 1. Omit for the model default."
  3. Addedv0.1.5

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Strong beyond-annotation disclosure: it flags a paid action that consumes sync credits and starts an async generation job, and explicitly reconciles the destructiveHint=true by stating it only adds a generation and never overwrites the source video. It also explains the asynchronous return (generation id and status, not a video) with concrete polling paths (generations_get, jobs_wait, then outputMediaUrl when COMPLETED) and idempotency-key recovery behavior. Slightly marked down only because the polling guidance is worded loosely ("when available,,") and doesn't address retry/rate-limit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then exclusions, then cost/behavior, then prerequisites and retry rules – a sensible ordering for a paid async action. It is dense with zero filler sentences, but it runs long, and minor editing artifacts ("kind generation when available,,") slightly hurt readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter, nested-object, paid, asynchronous mutation, the description covers everything an agent needs: prerequisites, cost and approval gates, what the call returns versus what it does not, how to retrieve the finished asset, and how to safely retry. Return-value detail is legitimately light because an output schema exists, and no dangerous ambiguity remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already documented in detail (model matching the estimate, dialogueEditId must be a preview id not a transcription/generation id, idempotencyKey reuse, continuation.workflow must be edit_dialogue). The description restates rather than extends that: the only added nuance is the estimate-then-approve sequencing and reusing the key with identical inputs, both of which are largely workflow rather than parameter semantics. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Render the final Edit Dialogue video: lip-sync the saved single-speaker source video to a finished, user-approved preview's audio, creating a new generation" gives a precise verb-plus-resource plus the input/output identity of the operation. It then names the exact siblings it is not (dubbing_create, lipsync_create, dialogue-previews_create), so an agent can separate it from them without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-not-to-use list routes the agent to the right alternative for translation, whole-script replacement, alternate voices, and preview generation. It also prescribes the required pre-call sequence (dialogue-videos_estimate with identical source/preview/model, then explicit user approval of preview, config and cost), plus continuation and projectId/projectIntent rules. Nothing about selection is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.