Bots
Updated Jul 11, 2026
/v1/bots
Get a single bot or a list of all bots Auth Required: Read Bots
Path parameters
| number | string | Unique identifier to retrieve a single bot. If omitted, all bots will be returned |
Query parameters
| statuses | Array | Filter bots to a given status or statuses. Valid values are "Enabled", "Disabled", and "Disable on Close". Query string should look like this: "?statuses[]=Enabled&statuses[]=Disable on Close" | |
| include_details | Boolean | Set to "true" to include all bot settings, including entry, exit, adjustments, notifications, and variables. If omitted, only high level information about the bot(s) will be returned |
Header parameters
| API Token | string | required | Token from your Whispertrades account |
curl -X GET "https://api.whispertrades.com/v1/bots" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "API Token: example"
const response = await fetch("https://api.whispertrades.com/v1/bots", {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"API Token": "example"
}
});
const data = await response.json();
console.log(data);
fetch("https://api.whispertrades.com/v1/bots", {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"API Token": "example"
}
})
.then((response) => response.json())
.then((data) => console.log(data));
import requests
response = requests.get(
"https://api.whispertrades.com/v1/bots",
headers={
"Authorization": "Bearer YOUR_TOKEN",
"API Token": "example"
},
)
data = response.json()
print(data)
Response · 200
{
"success": true,
"message": "",
"data": {
"number": "DOU1FMATVC",
"name": "4 DTE Weekly PCS 350% SL",
"broker_connection": {
"broker": "tastytrade",
"name": "Shared brokerage",
"number": "SATFKAQ8KA",
"account_number": "491857185",
"net_liquidation_value": "291851.29"
},
"is_paper": false,
"status": "Enabled",
"can_enable": false,
"can_disable": true,
"symbol": "SPXW",
"type": "Put Credit Spread",
"notes": null,
"last_active_at": "2023-10-23T15:55:03.000000Z",
"disabled_at": "2023-10-23T15:55:18.000000Z",
"entry_condition": {
"frequency": "Sequential",
"allocation_type": "Leverage Amount",
"contract_quantity": null,
"percent_of_portfolio": null,
"leverage_amount": "2.5",
"long_call_ratio_quantity": null,
"short_call_ratio_quantity": null,
"long_put_ratio_quantity": null,
"short_put_ratio_quantity": null,
"entry_speed": "Normal",
"maximum_concurrent_positions": null,
"maximum_entries_per_day": 1,
"earliest_time_of_day": "9:35 AM",
"latest_time_of_day": null,
"day_of_week": null,
"days_of_week": "Monday",
"minutes_between_positions": 0,
"minimum_starting_premium": null,
"maximum_starting_premium": null,
"minimum_days_to_expiration": 4,
"target_days_to_expiration": 4,
"maximum_days_to_expiration": 4,
"minimum_iv": null,
"maximum_iv": null,
"minimum_vix": null,
"maximum_vix": null,
"minimum_underlying_percent_move_from_close": null,
"maximum_underlying_percent_move_from_close": null,
"minimum_underlying_percent_move_from_open": null,
"maximum_underlying_percent_move_from_open": null,
"minimum_underlying_percent_move_from_today_high": null,
"maximum_underlying_percent_move_from_today_high": null,
"underlying_percent_from_today_high_start_time": null,
"underlying_percent_from_today_high_end_time": null,
"minimum_underlying_percent_move_from_today_low": null,
"maximum_underlying_percent_move_from_today_low": null,
"underlying_percent_from_today_low_start_time": null,
"underlying_percent_from_today_low_end_time": null,
"minimum_underlying_percent_move_from_prior_high": null,
"maximum_underlying_percent_move_from_prior_high": null,
"underlying_percent_from_prior_high_start_time": null,
"underlying_percent_from_prior_high_end_time": null,
"minimum_underlying_percent_move_from_prior_low": null,
"maximum_underlying_percent_move_from_prior_low": null,
"underlying_percent_from_prior_low_start_time": null,
"underlying_percent_from_prior_low_end_time": null,
"ma_crossover_one": null,
"ma_crossover_percent": null,
"ma_crossover_type": null,
"ma_crossover_two": null,
"ma_value_percent": null,
"ma_value_type": null,
"ma_value_ma": null,
"iv_diff_iv_one": null,
"iv_diff_iv_one_days_ago": null,
"iv_diff_percent": null,
"iv_diff_type": null,
"iv_diff_iv_two": null,
"iv_diff_iv_two_days_ago": null,
"min_total_gex": null,
"max_total_gex": null,
"min_gex_call_wall": null,
"max_gex_call_wall": null,
"min_gex_flip_level": null,
"max_gex_flip_level": null,
"min_gex_put_wall": null,
"max_gex_put_wall": null,
"same_day_re_entry": null,
"avoid_fomc": null,
"move_strike_selection_with_conflict": "Yes",
"variables": [],
"call_short_strike_type": null,
"call_short_strike_minimum_delta": null,
"call_short_strike_target_delta": null,
"call_short_strike_maximum_delta": null,
"call_short_strike_minimum_premium": null,
"call_short_strike_target_premium": null,
"call_short_strike_maximum_premium": null,
"call_short_strike_percent_otm_minimum": null,
"call_short_strike_target_percent_otm": null,
"call_short_strike_percent_otm_maximum": null,
"call_short_strike_gex_offset_percent": null,
"call_long_strike_type": null,
"call_long_strike_minimum_delta": null,
"call_long_strike_target_delta": null,
"call_long_strike_maximum_delta": null,
"call_long_strike_minimum_premium": null,
"call_long_strike_target_premium": null,
"call_long_strike_maximum_premium": null,
"call_long_strike_percent_otm_minimum": null,
"call_long_strike_target_percent_otm": null,
"call_long_strike_percent_otm_maximum": null,
"call_long_strike_gex_offset_percent": null,
"call_spread_minimum_width_points": null,
"call_spread_target_width_points": null,
"call_spread_maximum_width_points": null,
"call_spread_minimum_width_percent": null,
"call_spread_target_width_percent": null,
"call_spread_maximum_width_percent": null,
"call_spread_strike_target_delta": null,
"call_spread_strike_target_premium": null,
"restrict_call_spread_width_by": null,
"call_spread_smart_width": false,
"put_short_strike_type": "Delta",
"put_short_strike_minimum_delta": "15.0",
"put_short_strike_target_delta": "20.0",
"put_short_strike_maximum_delta": "22.0",
"put_short_strike_minimum_premium": null,
"put_short_strike_target_premium": null,
"put_short_strike_maximum_premium": null,
"put_short_strike_percent_otm_minimum": null,
"put_short_strike_target_percent_otm": null,
"put_short_strike_percent_otm_maximum": null,
"put_short_strike_gex_offset_percent": null,
"put_long_strike_type": null,
"put_long_strike_minimum_delta": null,
"put_long_strike_target_delta": null,
"put_long_strike_maximum_delta": null,
"put_long_strike_minimum_premium": null,
"put_long_strike_target_premium": null,
"put_long_strike_maximum_premium": null,
"put_long_strike_percent_otm_minimum": null,
"put_long_strike_target_percent_otm": null,
"put_long_strike_percent_otm_maximum": null,
"put_long_strike_gex_offset_percent": null,
"put_spread_minimum_width_points": null,
"put_spread_target_width_points": 75,
"put_spread_maximum_width_points": 90,
"put_spread_minimum_width_percent": null,
"put_spread_target_width_percent": null,
"put_spread_maximum_width_percent": null,
"put_spread_strike_target_delta": null,
"put_spread_strike_target_premium": null,
"restrict_put_spread_width_by": null,
"put_spread_smart_width": false
},
"exit_condition": {
"exit_speed": "Normal",
"profit_premium_value": "$0.05",
"profit_target_percent": null,
"stop_loss_percent": "350",
"loss_premium_value": null,
"itm_percent_stop": null,
"otm_percent_stop": null,
"delta_stop": null,
"monitored_stop_sensitivity": "Normal",
"trail_profit_percent_trigger": null,
"trail_profit_percent_amount": null,
"trail_profit_premium_trigger": null,
"trail_profit_premium_amount": null,
"ma_crossover_one": null,
"ma_crossover_percent": null,
"ma_crossover_type": null,
"ma_crossover_two": null,
"ma_value_percent": null,
"ma_value_type": null,
"ma_value_ma": null,
"variables": [],
"close_short_strike_only": "No",
"sell_abandoned_long_strike": "Yes",
"gex_call_wall": "No",
"gex_call_wall_offset_percent": null,
"gex_put_wall": "No",
"gex_put_wall_offset": null,
"gex_flip_level": "No",
"gex_flip_level_offset": null,
},
"adjustments": [
{
"number": "JPYW9UK9AL",
"status": "Enabled",
"type": "Enter Second Position",
"days_of_week": "All",
"days_to_expiration": 1,
"time_of_day": "3:45 PM",
"end_time_of_day": "3:50 PM",
"avoid_fomc": null,
"minimum_position_delta": null,
"maximum_position_delta": null,
"minimum_position_profit_percent": null,
"maximum_position_profit_percent": null,
"minimum_underlying_percent_move_from_close": null,
"maximum_underlying_percent_move_from_close": null,
"ma_crossover_one": null,
"ma_crossover_percent": null,
"ma_crossover_type": null,
"ma_crossover_two": null,
"ma_value_percent": null,
"ma_value_type": null,
"ma_value_ma": null,
"variables": []
}
],
"notifications": [
{
"number": "1CY3UFIAJP",
"is_enabled": true,
"event": "Order Filled",
"type": "Email,SMS,Website,Discord Webhook,Pushover.net",
"days_to_expiration": null,
"percent_profit": null,
"percent_loss": null,
"percent_in_the_money": null,
"delta": null,
"max_per_hour": null,
"max_per_day": null
},
],
"variables": [
{
"number": "VIZG80TGC9",
"name": "Weekly PCS Realized Profit Today",
"value": "150.56",
"bot_value_to_set": "Bot Profit Realized Today $",
"free_text_value_to_set": null,
"last_updated_at": "2023-10-05T18:55:23.000000Z"
},
]
}
}
/v1/bots/{number}/enable
Enable a bot that is currently disabled or disable on close Auth Required: Write Bots
Path parameters
| number | string | required | Bot number to enable |
Header parameters
| API Token | string | required | Token from your Whispertrades account |
curl -X PUT "https://api.whispertrades.com/v1/bots/example/enable" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "API Token: example"
const response = await fetch("https://api.whispertrades.com/v1/bots/example/enable", {
method: "PUT",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"API Token": "example"
}
});
const data = await response.json();
console.log(data);
fetch("https://api.whispertrades.com/v1/bots/example/enable", {
method: "PUT",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"API Token": "example"
}
})
.then((response) => response.json())
.then((data) => console.log(data));
import requests
response = requests.put(
"https://api.whispertrades.com/v1/bots/example/enable",
headers={
"Authorization": "Bearer YOUR_TOKEN",
"API Token": "example"
},
)
data = response.json()
print(data)
Response · 200
{
"success": true,
"message": "",
"data": {
"number": "DOU1FMATVC",
"name": "4 DTE Weekly PCS 350% SL",
"broker": "Shared brokerage",
"is_paper": false,
"status": "Enabled",
"can_enable": false,
"can_disable": true,
"symbol": "SPXW",
"type": "Put Credit Spread",
"notes": null,
"last_active_at": "2023-10-05T18:58:03.000000Z",
"disabled_at": null
}
}
/v1/bots/{number}/disable
Disable a bot that is currently enabled. If the bot has open positions, the bot will move to Disable on Close. If there are no open positions, the bot will move to Disabled. Auth Required: Write Bots
Path parameters
| number | string | required | Bot number to disable |
Header parameters
| API Token | string | required | Token from your Whispertrades account |
curl -X PUT "https://api.whispertrades.com/v1/bots/example/disable" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "API Token: example"
const response = await fetch("https://api.whispertrades.com/v1/bots/example/disable", {
method: "PUT",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"API Token": "example"
}
});
const data = await response.json();
console.log(data);
fetch("https://api.whispertrades.com/v1/bots/example/disable", {
method: "PUT",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"API Token": "example"
}
})
.then((response) => response.json())
.then((data) => console.log(data));
import requests
response = requests.put(
"https://api.whispertrades.com/v1/bots/example/disable",
headers={
"Authorization": "Bearer YOUR_TOKEN",
"API Token": "example"
},
)
data = response.json()
print(data)
Response · 200
{
"success": true,
"message": "Bot set to Disable on Close",
"data": {
"number": "DOU1FMATVC",
"name": "4 DTE Weekly PCS 350% SL",
"broker": "Shared brokerage",
"is_paper": false,
"status": "Disable on Close",
"can_enable": true,
"can_disable": false,
"symbol": "SPXW",
"type": "Put Credit Spread",
"notes": null,
"last_active_at": "2023-10-05T18:58:03.000000Z",
"disabled_at": null
}
}
/v1/bots/{number}/open
Open a new position for the bot. This is only valid during market hours, while the bot is enabled, and while the bot has no more than one position currently open. This API request will ignore any entry filters configured for the bot and will immediately enter a new position when submitted. Auth Required: Write Positions
Path parameters
| number | string | required | Bot number for the new position |
Header parameters
| API Token | string | required | Token from your Whispertrades account |
curl -X POST "https://api.whispertrades.com/v1/bots/example/open" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "API Token: example"
const response = await fetch("https://api.whispertrades.com/v1/bots/example/open", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"API Token": "example"
}
});
const data = await response.json();
console.log(data);
fetch("https://api.whispertrades.com/v1/bots/example/open", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"API Token": "example"
}
})
.then((response) => response.json())
.then((data) => console.log(data));
import requests
response = requests.post(
"https://api.whispertrades.com/v1/bots/example/open",
headers={
"Authorization": "Bearer YOUR_TOKEN",
"API Token": "example"
},
)
data = response.json()
print(data)
Response · 200
{
"success": true,
"message": "Open position initiated",
"data": {}
}
/v1/bots/{number}/close
Close open position(s) for the bot. This is only valid during market hours and while the bot is set to Enabled or Disable on Close. Auth Required: Write Positions
Path parameters
| number | string | required | Bot number for the position(s) to close |
Header parameters
| API Token | string | required | Token from your Whispertrades account |
curl -X PUT "https://api.whispertrades.com/v1/bots/example/close" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "API Token: example"
const response = await fetch("https://api.whispertrades.com/v1/bots/example/close", {
method: "PUT",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"API Token": "example"
}
});
const data = await response.json();
console.log(data);
fetch("https://api.whispertrades.com/v1/bots/example/close", {
method: "PUT",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"API Token": "example"
}
})
.then((response) => response.json())
.then((data) => console.log(data));
import requests
response = requests.put(
"https://api.whispertrades.com/v1/bots/example/close",
headers={
"Authorization": "Bearer YOUR_TOKEN",
"API Token": "example"
},
)
data = response.json()
print(data)
Response · 200
{
"success": true,
"message": "Close bot position(s) initiated",
"data": {}
}