> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vmeg.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 翻译转写稿

> 把已完成转写任务的整篇转写稿翻译成 `targetLanguage`，与网站转写编辑器里的**翻译**按钮是同一套翻译。混合语言录音也适用：创建任务时传多个 `language.source`，再把整段对话翻译成英文。

翻译异步进行。轮询[查询任务状态](/zh/api-reference/app-synced/tasks/get-task-detail)：`result.translation.status` 从 `running` 变为 `finished` 后，用[下载转写稿](/zh/api-reference/app-synced/transcription/get-transcription-srt)加 `content=translation` 下载译文。原文转写稿不变，仍可用 `content=source` 下载。

- 与网站一致，**每个任务只有一种目标语言**。任务已有译文时再请求其他语言返回 `409`；请求同一语言会重新翻译整篇并覆盖之前的译文（包括在网站上的修改）。
- 与网站相同的积分余额检查，余额不足返回 `402`。
- 须 [`X-Idempotency-Key`](/zh/guides/idempotency)。

出错时返回 JSON 结构，HTTP 状态为 200，错误码在 body 的 `code` 中：`400` 参数不合法；`402` 积分不足；`404` 不是你账号下的转写任务；`409` 任务未完成、已有翻译在进行中、任务已有其他目标语言的译文，或转写稿正在被更新（稍后重试）。



## OpenAPI

````yaml /zh/api-reference/app-synced.json post /openapi/v1/app/tasks/transcription/translate
openapi: 3.1.0
info:
  title: VMEG 开放 API（应用同源版）
  description: >-
    与独立版协议一致，但任务、素材、克隆音色都在你的 VMEG
    网站账号里：任务出现在**我的任务**，可在编辑器继续编辑并重新导出。支持媒体翻译、转写和声音克隆。结果通过 Webhook（只推首次结果，event
    为 `openapi-app-media-translation`）或轮询 `GET /openapi/v1/app/tasks/detail`
    获取。见[独立版与应用同源版](/zh/guides/choose-api)。


    文中链接的指南按独立版编写，步骤相同，把路径前缀 `/openapi/v1` 换成 `/openapi/v1/app` 即可。
  version: 1.0.0
servers:
  - url: https://api.vmeg.ai
    description: 生产环境
security:
  - apiKeyAuth: []
tags:
  - name: 媒体翻译
    x-group: 视频与音频翻译配音
    description: >-
      在与 vmeg.ai 相同的链路上翻译配音已上传的视频/音频或 YouTube
      链接。首轮即产出配音成片，任务同时出现在**我的任务**，可继续编辑并重新导出。结果通过
      Webhook（只推首次结果）或轮询[查询任务状态](/zh/api-reference/app-synced/tasks/get-task-detail)获取。
  - name: 转写
    description: >-
      在与 vmeg.ai 相同的链路上转写已上传的视频/音频或 YouTube
      链接。任务出现在**我的任务**，可在转写编辑器中打开。完成后可下载最新的转写稿（包含你在网站上的修改），格式为 SRT 或 JSON。
  - name: 声音克隆
    x-group: 声音克隆
    description: 用一段短录音克隆音色。音色保存到网站**我的音色**，返回 `cv_*`，可用于翻译配音任务。
  - name: 任务管理
    x-group: 任务状态与历史
    description: 列出、查看或删除你 VMEG 账号下的视频/音频翻译和转写任务，包括在网站创建的任务。
  - name: 资产 - 素材
    x-group: 上传文件（素材）
    description: 上传并管理网站素材库（**我的资产**）里的文件。完成上传（单文件或分片）后，把 `materialId` 传给 create-async。
  - name: 资产 - 音色
    x-group: 音色（预设与克隆）
    description: 列出系统预设音色（`sv_*`），管理你的克隆音色（`cv_*`，与网站**我的音色**相同）。
paths:
  /openapi/v1/app/tasks/transcription/translate:
    post:
      tags:
        - 转写
      summary: 翻译转写稿
      description: >-
        把已完成转写任务的整篇转写稿翻译成
        `targetLanguage`，与网站转写编辑器里的**翻译**按钮是同一套翻译。混合语言录音也适用：创建任务时传多个
        `language.source`，再把整段对话翻译成英文。


        翻译异步进行。轮询[查询任务状态](/zh/api-reference/app-synced/tasks/get-task-detail)：`result.translation.status`
        从 `running` 变为 `finished`
        后，用[下载转写稿](/zh/api-reference/app-synced/transcription/get-transcription-srt)加
        `content=translation` 下载译文。原文转写稿不变，仍可用 `content=source` 下载。


        - 与网站一致，**每个任务只有一种目标语言**。任务已有译文时再请求其他语言返回
        `409`；请求同一语言会重新翻译整篇并覆盖之前的译文（包括在网站上的修改）。

        - 与网站相同的积分余额检查，余额不足返回 `402`。

        - 须 [`X-Idempotency-Key`](/zh/guides/idempotency)。


        出错时返回 JSON 结构，HTTP 状态为 200，错误码在 body 的 `code` 中：`400` 参数不合法；`402`
        积分不足；`404` 不是你账号下的转写任务；`409`
        任务未完成、已有翻译在进行中、任务已有其他目标语言的译文，或转写稿正在被更新（稍后重试）。
      operationId: appTranscriptionTranslate
      parameters:
        - $ref: '#/components/parameters/IdempotencyKeyRequired'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppTranscriptionTranslateRequest'
      responses:
        '200':
          description: 翻译已受理，`translation.status` 为 `running`。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppTranscriptionTranslateResponse'
components:
  parameters:
    IdempotencyKeyRequired:
      name: X-Idempotency-Key
      in: header
      required: true
      description: 创建任务或修改持久化数据的 `POST` 必填（最长 64 字符）。见 [幂等](/zh/guides/idempotency)。
      schema:
        type: string
        maxLength: 64
  schemas:
    AppTranscriptionTranslateRequest:
      type: object
      required:
        - taskId
        - targetLanguage
      properties:
        taskId:
          type: string
          description: 已完成的转写任务 ID
        targetLanguage:
          type: string
          description: >-
            目标语言代码，如 `en-US`。只能传一个语言，`auto` 或逗号分隔的列表返回
            `400`。见[支持的语言](/zh/guides/supported-languages)。
          example: en-US
      example:
        taskId: '2047316590123456789'
        targetLanguage: en-US
    AppTranscriptionTranslateResponse:
      allOf:
        - $ref: '#/components/schemas/OpenApiResponseBase'
        - type: object
          properties:
            data:
              type: object
              properties:
                taskId:
                  type: string
                  description: 任务 ID（与网站任务 ID 相同）
                translation:
                  allOf:
                    - $ref: '#/components/schemas/AppTranscriptionTranslation'
                  example:
                    status: running
                    targetLanguage: en-US
    OpenApiResponseBase:
      type: object
      properties:
        code:
          type: integer
          example: 200
          description: 业务码；200 表示成功
        message:
          type: string
          example: ''
          description: 当 `code` 非成功时的说明信息
      required:
        - code
    AppTranscriptionTranslation:
      type: object
      description: >-
        仅转写任务在 `status` 为 `finished` 时返回。`status`：`none` 未翻译 | `running` 翻译中 |
        `finished` 已完成，用 `content=translation` 下载 | 翻译失败时状态回到之前的值（`none`，或带旧译文的
        `finished`），可重新发起。`status` 为 `none` 时不返回 `targetLanguage`。
      properties:
        status:
          type: string
          enum:
            - none
            - running
            - finished
          example: finished
        targetLanguage:
          type: string
          example: en-US
  securitySchemes:
    apiKeyAuth:
      type: http
      scheme: bearer
      description: >-
        在 **`Authorization`** 请求头中传入 API Key（`Bearer <api_key>`）。见
        [鉴权](/zh/guides/authentication)。

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.