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

# Create Video Translation

> Translate videos into multiple languages with AI voices and lip-sync

Create a video translation job to translate your video content into one or multiple target languages. The API supports automatic source language detection, automatic voice selection, lip-sync, and various caption options.

> [!NOTE]
>
> The `merge_interval` and `face_enhance` parameters have been deprecated and are no longer supported.

## Voice Selection

The API selects the voice type separately for each target language:

* **Original voice clone (`voice_type: 0`)**: Used when the target language exactly matches one of the following codes: `en`, `fr`, `zh`, `ar`, `bg`, `hr`, `cs`, `da`, `nl`, `fil`, `fi`, `de`, `el`, `hi`, `hu`, `id`, `it`, `ja`, `ko`, `ms`, `nb`, `pl`, `pt`, `ro`, `ru`, `sk`, `es`, `sv`, `ta`, `tr`, `uk`, `vi`.
* **AI voice (`voice_type: 2`)**: Used for target language codes outside this list.

Matching uses the exact language code. For example, `zh` selects original voice cloning, while `zh-CN` selects AI voice. For comma-separated targets, use language codes without surrounding spaces.

You can provide optional voice settings in `voices_map`, keyed by target language. The server overrides any supplied `voice_type` according to the rules above and passes the resulting settings to the translation service. This endpoint does not read an `ai_voice` request parameter. A `voice_id` is not required by the current OpenAPI request validation.

## Video Duration

`/api/open/v3/content/video/createbytranslate` does not enforce a 60-second duration limit in the current OpenAPI validation. Shorter videos may reduce processing time; keeping videos under 60 seconds is a recommendation, not a request requirement. Downstream processing constraints may still apply.

The separate legacy endpoint `/api/open/v3/content/video/translate` rejects videos longer than 60 seconds. This restriction does not apply to the Create Video Translation endpoint documented here.


## OpenAPI

````yaml POST /api/open/v3/content/video/createbytranslate
openapi: 3.0.3
info:
  title: Video Translation API
  description: >-
    API for translating videos into multiple languages with AI voices and
    lip-sync
  version: 1.0.0
servers:
  - url: https://openapi.akool.com
    description: Production server
security:
  - ApiKeyAuth: []
  - BearerAuth: []
paths:
  /api/open/v3/content/video/createbytranslate:
    post:
      tags:
        - Video Translation
      summary: Create Video Translation
      description: >
        Translate videos into multiple languages with automatic voice selection
        and lip-sync.

        The server sets voice_type to 0 for target language codes in the
        original voice clone list and to 2 for other target languages,
        overriding any supplied voice_type.

        This endpoint does not read an ai_voice request parameter.

        Current OpenAPI validation does not enforce a 60-second duration limit.
        Shorter videos are recommended for faster processing; downstream
        processing constraints may still apply.

        The separate legacy /api/open/v3/content/video/translate endpoint
        rejects videos longer than 60 seconds.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VideoTranslationRequest'
            example:
              url: >-
                https://d11fbe263bhqij.cloudfront.net/agicontent/video/translate/cut3_content_create_EN_01.mp4
              language: ja,zh-CN-shandong,zh-CN-sichuan
              source_language: en
              lipsync: false
              speaker_num: 1
              webhookUrl: ''
              remove_bgm: true
              caption_type: 2
              caption_url: >-
                https://drz0f01yeq1cx.cloudfront.net/1759979948074-b14aeb874a4547ca81373d140edd02d2-1758273867083fa8fa1ca7cfe409ab7fb07abdb931660translatedsubtitles.srt
              studio_voice:
                no_translate_words:
                  - kaka
                  - lal
                fixed_words:
                  hi: hello
                  bad: good
                pronounced_words:
                  lel: lele
                  gga: gaga
                style: professional
              dynamic_duration: false
      responses:
        '200':
          description: Video translation request submitted successfully
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/VideoTranslationResult'
components:
  schemas:
    VideoTranslationRequest:
      type: object
      required:
        - url
        - language
      properties:
        url:
          type: string
          description: >-
            The video URL address you want to translate. Current OpenAPI
            validation does not enforce a 60-second duration limit; shorter
            videos are recommended for faster processing.
        source_language:
          type: string
          default: DEFAULT
          description: >-
            The original language of the video. Use "DEFAULT" for automatic
            language detection, or specify a language code (e.g., "en" for
            English, "zh" for Chinese, "es" for Spanish)
        language:
          type: string
          description: >
            Target language(s) for translation. For multiple languages, separate
            with commas without surrounding spaces (e.g.,
            "ja,zh-CN-shandong,zh-CN-sichuan").

            Exact matches to en, fr, zh, ar, bg, hr, cs, da, nl, fil, fi, de,
            el, hi, hu, id, it, ja, ko, ms, nb, pl, pt, ro, ru, sk, es, sv, ta,
            tr, uk, vi use original voice cloning (voice_type 0). Other target
            codes use AI voice (voice_type 2).

            For example, zh uses voice_type 0, while zh-CN uses voice_type 2.
        lipsync:
          type: boolean
          default: false
          description: >-
            Enable synchronized mouth movements with the audio track in
            translated video
        webhookUrl:
          type: string
          description: >-
            Callback URL address for HTTP notifications when processing
            completes
        speaker_num:
          type: integer
          default: 0
          description: Number of speakers in the video (0 = Auto Detect)
        remove_bgm:
          type: boolean
          default: false
          description: Whether to remove background music from the video
        caption_type:
          type: integer
          default: 0
          enum:
            - 0
            - 1
            - 2
            - 3
            - 4
          description: >-
            Caption handling: 0=none, 1=add original subtitle, 2=add target
            subtitle, 3=translate and replace original subtitle, 4=add
            translated subtitle
        caption_url:
          type: string
          description: Subtitle file URL (supports SRT or ASS files)
        voices_map:
          type: object
          description: >-
            Optional voice settings keyed by exact target language code. The
            server sets the language and overrides voice_type for each target
            according to the language selection rules. The current OpenAPI
            validation does not require voice_id.
          additionalProperties:
            type: object
            properties:
              voice_id:
                type: string
                description: Optional voice identifier passed to the translation service.
              voice_type:
                type: integer
                description: >-
                  Overridden by the server with 0 (original voice clone) or 2
                  (AI voice), based on the target language code.
        studio_voice:
          type: object
          description: Advanced voice and translation settings
          properties:
            no_translate_words:
              type: array
              items:
                type: string
              description: List of words that should not be translated
            style:
              type: string
              default: professional
              enum:
                - affectionate
                - angry
                - calm
                - cheerful
                - depressed
                - disgruntled
                - embarrassed
                - empathetic
                - excited
                - fearful
                - friendly
                - unfriendly
                - sad
                - serious
                - relaxed
                - professional
              description: Translation style
            fixed_words:
              type: object
              additionalProperties:
                type: string
              description: Translation word mapping table for corrections
            pronounced_words:
              type: object
              additionalProperties:
                type: string
              description: Pronunciation correction word mapping table
        dynamic_duration:
          type: boolean
          default: false
          description: Control the dynamic duration of the video
    ApiResponse:
      type: object
      properties:
        code:
          type: integer
          description: Business status code (1000 = success)
        msg:
          type: string
          description: Status message
    VideoTranslationResult:
      type: object
      properties:
        _id:
          type: string
          description: Unique task identifier
        video_status:
          type: integer
          description: >-
            Video processing status: 1=queueing, 2=processing, 3=completed,
            4=failed
        video:
          type: string
          description: Generated video URL (available when status = 3)
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
    BearerAuth:
      type: http
      scheme: bearer

````

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