---
title: "Start/Update a video translation"
method: PUT
path: "/v2/translations/{root_video_id}"
tags: ["Translations"]
---

# Start/Update a video translation

`PUT /v2/translations/{root_video_id}`

Kick off TranslateVideoWorkflow for each requested target language. Returns a unified `translations` list. Each entry includes a `startedByRequest` flag: `true` if the workflow was started by this request, `false` if it was already in progress.

## Path parameters

- `root_video_id` string, uuid, required

## Request body

- UpsertVideoTranslationsApiRequest
  - `targetLanguages` string[], required — List of language codes to translate the video into. See https://docs.synthesia.io/docs/supported-languages for accepted values.
  - `translateScriptOnly` boolean — If true, only the script is translated.

## Response `202`

Accepted – translation workflows started (or already running).

- UpsertVideoTranslationsSuccessApiResponse
  - `id` string, uuid, required — The ID of the studio video to translate.
  - `translations` UpsertVideoTranslationsRunningWorkflowApiItem[], required — List of translations that were created or updated.
    - `language` string, required
    - `status` 'in_progress'
    - `step` 'translation', required
    - `startedByRequest` boolean — Whether the translation was started by the request.

## Other responses

- `400` — Bad Request – validation failed (unsupported language, wrong video type, translations not available for this workspace plan, or incompatible options).
- `403` — Forbidden – wrong API key or user lacks edit permission for the video.
- `404` — Not Found – video not found or Translations API disabled.
- `default` — Unexpected server error.

---

[API](https://skmtc.net/synthesia/apis/synthesia-api.md) · [All operations](https://skmtc.net/synthesia/apis/synthesia-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/synthesia/synthesia-api/revisions/f0f34ae0591d/schema)
