← All text lessons
DaVinci Resolve APIPythonAutomation

DaVinci Resolve API: Python Setup, Connection and a Safe First Script

Find the official Scripting SDK, connect to a running Resolve instance and move from a read-only test to your first write operations.

Intermediate8–10 min readUpdated: 2026-08-11

A safer introduction to the API: verify the environment and connection first, read the current project, and only then run code that changes Resolve state.

01

1. What the Scripting API gives you

The Resolve Scripting API exposes objects such as ProjectManager, Project, MediaPool and Timeline for automation around media import, timelines and rendering. Available methods can change between Resolve versions, so the README/documentation installed with your copy of Resolve is the primary reference.

02

2. Find the SDK that belongs to your installation

Instead of copying random paths from the web, locate the Developer/Scripting folder installed with Resolve. It contains the README, Modules and examples. Locations differ across Windows, macOS and Linux and can vary with custom installations.

Common SDK rootstext
Windows: %PROGRAMDATA%\Blackmagic Design\DaVinci Resolve\Support\Developer\Scripting
macOS: /Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting
Linux: /opt/resolve/Developer/Scripting

Important

Always compare these paths with the README installed by your Resolve version. The local SDK is more authoritative than a tutorial.

03

3. Make the Python module visible

External Python needs access to the Scripting SDK Modules directory and Fusion scripting library. Configure the environment once rather than hardcoding absolute paths into every script.

04

4. Make the first test read-only

Do not create or delete projects in the first test. Get the Resolve object, retrieve the current project and print its name. That proves the connection without changing state.

hello_resolve.pypython
import DaVinciResolveScript as dvr

resolve = dvr.scriptapp("Resolve")
if resolve is None:
    raise RuntimeError("Resolve connection failed")

pm = resolve.GetProjectManager()
project = pm.GetCurrentProject()
print(project.GetName() if project else "No project is open")

Practical notes

  • Start Resolve and open a disposable test project before running the script.
05

5. Learn the object model from the top down

A useful mental model is Resolve → ProjectManager → Project → MediaPool/Timeline. Do not begin by memorizing dozens of TimelineItem methods; first make object retrieval reliable.

Object chaintext
Resolve
  └─ GetProjectManager()
       └─ GetCurrentProject()
            ├─ GetMediaPool()
            └─ GetCurrentTimeline()
06

6. Move to write operations only after the read-only test works

Creating projects, importing files, adding clips and render jobs changes Resolve state. Test those operations in a disposable project and inspect every method return value.

Important

Do not run experimental automation against the only copy of a commercial project without a backup.

07

7. What to learn next

  • ProjectManager and Project.
  • MediaStorage and MediaPool.
  • Timeline and TimelineItem.
  • Markers, metadata and clip properties.
  • Render Queue and presets.
  • Fusion scripting when the task genuinely requires Fusion.

Key takeaway

Reliable automation starts with a verifiable chain: connection → object reads → safe test → only then project-changing operations.

Related lessons

Need help applying this to a real project?

Live 1-on-1 training is currently available in Russian. You can also send a production task for editing or workflow automation.