Page 1 of 1

Clip Linking in Python API

PostPosted: Wed Jun 18, 2025 3:49 pm
by Tilmann Rödiger
Hi everyone,

First off, thank you to the Blackmagic Design team for the incredible work on DaVinci Resolve — it’s truly an amazing tool for editors and creatives worldwide.

I wanted to suggest a feature enhancement for the DaVinci Resolve Python scripting API:

Please add support for clip linking and unlinking on the timeline (the equivalent of the Cmd/Ctrl+Alt+L shortcut) via scripting.

Currently, the API does not provide any way to programmatically link or unlink clips. This limitation makes it difficult to fully automate editorial workflows that require precise sync between video and audio clips, especially for large projects or batch operations.

While compound clips offer a partial workaround, they don’t fully replicate the native clip linking behavior and can complicate timeline structure.

Adding this functionality would:

Enable more powerful editorial automation workflows.

Reduce repetitive manual linking tasks.

Help professional editors and studios scale their post-production processes more efficiently.

I hope this can be considered for a future API update. If any additional details or use cases would help clarify this request, I’m happy to provide them.

Thanks for reading and for all the hard work on DaVinci Resolve!

Best regards, Tilmann

Re: Feature Request: Clip Linking in Python API

PostPosted: Thu Jun 19, 2025 2:32 am
by Jim Simon
There is a separate forum for Feature Requests.

viewforum.php?f=33

Best practice is to search first, to see if someone already asked. If not, post one idea per thread with a very brief description of the idea in the thread's title.

Re: Feature Request: Clip Linking in Python API

PostPosted: Thu Jun 19, 2025 4:01 am
by Shrinivas Ramani
Since the word linking is used in two contexts, let me illustrate the current Scripting API for both.

1. Relinking / unlinking a media pool clip - to set new underlying media file associations:
Code: Select all
clipsToRelink = [ mpClip1, mpClip2 ]
mediaPool.RelinkClips(clipsToRelink, '/User/tilmannr/Movies/Local Copy')
And the associated APIs:
Code: Select all
mediaPool.UnlinkClips(clipsToRelink)    # to set it offline.

mpClip1.UnlinkProxyMedia()   # to remove just the proxy
mpClip1.LinkProxyMedia(proxyMediaFilePath)        # relinking individual bits
mpClip1.LinkFullResolutionMedia(fullResMediaPath)

2. Linking / unlinking timeline clips for selection and editing:
Code: Select all
clipsToLink = [ videoClip, audioClip1, audioclip2 ]
timeline.SetClipsLinked(clipsToLink, True)

clipToIsolate = clipFromUserInput()
linkedClips = clipToIsolate.GetLinkedItems()
if not linkedClips:  # already solo
    return
# unlink from group, but keep other clips linked
currentLinkedGroup = linkedClips + [clipToIsolate]
timeline.SetClipsLinked(currentLinkedGroup, False)
timeline.SetClipsLinked(linkedClips, True)