Whispertrades

Bots

Updated Jul 11, 2026

GET /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"
            },
        ]
    }
} 
PUT /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
    }
}
PUT /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
    }
}
POST /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": {}
}
PUT /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": {}
}

Was this page helpful?