Manage dubbing projects

List, retrieve, and delete dubbing projects and their language targets.

How-to guide · Assumes you are familiar with creating dubbing projects, as shown in the Dubbing quickstart.

This guide covers the operations you need to manage existing projects: listing them with pagination, retrieving a single project or language, refreshing an expired download URL, and deleting projects and languages you no longer need.

List projects

The list endpoint is cursor-paginated. Pass page_size (up to 100) and an optional status filter, then pass the response’s next_cursor back as cursor to fetch the next page. A next_cursor of null means you have reached the end.

1import os
2from dotenv import load_dotenv
3from elevenlabs.client import ElevenLabs
4
5load_dotenv()
6
7elevenlabs = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))
8
9# Fetch every ready project, one page at a time
10cursor = None
11while True:
12 page = elevenlabs.dubbing.project.list(
13 page_size=50,
14 status="ready",
15 cursor=cursor,
16 )
17 for project in page.projects:
18 print(project.project_id, project.reference)
19 if page.next_cursor is None:
20 break
21 cursor = page.next_cursor

Retrieve a project or language

Fetch a single project to read its status and media metadata, or a single language to read its status and outputs.

1project_id = "proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"
2language_id = "lang_1001kwkyxp0je6ktn4knsfrasx5s"
3
4project = elevenlabs.dubbing.project.get(project_id)
5print(project.status, project.language_ids)
6
7language = elevenlabs.dubbing.project.language.get(project_id, language_id)
8print(language.status, language.target_language)

Refresh an expired download URL

The signed URL in outputs.lossless_audio is valid for about an hour. It is not a permanent link, so store the downloaded file rather than the URL. To download a completed dub again later, fetch the language to obtain a fresh URL.

1import requests
2
3language = elevenlabs.dubbing.project.language.get(project_id, language_id)
4audio = requests.get(language.outputs.lossless_audio)
5with open("dubbed.wav", "wb") as f:
6 f.write(audio.content)

Delete projects and languages

Delete a single language target to remove one dub while keeping the project, or delete the project to remove it and all of its languages. Deletion is permanent.

1# Remove a single language target
2elevenlabs.dubbing.project.language.delete(project_id, language_id)
3
4# Remove the project and all of its languages
5elevenlabs.dubbing.project.delete(project_id)