Murf Dub Automation API

Automate high-quality dubbing with realistic, multi-language support in bulk. Scale dubbing for apps, games, and videos in minutes. Integrate the API in your workflow seamlessly—globalizing your content faster than ever.


Dub fast in bulk

Upload and dub thousands of videos with rapid turnaround

Automate dubbing workflows

Streamline your dubbing process with automation, saving time and ensuring consistency across projects.

Enterprise grade security

Strict data handling policies, option for ephemeral storage and controlled retention periods

Overview

The Murf Dub Automation API can be used in two ways, depending on your needs:

  • Transient (Temporary & Lightweight): Generate dubs instantly with temporary storage—output links expire in 72 hours, ensuring secure, API-only processing without storing data on the Murf platform.
  • Persistent (Project-Based & Editable): Create and manage dubs via API or the Murf Dubbing platform UI, enabling editing, re-synthesis, QA checks, collaboration, refinements, and re-downloads if needed.

Quickstart

Use the following code snippets to get started with the Murf Dub Automation API. Creating a job creates a transient dub, while creating a job with a project allows you to create persistent dubs.

To automate dubbing of your files and keep the process API-based only, Create a job is recommended. These dubs expire after 72 hours and cannot be edited through UI.

1

Getting Started

Generate an API key here

API Key for Murf Dub Automation API is different from the one used for other Murf services (like TTS). Make sure to use the key generated from the MurfDub platform.

2

Create a Job

1# pip install murf
2from murf import MurfDub
3
4client = MurfDub(
5 api_key="YOUR_API_KEY", # Not required if you have set the environment variable MURFDUB_API_KEY
6)
7
8file_path = "PATH_TO_YOUR_FILE" # Path to the file you want to dub
9
10create_response = client.dubbing.jobs.create(
11 target_locales=["fr_FR"], # Specify the languages you want to dub in
12 file_name="File Name", # Name of the file for your reference
13 file=open(file_path, "rb"),
14 priority="LOW"
15 # file_url="URL_TO_YOUR_FILE", # Optional: Use `file_url` instead of `file` if you want to dub a publicly accessible file
16 # webhook_url="WEBHOOK_URL", # Optional: URL to receive webhook notifications on job status changes
17 # webhook_secret="YOUR_WEBHOOK_SECRET", # Optional: Secret to validate the webhook
18)
19
20print("Job created successfully:", create_response)

In the response, you will receive a job ID. This ID is used to check the status of the job and to download the dubbed file once the job is completed.

Response
1{
2 "dubbing_type": "AUTOMATED",
3 "file_name": "file_name",
4 "priority": "LOW",
5 "job_id": "job_id",
6 "target_locales": [
7 "target_locales"
8 ],
9 "file_url": "file_url",
10 "webhook_url": "webhook_url",
11 "source_locale": "source_locale",
12 "warning": "warning"
13}
3

Check Job Status

After creating a job, you can check its status using the job ID returned in the response.

This step is not required if you have set a webhook URL in the job creation step. The webhook will notify you when the job is completed.

1from murf import MurfDub
2
3client = MurfDub(
4 api_key="YOUR_API_KEY", # Not required if you have set the environment variable MURFDUB_API_KEY
5)
6status_res = client.dubbing.jobs.get_status(
7 job_id="job_id",
8)
9print("Job status:", status_res)

Once the job is completed, you can use the download_url from the job status response to download the dubbed file.

Response
1{
2 "job_id": "job_id",
3 "status": "status",
4 "project_id": "project_id",
5 "download_details": [
6 {
7 "locale": "locale",
8 "status": "status",
9 "error_message": "error_message",
10 "download_url": "download_url",
11 "download_srt_url": "download_srt_url"
12 }
13 ],
14 "credits_used": 1000000,
15 "credits_remaining": 1000000,
16 "failure_reason": "failure_reason",
17 "failure_code": "failure_code"
18}

Languages

Here are all the source and destination languages offered by Murf Dub Automation API in both types of dubbing:

Source Languages (22)Destination Languages (26)
Auto DetectEnglish (US & Canada) (en_US)
English (US & Canada) (en_US)English (UK) (en_UK)
English (UK) (en_UK)English (India) (en_IN)
English (India) (en_IN)English (Scotland) (en_SCOTT)
English (Scotland) (en_SCOTT)English (Australia) (en_AU)
English (Australia) (en_AU)French (fr_FR)
French (fr_FR)German (de_DE)
German (de_DE)Spanish (Spain) (es_ES)
Spanish (Spain) (es_ES)Spanish (Mexico) (es_MX)
Spanish (Mexico) (es_MX)Italian (it_IT)
Italian (it_IT)Portuguese (Brazil) (pt_BR)
Portuguese (Brazil) (pt_BR)Polish (pl_PL)
Polish (pl_PL)Hindi (hi_IN)
Hindi (hi_IN)Korean (ko_KR)
Korean (ko_KR)Tamil (ta_IN)
Japanese (ja_JP)Bengali (bn_IN)
Mandarin (Chinese) (zh_CN)Japanese (ja_JP)
Dutch (nl_NL)Mandarin (Chinese) (zh_CN)
Finnish (fi_FI)Dutch (nl_NL)
Russian (ru_RU)Finnish (fi_FI)
Turkish (tr_TR)Russian (ru_RU)
Ukrainian (uk_UA)Turkish (tr_TR)
Danish (da_DK)
Indonesian (id_ID)
Romanian (ro_RO)
Norwegian (nb_NO)

API Limits

API usage and rate limits are determined by your pricing plan. If you need higher limits, you can upgrade to a higher-tier plan.

PlanFreePay-as-you-goEnterprise
Concurrencyup to 5up to 515 (based on custom requests)
Video Lengthup to 1 hourup to 1 hourup to 1 hour
Resolutionup to 1080p (Full HD)up to 1080p (Full HD)up to 1080p (Full HD)
QA--Yes (using Project ID endpoint)
WatermarkYesNoNo

You can contact us for custom requirements.

Troubleshooting

Below are some common errors you might encounter while using the Murf Dub Automation API, along with their descriptions and possible solutions:

Error CodeDescriptionSolution
INSUFFICIENT_CREDITSInsufficient credits, please purchase additional credits to continue. Purchase CreditsPurchase additional credits from the Murf platform.
CREDITS_EXHAUSTEDYour credits have been exhausted, please purchase additional credits to continue. Purchase CreditsPurchase additional credits from the Murf platform.
LANGUAGE_NOT_SUPPORTEDThe specified language is not yet supported.Use a supported language. Refer to the Languages section for supported options.
SPEECH_NOT_PRESENTNo speech detected in the audio.Ensure the audio contains clear speech and try again.
SOURCE_LANGUAGE_MISMATCHSource language does not match the provided language.Verify the source language and ensure it matches the provided language.
WEBHOOK_ERRORAn error occurred while calling the mentioned webhook. Please use the Job Status API to fetch the Dub.Verify the webhook URL and ensure it is reachable. Use the Job Status API as a fallback.
SERVER_ERRORProcessing failed, please contact support. Help CenterContact Murf support for assistance.

FAQ

/jobs/create-with-project-ID: The jobs (Dubs) appears in the Murf platform UI. You can edit, re-synthesize, or perform QA checks on the dubbing. The resulting audio files are stored permanently (subject to renewal or manual deletion).

/jobs/create (no project ID) : The job does not appear on the platform; it’s purely API-based. Output links expire after 72 hours and cannot be edited through the UI. Perfect for one-off, high-security needs or quick tests.

You can programmatically loop through your file list and call the relevant job-creation endpoint for each file. This can be done by giving a public link to the video/audio or uploading it locally through multipart form-data(recommended for security). For large-scale operations, you may batch your requests to manage concurrency or network throughput efficiently.

We typically offer 99% uptime. For premium-tier customers, higher availability SLAs may be negotiated. Processing speed depends on file length, concurrency levels, and subscription tier. Advanced or premium plans may grant higher throughput or priority in the dubbing queue.

Each dubbing consumes credits based on the minutes and number of languages. You can track how many credits you’ve used, how many remain, and get alerts when approaching limits on our usage dashboard.

You’ll receive an HTTP error code and/or a webhook payload indicating the failure reason (e.g., insufficient credits, unsupported file format, file corruption). For project-based jobs, you can see the failure reason in the platform. For ephemeral jobs, you’ll only see it via the API response or webhook.

Yes, for project-based jobs: The Murf platform enables script, timing, or voice changes. You can finalize the result and re-download. For ephemeral jobs, editing is not available at the moment as there is no persistent record in the platform and the link is deleted after 72 hours.

Yes: Different plans have varying concurrency limits and advanced features (such as QA checks). You can contact our sales team or view your plan details in the platform to see upgrade options.