This API re-dubs your media in the target language. It is not plain text translation and does not return only subtitles — you get new dubbed video or audio files.
Task types
If you request
at but the material is video, the server may run video translation (vt) instead. Check taskType in the acceptance response and webhook.
Workflow
1
Upload material
Finish the full material upload flow (including complete / instant upload), then use the registered
materialId2
Configure webhook
Set your webhook URL on API Configuration and copy the generated secret for verification
3
Submit task
POST /openapi/v1/task/media-translation/create-async with X-Idempotency-Key4
Receive results
Webhook request body when
event is openapi-media-translationRequest outline
Required fields includetaskType, source.materialId, language (source/target locales), and options (dubbing, ASR, translation, etc.).
source.materialId must come from a fully completed material upload (or from list materials after a successful upload). Do not use a materialId from an in-progress gen-upload-url / multipart initiate response.
Use Supported languages for locale codes. For the full options tree, see the request body in Create media translation (async).
Responses
- HTTP Response (immediate): acceptance —
taskId,status,createdAt, effectivetaskType - Webhook (on completion): deliverables in
data.result(CDN URLs)
create-async HTTP response.
Voice fields in webhook results
Translated script lines and per-line TTS results may includevoiceId and provider. Copy both exactly as returned — do not build or guess values.
If you let users edit translated text and resubmit lines, store and resend
voiceId and provider together. See Voices.
Task management
PollGET /openapi/v1/tasks/detail as a fallback. See Products overview.
