---
title: "Deploy V2 Controllers"
method: POST
path: "/bot-orchestration/deploy-v2-controllers"
tags: ["Bot Orchestration"]
---

# Deploy V2 Controllers

`POST /bot-orchestration/deploy-v2-controllers`

Deploy a V2 strategy with controllers.

This is the recommended method for deploying multi-controller trading strategies.
The endpoint automatically:
1. Generates a unique timestamped instance name to prevent conflicts
2. Creates the script configuration file combining all specified controllers
3. Deploys a new Docker container with the v2_with_controllers.py script
4. Creates a bot run record for tracking

Controllers are pre-configured strategy components that can be combined to create
sophisticated trading strategies. Examples include:
- DMan Maker: Directional market making with inventory management
- Grid Strategy: Grid-based trading for ranging markets
- XEMM: Cross-exchange market making

The generated instance name follows the format: {instance_name}-{YYYYMMDD-HHMMSS}
to ensure uniqueness across deployments.

## Request body

- V2ControllerDeployment — Configuration for deploying a Hummingbot instance with V2 controllers. Controllers are modular strategy components that can be combined to create sophisticated trading strategies. This model simplifies deployment by automatically generating the required script configuration. The endpoint appends a timestamp to the instance_name to ensure uniqueness, resulting in names like 'my-bot-20240115-143022'. Example: { "instance_name": "multi-strategy", "credentials_profile": "binance_main", "controllers_config": ["dman_maker_btc", "dman_maker_eth"], "max_global_drawdown_quote": 1000.0, "max_controller_drawdown_quote": 300.0, "image": "hummingbot/hummingbot:1.26.0", "headless": true }
  - `instance_name` string, required — Base name for the bot instance. A timestamp will be appended automatically (e.g., 'my-bot' becomes 'my-bot-20240115-143022'). This ensures each deployment has a unique name even if the same base name is reused.
  - `credentials_profile` string, required — Name of the exchange credentials profile to use. The profile must exist in the credentials directory and contain valid API credentials for the exchanges used by the controllers.
  - `controllers_config` string[], required — List of controller configuration file names (without .yml extension). Each configuration must exist in conf/controllers/ directory. Multiple controllers can be combined to run different strategies simultaneously on the same bot.
  - `max_global_drawdown_quote` number, nullable — Maximum total drawdown allowed across ALL controllers in quote currency (typically USDT). When this threshold is exceeded, all controllers stop trading as a risk management measure. Set to None for no global limit.
  - `max_controller_drawdown_quote` number, nullable — Maximum drawdown allowed per individual controller in quote currency (typically USDT). When a single controller exceeds this threshold, only that controller stops while others continue. Set to None for no per-controller limit.
  - `image` string — Docker image to use for the Hummingbot instance. Version pinning is recommended for production deployments to ensure consistent behavior.
  - `headless` boolean — When True, runs the bot without the terminal UI. Recommended for production deployments where bots are managed entirely via API. Reduces memory and CPU usage.

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

## Changes

- **2025-12-20** `1005bcd47280` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/hummingbot/apis/hummingbot-api/changes/bot-orchestration/deploy-v2-controllers/post.md)

---

[API](https://skmtc.dev/hummingbot/apis/hummingbot-api.md) · [All operations](https://skmtc.dev/hummingbot/apis/hummingbot-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/hummingbot/hummingbot-api/revisions/cb6b6935c8e2/schema)
