---
title: "Python API"
description: "Execute Python code in disguise Designer sessions to control and query projects programmatically"
url: https://developer.disguise.one/python-api/introduction/
---

# Python API

The Designer Python API lets you execute Python code within a running Designer session via a REST endpoint. This gives programmatic access to almost every object and property in a Designer project — from tracks and layers to projector settings and stage objects.

## How It Works

Your application sends Python code to a Designer session’s `/api/session/python/execute` endpoint. Designer runs the code in its embedded Python 2.7 environment and returns the result. This can be triggered from a plugin UI, a script, or any HTTP client.

For the full endpoint reference, see the [Execution API](/python-api/execution-api).

For details on the runtime environment, available utilities, and restrictions, see the [Environment](/python-api/environment) page.

## What You Can Do

The Python API exposes the `d3` package, which provides access to Designer’s internal object model. Common tasks include:

-   **Query project state** — read track positions, layer properties, device values
-   **Control playback** — play, stop, go to specific timecodes
-   **Modify objects** — change properties, create resources, configure devices
-   **Automate workflows** — batch operations across multiple objects

💡

If you’d prefer not to manage HTTP requests directly, use the [`designer-plugin`](/plugins/designer-plugin/designer-plugin) package. It lets you define your logic as regular Python methods, connect to a Designer instance, and call them directly without HTTP boilerplate.

## Guides

Practical guides covering common workflows with code examples:

-   **[Audio](/python-api/guides/audio)** — Managing audio tracks, files, and volume control
-   **[Calibration](/python-api/guides/calibration)** — Projector calibration workflows (OmniCal, QuickCal, Manual)
-   **[D3Net](/python-api/guides/d3net)** — Configuring D3Net machines, roles, and director/understudy modes
-   **[Devices](/python-api/guides/devices)** — Working with the Device Manager and device types
-   **[Expressions](/python-api/guides/expressions)** — Expression syntax and usage
-   **[Feed](/python-api/guides/feed)** — Managing feeds, rectangles, and output configuration
-   **[Resources](/python-api/guides/resources)** — Resource management patterns and best practices
-   **[Stage](/python-api/guides/stage)** — Working with stage objects, positioning, and DMX lighting
-   **[Track & Sequencing](/python-api/guides/track-and-sequencing)** — Layers, cues, tags, and keyframe sequences
-   **[Transports](/python-api/guides/transports)** — Transport control, timecode, and event transports
-   **[Utility](/python-api/guides/utility)** — Common utility types and functions
-   **[Video Input](/python-api/guides/video-input)** — Working with video input resources

## Reference

-   **[Python Reference](/python-api/docs)** — Full auto-generated API reference for every d3 class and method
-   **[Python Plugin](/plugins/designer-plugin/designer-plugin)** — Python helper package for building and running plugins that execute Python scripts in Designer
-   **[Type Stubs (d3.pyi)](/assets/d3.pyi)** — Download type annotations for IDE autocompletion
-   **[Useful Python Strings](/python-api/useful-strings)** — Quick code snippets for common tasks
-   **[API Changes](/python-api/api-changes)** — Changelog of Python API changes across Designer versions
