How to Get the Current DaVinci Resolve Project in Python
Project Manager, the active Project object, and a safe current-Timeline check
Get the project currently open in Resolve and verify the active Timeline before importing media, reading settings, exporting audio, or starting render automation.
API
Resolve Scripting API
Language
Python
Resolve
19–20+
Requires
Running Resolve
Syntax
project = resolve.GetProjectManager().GetCurrentProject()Parameters
- • GetCurrentProject() does not require arguments.
Returns
The active Project object, or None when no project is open.
import os
import sys
from pathlib import Path
def import_resolve_module():
try:
import DaVinciResolveScript as dvr
return dvr
except ImportError:
search_paths = [
os.environ.get("RESOLVE_SCRIPT_API", ""),
os.environ.get("RESOLVE_MODULES", ""),
r"C:\\ProgramData\\Blackmagic Design\\DaVinci Resolve\\Support\\Developer\\Scripting\\Modules",
"/opt/resolve/Developer/Scripting/Modules",
"/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules",
str(Path.home() / "Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules"),
]
for path in search_paths:
if path and os.path.isdir(path) and path not in sys.path:
sys.path.append(path)
import DaVinciResolveScript as dvr
return dvr
dvr = import_resolve_module()
resolve = dvr.scriptapp("Resolve")
if not resolve:
raise RuntimeError("Resolve API is unavailable")
project_manager = resolve.GetProjectManager()
project = project_manager.GetCurrentProject()
if not project:
raise RuntimeError("No DaVinci Resolve project is open")
print("Project:", project.GetName())
timeline = project.GetCurrentTimeline()
if timeline:
print("Timeline:", timeline.GetName())
else:
print("The project has no active Timeline")Guide
What GetCurrentProject returns
GetCurrentProject() returns the project currently open in the Resolve interface. It does not search for project files on disk and it does not create a project. If a project is open you receive a Project object; otherwise the method returns None.
Why the check matters
Most useful calls happen on the Project object: GetMediaPool(), GetCurrentTimeline(), SetRenderSettings(), AddRenderJob(), and many others. A clear None check near the start of the script keeps failures understandable and prevents later calls from operating on an invalid object.
The active Timeline is separate
A project can exist without an active Timeline, especially in a new project. The example checks project.GetCurrentTimeline() separately and treats a missing Timeline as its own state rather than confusing it with a missing project.
Where this pattern belongs
This is a good opening block for scripts that intentionally work with the project already selected by the user. It reads the current application state without modifying the project.
How the example works
Get Project Manager
Project-level operations are exposed through the Project Manager object returned by Resolve.
Read the current project
GetCurrentProject() returns the project currently selected in the Resolve interface.
Handle an empty result
A missing project is a normal state. Check for None before any Media Pool, Timeline, or render calls.
Check the Timeline separately
A project may be open without an active Timeline, so project and Timeline validation should remain separate steps.
Resolve API notes
- GetCurrentProject() does not create a project and does not load one by name.
- Use ProjectManager.CreateProject() when you need to create a new project.
- GetCurrentTimeline() can return None even when a project is open.
- Before rendering, reading timeline FPS, or iterating clips, check the active Timeline explicitly.
Common errors
No project is open
Reason: Project Manager is available, but Resolve has no active project.
Fix: Open a project in Resolve or load the required project through LoadProject().
No active Timeline
Reason: The project exists, but no Timeline has been created or selected.
Fix: Create a Timeline through the Media Pool or select an existing one before Timeline-specific calls.
The script uses the wrong project
Reason: GetCurrentProject() follows the project currently active in the Resolve UI.
Fix: Validate project.GetName() before automation or load the required project explicitly.
Next step
With a valid Project object, you can access Media Pool, Timeline settings, and render operations.
Related API guides
Getting Started
How to Connect to DaVinci Resolve with the Python API
Build a dependable starter template for external Python scripts: locate DaVinciResolveScript, obtain the Resolve application object, inspect the installed version, access Project Manager, and verify that a project is open.
Projects
How to Create a DaVinci Resolve Project with the Python API
Create a Resolve project through Project Manager without producing unnecessary duplicates, and fall back to loading an existing project when the requested name is already present.
Timeline
How to Get Timeline FPS with the DaVinci Resolve Python API
Read the active Timeline frame rate, convert string settings safely to float, and use project settings as a fallback when the Timeline does not expose a value.

