curl --request POST \
--url http://localhost:8000/bot-orchestration/deploy-v2-controllers \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"instance_name": "<string>",
"credentials_profile": "<string>",
"controllers_config": [
"<string>"
],
"max_global_drawdown_quote": 123,
"max_controller_drawdown_quote": 123,
"image": "hummingbot/hummingbot:latest",
"script_config": "<string>",
"headless": false
}
'import requests
url = "http://localhost:8000/bot-orchestration/deploy-v2-controllers"
payload = {
"instance_name": "<string>",
"credentials_profile": "<string>",
"controllers_config": ["<string>"],
"max_global_drawdown_quote": 123,
"max_controller_drawdown_quote": 123,
"image": "hummingbot/hummingbot:latest",
"script_config": "<string>",
"headless": False
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
instance_name: '<string>',
credentials_profile: '<string>',
controllers_config: ['<string>'],
max_global_drawdown_quote: 123,
max_controller_drawdown_quote: 123,
image: 'hummingbot/hummingbot:latest',
script_config: '<string>',
headless: false
})
};
fetch('http://localhost:8000/bot-orchestration/deploy-v2-controllers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8000",
CURLOPT_URL => "http://localhost:8000/bot-orchestration/deploy-v2-controllers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'instance_name' => '<string>',
'credentials_profile' => '<string>',
'controllers_config' => [
'<string>'
],
'max_global_drawdown_quote' => 123,
'max_controller_drawdown_quote' => 123,
'image' => 'hummingbot/hummingbot:latest',
'script_config' => '<string>',
'headless' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://localhost:8000/bot-orchestration/deploy-v2-controllers"
payload := strings.NewReader("{\n \"instance_name\": \"<string>\",\n \"credentials_profile\": \"<string>\",\n \"controllers_config\": [\n \"<string>\"\n ],\n \"max_global_drawdown_quote\": 123,\n \"max_controller_drawdown_quote\": 123,\n \"image\": \"hummingbot/hummingbot:latest\",\n \"script_config\": \"<string>\",\n \"headless\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:8000/bot-orchestration/deploy-v2-controllers")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"instance_name\": \"<string>\",\n \"credentials_profile\": \"<string>\",\n \"controllers_config\": [\n \"<string>\"\n ],\n \"max_global_drawdown_quote\": 123,\n \"max_controller_drawdown_quote\": 123,\n \"image\": \"hummingbot/hummingbot:latest\",\n \"script_config\": \"<string>\",\n \"headless\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8000/bot-orchestration/deploy-v2-controllers")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"instance_name\": \"<string>\",\n \"credentials_profile\": \"<string>\",\n \"controllers_config\": [\n \"<string>\"\n ],\n \"max_global_drawdown_quote\": 123,\n \"max_controller_drawdown_quote\": 123,\n \"image\": \"hummingbot/hummingbot:latest\",\n \"script_config\": \"<string>\",\n \"headless\": false\n}"
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Deploy V2 Controllers
Deploy a V2 strategy with controllers by generating the script config and creating the instance. This endpoint simplifies the deployment process for V2 controller strategies.
Args: deployment: V2ControllerDeployment configuration docker_manager: Docker service dependency
Returns: Dictionary with deployment response and generated configuration details
Raises: HTTPException: 500 if deployment fails
curl --request POST \
--url http://localhost:8000/bot-orchestration/deploy-v2-controllers \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"instance_name": "<string>",
"credentials_profile": "<string>",
"controllers_config": [
"<string>"
],
"max_global_drawdown_quote": 123,
"max_controller_drawdown_quote": 123,
"image": "hummingbot/hummingbot:latest",
"script_config": "<string>",
"headless": false
}
'import requests
url = "http://localhost:8000/bot-orchestration/deploy-v2-controllers"
payload = {
"instance_name": "<string>",
"credentials_profile": "<string>",
"controllers_config": ["<string>"],
"max_global_drawdown_quote": 123,
"max_controller_drawdown_quote": 123,
"image": "hummingbot/hummingbot:latest",
"script_config": "<string>",
"headless": False
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
instance_name: '<string>',
credentials_profile: '<string>',
controllers_config: ['<string>'],
max_global_drawdown_quote: 123,
max_controller_drawdown_quote: 123,
image: 'hummingbot/hummingbot:latest',
script_config: '<string>',
headless: false
})
};
fetch('http://localhost:8000/bot-orchestration/deploy-v2-controllers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8000",
CURLOPT_URL => "http://localhost:8000/bot-orchestration/deploy-v2-controllers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'instance_name' => '<string>',
'credentials_profile' => '<string>',
'controllers_config' => [
'<string>'
],
'max_global_drawdown_quote' => 123,
'max_controller_drawdown_quote' => 123,
'image' => 'hummingbot/hummingbot:latest',
'script_config' => '<string>',
'headless' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://localhost:8000/bot-orchestration/deploy-v2-controllers"
payload := strings.NewReader("{\n \"instance_name\": \"<string>\",\n \"credentials_profile\": \"<string>\",\n \"controllers_config\": [\n \"<string>\"\n ],\n \"max_global_drawdown_quote\": 123,\n \"max_controller_drawdown_quote\": 123,\n \"image\": \"hummingbot/hummingbot:latest\",\n \"script_config\": \"<string>\",\n \"headless\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:8000/bot-orchestration/deploy-v2-controllers")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"instance_name\": \"<string>\",\n \"credentials_profile\": \"<string>\",\n \"controllers_config\": [\n \"<string>\"\n ],\n \"max_global_drawdown_quote\": 123,\n \"max_controller_drawdown_quote\": 123,\n \"image\": \"hummingbot/hummingbot:latest\",\n \"script_config\": \"<string>\",\n \"headless\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8000/bot-orchestration/deploy-v2-controllers")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"instance_name\": \"<string>\",\n \"credentials_profile\": \"<string>\",\n \"controllers_config\": [\n \"<string>\"\n ],\n \"max_global_drawdown_quote\": 123,\n \"max_controller_drawdown_quote\": 123,\n \"image\": \"hummingbot/hummingbot:latest\",\n \"script_config\": \"<string>\",\n \"headless\": false\n}"
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.
Body
Configuration for deploying a bot with controllers
Unique name for the bot instance
Name of the credentials profile to use
List of controller configuration files to use (without .yml extension)
Maximum allowed global drawdown in quote usually USDT
Maximum allowed per-controller drawdown in quote usually USDT
Docker image for the Hummingbot instance
Generated script configuration file name
Run in headless mode (no UI)
Response
Successful Response
Was this page helpful?

