Skip to content
RPT AI Video Studio

Use cases

Translate a finished video

Make a new language version of a finished video with translated narration, subtitles and a new voice.

Goal

Make a new language version of a finished video: translated narration and subtitles with a new voice, over the same pictures.

Before you start

  • A finished video in the workspace (a run in state READY).
  • A translation of every narrated shot. Silent shots stay silent.

MCP calls, in order

Values in angle brackets are placeholders. Every write gets its own new request_key (a UUIDv4); reuse a key only to retry the identical call.

  1. get_production_state

    Find the finished run (READY) of the video to translate.

    Arguments for get_production_state
    {
      "project_id": "<project_id of the finished video>"
    }
  2. get_run_script

    Read that run’s script: each shot’s narration and subtitle, and the content_hash.

    Arguments for get_run_script
    {
      "project_id": "<project_id of the finished video>",
      "run_id": "<READY run_id>"
    }
  3. list_voices

    Pick a voice for the new language.

    Arguments for list_voices
    {
      "language": "en"
    }
  4. create_locale

    Create the new language version as a new project, with one translated narration and subtitle per shot. The original video does not change.

    Arguments for create_locale
    {
      "project_id": "<project_id of the finished video>",
      "parent_run_id": "<READY run_id>",
      "expected_content_hash": "<content_hash from get_run_script>",
      "name": "<video name> (English)",
      "language": "en",
      "voice": "<voice id>",
      "shots": [
        {
          "shot": 1,
          "narration": "<translated narration>",
          "subtitle": "<translated subtitle>"
        }
      ],
      "request_key": "<new UUIDv4>"
    }
  5. agent_preflight

    On the new project: check for blockers and read the create_quote arguments in next_calls.

    Arguments for agent_preflight
    {
      "project_id": "<project_id of the new language version>"
    }
  6. create_quote

    Quote the new version. Stop and show the person the total.

    Arguments for create_quote
    {
      "project_id": "<project_id of the new language version>",
      "composition_id": "<composition_id from next_calls>",
      "candidates": 1,
      "request_key": "<new UUIDv4>"
    }
  7. approve_productionOnly after the person says yes

    Only after the person agrees.

    Arguments for approve_production
    {
      "project_id": "<project_id of the new language version>",
      "quote_id": "<quote_id>",
      "expected_content_hash": "<content_hash from the quote>",
      "request_key": "<new UUIDv4>"
    }
  8. get_run_progress

    Poll until the new run is READY.

    Arguments for get_run_progress
    {
      "project_id": "<project_id of the new language version>",
      "run_id": "<run_id from approve_production>"
    }
  9. prepare_delivery

    Prepare the delivery package of the new version.

    Arguments for prepare_delivery
    {
      "project_id": "<project_id of the new language version>",
      "run_id": "<run_id from approve_production>",
      "request_key": "<new UUIDv4>"
    }
  10. issue_deliveryOnly after the person says yes

    Only after the person has checked the translated video.

    Arguments for issue_delivery
    {
      "project_id": "<project_id of the new language version>",
      "run_id": "<run_id from approve_production>",
      "confirmed": true,
      "request_key": "<new UUIDv4>"
    }

What the person approves

  • The translation, shown by the agent before create_locale.
  • The quote, before approve_production.
  • The translated video, before issue_delivery.

Expected output

  • A new project with the translated video: new narration, new subtitles, the same pictures.
  • Ten target languages: Vietnamese, English, Japanese, Korean, Chinese, French, German, Spanish, Thai and Indonesian.

Good to know

  • Videos where someone speaks on camera are not supported yet. The server stops with an error, and the agent asks the person what to do.
  • Each narrated shot needs exactly one translation and one subtitle, or the server names the missing shot.