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

# change language

> The same speech in another language, in the same voices: every speech clip with words and a voice is translated and re-recorded, a person on camera is dubbed (the translated take under the picture, its own sound off, lips unchanged), text clips, a graphic's text controls and chapter and note markers are translated with the workspace's brand kit words held as written, and captions are re-cut from the new audio. Words inside a picture and a graphic with no text control stay; the job's result counts what was translated and names what was left. Saved as a new timeline named "<name> · <Language>" unless as_new_timeline is false. A speaker with words but no voice (an uploaded recording) gets one built from their recording when consent is true; without it those speakers stay as they are and are named in the plan. One price for the whole dub, on the speech length, refunded if the job fails. Words come first: transcribe_media with timeline_id. Music ducks are not re-timed to the new speech; duck_music runs on the new timeline. Returns a job; get_jobs carries timeline_id when the new timeline is ready. Subtitles alone are captions translate. Credits.



## OpenAPI

````yaml /openapi.json post /tools/change_language
openapi: 3.1.0
info:
  title: Eversince API
  version: '1'
  description: >-
    Every Eversince tool as one POST call, plus the routes beside them: the tool
    list, account and keys, uploads, webhooks and models. The prose is at
    https://docs.eversince.ai.
servers:
  - url: https://eversince.ai/api/v1
security:
  - bearer: []
tags:
  - name: Discovery
    description: The tool list, the same on the MCP server, the REST API and the CLI.
  - name: Workspace
    description: Jobs, balances, settings, templates, skills and the overview.
  - name: Library
    description: >-
      Items, search, import, reading media, comments, boards, calendars, the
      brand kit and public links.
  - name: Timeline
    description: 'Video editing: timelines, clips, captions, sound, language and rendering.'
  - name: Canvas
    description: 'Still editing: canvases, slides, layers and rendering.'
  - name: Generation
    description: Image, video and audio generation, upscaling, cutouts and models.
  - name: Research
    description: 'What platforms publish: pulling and keeping posts.'
  - name: Account
    description: Balances, keys, workspaces and script sessions.
  - name: Uploads
    description: Files into the library by presigned upload or by URL.
  - name: Webhooks
    description: Job results posted to a URL as they complete.
  - name: Models
    description: Generation models and cost estimates.
paths:
  /tools/change_language:
    post:
      tags:
        - Timeline
      summary: change language
      description: >-
        The same speech in another language, in the same voices: every speech
        clip with words and a voice is translated and re-recorded, a person on
        camera is dubbed (the translated take under the picture, its own sound
        off, lips unchanged), text clips, a graphic's text controls and chapter
        and note markers are translated with the workspace's brand kit words
        held as written, and captions are re-cut from the new audio. Words
        inside a picture and a graphic with no text control stay; the job's
        result counts what was translated and names what was left. Saved as a
        new timeline named "<name> · <Language>" unless as_new_timeline is
        false. A speaker with words but no voice (an uploaded recording) gets
        one built from their recording when consent is true; without it those
        speakers stay as they are and are named in the plan. One price for the
        whole dub, on the speech length, refunded if the job fails. Words come
        first: transcribe_media with timeline_id. Music ducks are not re-timed
        to the new speech; duck_music runs on the new timeline. Returns a job;
        get_jobs carries timeline_id when the new timeline is ready. Subtitles
        alone are captions translate. Credits.
      operationId: change_language
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
        - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                timeline_id:
                  type: string
                  description: The timeline id.
                target_language:
                  type: string
                  enum:
                    - en
                    - es
                    - fr
                    - de
                    - it
                    - pt
                    - ja
                    - ko
                    - zh
                    - ar
                    - hi
                    - ru
                    - nl
                    - pl
                    - sv
                    - da
                    - fi
                    - 'no'
                    - cs
                    - sk
                    - hu
                    - ro
                    - bg
                    - hr
                    - uk
                    - el
                    - tr
                    - th
                    - vi
                    - id
                    - ms
                    - fil
                    - ta
                    - te
                    - ml
                    - kn
                    - bn
                    - gu
                    - mr
                    - pa
                    - he
                    - fa
                    - ur
                    - sw
                    - ha
                    - af
                    - ga
                    - cy
                    - is
                    - ca
                    - gl
                    - sl
                    - et
                    - lv
                    - lt
                    - sr
                    - bs
                    - mk
                    - ka
                    - hy
                    - az
                    - kk
                    - ne
                  description: >-
                    The language to speak. The values here are the whole
                    supported set.
                as_new_timeline:
                  description: >-
                    Default true: a forked copy named "<name> · <Language>".
                    False writes over this timeline.
                  type: boolean
                idempotency_key:
                  type: string
                  minLength: 1
                  maxLength: 200
                  description: >-
                    A key you mint per dispatch (a UUID). The same key on a
                    retry returns the job already dispatched instead of charging
                    again; a new attempt takes a new key.
                consent:
                  description: >-
                    True confirms, on the user's behalf: "I have the right to
                    clone this voice: it is my own, or the person speaking has
                    agreed to it being recreated and used in this project."
                    Speakers with no voice then get one built from their
                    recording. Omitted, they are left as they are.
                  type: boolean
                context:
                  description: 'Optional: one sentence shown to the user beside this action.'
                  type: string
                  maxLength: 600
              required:
                - timeline_id
                - target_language
                - idempotency_key
      responses:
        '200':
          description: >-
            Done, or a job started for work that runs longer (follow it with
            get_jobs).
          content:
            application/json:
              schema:
                type: object
                required:
                  - ok
                  - data
                  - meta
                properties:
                  ok:
                    const: true
                  data:
                    type: object
                    additionalProperties: true
                  meta:
                    type: object
                    properties:
                      request_id:
                        type: string
                      cost:
                        $ref: '#/components/schemas/Cost'
                      cloud_processing:
                        $ref: '#/components/schemas/CloudProcessing'
                  media:
                    type: array
                    items:
                      type: object
                      additionalProperties: true
        default:
          $ref: '#/components/responses/Error'
components:
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: false
      schema:
        type: string
      description: >-
        Retry a paid dispatch safely: the same key returns the job already
        dispatched instead of charging again.
    WorkspaceId:
      name: x-workspace-id
      in: header
      required: false
      schema:
        type: string
      description: The workspace this one call acts in, when it is not the key's own.
  schemas:
    Cost:
      type: object
      description: AI credits the call cost.
      additionalProperties: true
    CloudProcessing:
      type: object
      description: Cloud processing the call used, and what is left.
      properties:
        ran_on:
          const: cloud
        minutes:
          type: number
        queued_minutes:
          type: number
        left_minutes:
          type: number
        bought_minutes:
          type: number
        note:
          type: string
    Error:
      type: object
      required:
        - ok
        - error
      properties:
        ok:
          const: false
        error:
          type: object
          required:
            - code
            - message
            - retryable
          properties:
            code:
              type: string
            message:
              type: string
              description: What went wrong, in words to act on.
            retryable:
              type: boolean
            suggested_action:
              type: string
              description: The next step that works.
            cloud_processing:
              $ref: '#/components/schemas/CloudProcessing'
  responses:
    Error:
      description: The call was refused or failed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: >-
        An API key (es_live_…) from Settings, under API keys, or an OAuth access
        token.

````