VoiceStudioDocs
Cloud reference

Dubbing

GET
/v1/dubbing

Cursor-paged Dubbing Project listing. project_id is required: this surface has no ambient Organization context, so the listing is scoped and authorized through the owning Project. Scoped credentials require jobs:read and check that Project inside their stored Organization.

Authorization

DeveloperCredential
AuthorizationBearer <token>

In: header

Query Parameters

project_id*string
Length1 <= length <= 128
cursor?string
Lengthlength <= 512
limit?integer
Range1 <= value <= 100
Default25

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

bash
curl -X GET "https://example.com/v1/dubbing?project_id=string"
json
{
  "items": [
    {
      "id": "string",
      "project_id": "string",
      "source_artifact_id": "string",
      "source_language": "string",
      "target_languages": [
        "string"
      ],
      "tracks": [
        {
          "language": "string",
          "stages": [
            {
              "stage": "transcribe",
              "status": "pending",
              "job_id": "stringstringstri",
              "updated_at": "2019-08-24T14:15:22Z"
            }
          ]
        }
      ],
      "created_at": "2019-08-24T14:15:22Z",
      "updated_at": "2019-08-24T14:15:22Z"
    }
  ],
  "next_cursor": "string"
}
POST
/v1/dubbing

Creates a Dubbing Project over a ready source Artifact. The owning Project supplies the Organization; bearer callers prove Membership, while scoped credentials require jobs:write and artifacts:read and check that Project in their stored Organization. A Project the caller cannot use is masked as 404.

Authorization

DeveloperCredential
AuthorizationBearer <token>

In: header

Header Parameters

Idempotency-Key*string

Replay key bounded at 128 characters by the dubbing and lexicon surfaces. Reusing a key with a different request body is a 409 idempotency_conflict.

Length1 <= length <= 128

Request Body

application/json

project_id*string
Length1 <= length <= 128
source_artifact_id*string
Length1 <= length <= 128
source_language?string
Lengthlength <= 32
target_languages*array<>
Items1 <= items <= 24

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

bash
curl -X POST "https://example.com/v1/dubbing" \
  -H "Idempotency-Key: string" \
  -H "Content-Type: application/json" \
  -d '{
    "project_id": "string",
    "source_artifact_id": "string",
    "target_languages": [
      "string"
    ]
  }'
json
{
  "id": "string",
  "project_id": "string",
  "source_artifact_id": "string",
  "source_language": "string",
  "target_languages": [
    "string"
  ],
  "tracks": [
    {
      "language": "string",
      "stages": [
        {
          "stage": "transcribe",
          "status": "pending",
          "job_id": "stringstringstri",
          "updated_at": "2019-08-24T14:15:22Z"
        }
      ]
    }
  ],
  "created_at": "2019-08-24T14:15:22Z",
  "updated_at": "2019-08-24T14:15:22Z"
}
GET
/v1/dubbing/{dubbing_id}

Scoped credentials require jobs:read and exact Dubbing Project ownership.

Authorization

DeveloperCredential
AuthorizationBearer <token>

In: header

Path Parameters

dubbing_id*string
Match^[A-Za-z0-9_-]{16}$

Response Body

application/json

application/json

application/json

application/json

application/json

bash
curl -X GET "https://example.com/v1/dubbing/string"
json
{
  "id": "string",
  "project_id": "string",
  "source_artifact_id": "string",
  "source_language": "string",
  "target_languages": [
    "string"
  ],
  "tracks": [
    {
      "language": "string",
      "stages": [
        {
          "stage": "transcribe",
          "status": "pending",
          "job_id": "stringstringstri",
          "updated_at": "2019-08-24T14:15:22Z"
        }
      ]
    }
  ],
  "created_at": "2019-08-24T14:15:22Z",
  "updated_at": "2019-08-24T14:15:22Z"
}
DELETE
/v1/dubbing/{dubbing_id}

Deletes the Dubbing Project. The idempotency digest is bound to the target so the same key cannot be replayed against another project. Scoped credentials require jobs:write and exact object ownership.

Authorization

DeveloperCredential
AuthorizationBearer <token>

In: header

Path Parameters

dubbing_id*string
Match^[A-Za-z0-9_-]{16}$

Header Parameters

Idempotency-Key*string

Replay key bounded at 128 characters by the dubbing and lexicon surfaces. Reusing a key with a different request body is a 409 idempotency_conflict.

Length1 <= length <= 128

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

bash
curl -X DELETE "https://example.com/v1/dubbing/string" \
  -H "Idempotency-Key: string"
Empty
POST
/v1/dubbing/{dubbing_id}/stages/{stage}

Admits one pipeline stage for the named target languages, or for every track when languages is omitted. A stage cannot be admitted before its predecessor succeeds, which answers 409 stage_order. Synthesis accepts exactly one language and an immutable approved model; its atomic prepared-plan admission and private CUDA runtime capability are enabled. Transcription's dormant audio contract targets every track with no languages field and requires an immutable approved ASR model plus mode fast or accurate. Translation's dormant contract accepts exactly one language, an immutable approved model, and quality fast, cinematic, or autofit. Transcribe, translate, and mux answer 503 workflow_unavailable until their runtime gates pass. Scoped credentials require jobs:write and artifacts:read plus exact Dubbing Project ownership.

Authorization

DeveloperCredential
AuthorizationBearer <token>

In: header

Path Parameters

dubbing_id*string
Match^[A-Za-z0-9_-]{16}$
stage*string

Value in

  • "transcribe"
  • "translate"
  • "synthesize"
  • "mux"

Header Parameters

Idempotency-Key*string

Replay key bounded at 128 characters by the dubbing and lexicon surfaces. Reusing a key with a different request body is a 409 idempotency_conflict.

Length1 <= length <= 128

Request Body

application/json

An omitted or empty languages list admits the stage on every track of the project. Transcribe requires the list to be omitted or empty, one immutable approved ASR model, and an explicit mode. Translate and synthesize each require exactly one target language and one immutable approved model selection because each protected plan and Job belongs to one track. Translate also requires an explicit quality.

languages?array<>
Itemsitems <= 24
model?

Required for transcribe, translate, and synthesize; rejected for mux.

quality?string

Required only for translate; rejected for other stages.

Value in

  • "fast"
  • "cinematic"
  • "autofit"
mode?string

Required only for transcribe; rejected for other stages.

Value in

  • "fast"
  • "accurate"

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

bash
curl -X POST "https://example.com/v1/dubbing/string/stages/transcribe" \
  -H "Idempotency-Key: string" \
  -H "Content-Type: application/json" \
  -d '{}'
json
{
  "id": "string",
  "project_id": "string",
  "source_artifact_id": "string",
  "source_language": "string",
  "target_languages": [
    "string"
  ],
  "tracks": [
    {
      "language": "string",
      "stages": [
        {
          "stage": "transcribe",
          "status": "pending",
          "job_id": "stringstringstri",
          "updated_at": "2019-08-24T14:15:22Z"
        }
      ]
    }
  ],
  "created_at": "2019-08-24T14:15:22Z",
  "updated_at": "2019-08-24T14:15:22Z"
}
GET
/v1/dubbing/{dubbing_id}/segments

Cursor-paged source segments. Supplying lang additionally returns that track's translation, synthesis state, and reprocess flag per segment. Scoped credentials require jobs:read and artifacts:read and exact Dubbing Project ownership.

Authorization

DeveloperCredential
AuthorizationBearer <token>

In: header

Path Parameters

dubbing_id*string
Match^[A-Za-z0-9_-]{16}$

Query Parameters

lang?string
Lengthlength <= 32
cursor?string
Lengthlength <= 512
limit?integer
Range1 <= value <= 200
Default25

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

bash
curl -X GET "https://example.com/v1/dubbing/string/segments"
json
{
  "items": [
    {
      "id": "string",
      "index": 0,
      "start_ms": 0,
      "end_ms": 0,
      "speaker": "string",
      "source_text": "string",
      "translated_text": "string",
      "synthesis_state": "string",
      "needs_reprocess": true
    }
  ],
  "next_cursor": "string"
}
PATCH
/v1/dubbing/{dubbing_id}/segments

Bounded batch edit of source segments and their per-language translations. Only counts are returned, so the result is safe to store as audit metadata and as an idempotency replay record. Scoped credentials require jobs:write and exact Dubbing Project ownership.

Authorization

DeveloperCredential
AuthorizationBearer <token>

In: header

Path Parameters

dubbing_id*string
Match^[A-Za-z0-9_-]{16}$

Header Parameters

Idempotency-Key*string

Replay key bounded at 128 characters by the dubbing and lexicon surfaces. Reusing a key with a different request body is a 409 idempotency_conflict.

Length1 <= length <= 128

Request Body

application/json

segments*array<>
Items1 <= items <= 100

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

bash
curl -X PATCH "https://example.com/v1/dubbing/string/segments" \
  -H "Idempotency-Key: string" \
  -H "Content-Type: application/json" \
  -d '{
    "segments": [
      {
        "id": "string"
      }
    ]
  }'
json
{
  "edited_segments": 0,
  "marked_track_segments": 0
}