Skip to main content
POST
/
openapi
/
v1
/
task
/
media-translation
/
create-async
Create media translation (async)
curl --request POST \
  --url https://api.vmeg.ai/openapi/v1/task/media-translation/create-async \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'X-Idempotency-Key: <x-idempotency-key>' \
  --data '
{
  "source": {
    "materialId": "<string>"
  },
  "language": {
    "target": "zh-CN",
    "source": "auto"
  },
  "options": {
    "voiceClone": {
      "style": "emotional",
      "mode": "role"
    },
    "transcribe": {
      "mode": "fast",
      "type": "default"
    },
    "translate": {
      "mode": "default",
      "prompt": "<string>"
    },
    "separation": {
      "mode": "auto"
    },
    "dynamicVideoLength": {
      "enable": true
    },
    "lipsync": {
      "enable": false
    },
    "text": {},
    "voiceSpeakers": {
      "selectedVoicesList": [
        {
          "provider": "Microsoft",
          "voiceId": "<string>"
        }
      ],
      "speakerNum": "auto",
      "timbreMethod": "clone"
    }
  },
  "extraData": {}
}
'
{
  "code": 200,
  "message": "",
  "data": {
    "taskId": "<string>",
    "taskType": "vt",
    "status": "running",
    "createdAt": "<string>"
  }
}

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.

Authorizations

Authorization
string
header
required

Send your API Key in the Authorization header (Bearer <api_key>). See Authentication.

Headers

X-Idempotency-Key
string
required

Required on mutating POST requests that create tasks or change persisted data (max 64 characters). See Idempotency.

Maximum string length: 64

Body

application/json
taskType
enum<string>
required

vt = video translation, at = audio translation. If at is used with a video material, the job may run as video translation

Available options:
vt,
at
source
object
required

Input material for this translation job

language
object
required

Source and target locales for localization

options
object
required

Pipeline options: dubbing, ASR, translation, separation, lip sync, and captions

extraData
object

Optional client metadata on async submit; echoed in the completion webhook (extraData in callback body). Not used on sync create endpoints.

Callbacks

POST
https://{yourWebhookUrl}taskCompleted

Body

application/json

Webhook callback request body for Media translation when event is openapi-media-translation. data.result with CDN deliverables. See Webhook request body and Create media translation (async)Callbacks.

data
object
required

Task payload inside webhook data when event is openapi-media-translation. data.result with CDN deliverables.

code
integer

Business outcome for this delivery

Example:

200

version
string

API version of the task (e.g. v1, v2). Matches the version in the request path (/openapi/v1/...).

Example:

"v1"

event
enum<string>

Which product completed. Route your handler by this value: openapi-tts (TTS), openapi-translate (text translation), openapi-clone-voice (voice clone), openapi-media-translation (media translation). Listed in Webhook request body.

Available options:
openapi-tts,
openapi-translate,
openapi-clone-voice,
openapi-media-translation
Example:

"openapi-tts"

pipelineKey
string

Stable ID for this async completion. Deduplicate webhook handling by this value — see Webhook request body.

Example:

"a1b2c3d4e5f6789012345678901234ab"

message
string

Detail when code is not success

extraData
object

Echo of extraData from your async submit request

Response

200

Return 2xx promptly to stop retries

Response

200 - application/json

Acceptance only (taskId, taskType, status, createdAt). Final results are in the Webhook callback request body.

code
integer
required

Business code; 200 means success

Example:

200

message
string

Human-readable detail when code is not success

Example:

""

data
object

Immediate response for media translation async create (no deliverables)