Bot Positions
Updated Jul 11, 2026
GET
/v1/bots/positions
Get a paginated list of bot positions. Because of the large amount of data that this can return, results are paginated to 100 positions per page, listed by position entry date descending. There is an optional page parameter that you can use to return a specific page. The paginated result set will also return a 'pages' array that contains information about the number of items and pages. Auth Required: Read Positions
Path parameters
| number | string | Unique identifier to retrieve a single position. If omitted, all positions will be returned |
Query parameters
| bot | string | Bot number to only retrieve positions for a specific bot | |
| status | string | Filter the results by a certain position status. Expected values are OPEN or CLOSED | |
| from_date | string | Minimum date for position entry. Expected format is YYYY-MM-DD | |
| to_date | string | Maximum date for position entry. Expected format is YYYY-MM-DD | |
| page | string | Page number |
Header parameters
| API Token | string | required | Token from your Whispertrades account |
curl -X GET "https://api.whispertrades.com/v1/bots/positions" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "API Token: example"
const response = await fetch("https://api.whispertrades.com/v1/bots/positions", {
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/positions", {
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/positions",
headers={
"Authorization": "Bearer YOUR_TOKEN",
"API Token": "example"
},
)
data = response.json()
print(data)
Response · 200
{
"success": true,
"message": "",
"data": {
"number": "S1TCAKFTMZ",
"status": "CLOSED",
"bot": {
"name": "0 DTE 12:00 CCS",
"number": "1YJ351W9EY"
},
"broker_connection": {
"broker": "tastytrade",
"name": "Shared brokerage",
"number": "SATFKAQ8KA",
"account_number": "491857185",
"net_liquidation_value": "291851.29"
},
"is_paper": false,
"tags": "",
"symbol": "SPXW",
"type": "Call Credit Spread",
"entered_at": "2023-10-06T16:00:10.000000Z",
"exited_at": "2023-10-06T19:53:18.000000Z",
"entry_bid": "3.1500",
"entry_ask": "3.4000",
"entry_price": -3.3,
"exit_bid": "0.0000",
"exit_ask": "0.1000",
"exit_price": 0.05,
"broker_fee": "2.01",
"current_bid": null,
"current_mid": null,
"current_ask": null,
"current_profit": null,
"current_delta": "0.0294",
"current_spx_beta_weight": "10.51",
"entry_value": 330,
"exit_value": 5,
"max_risk": "8500.00",
"profit_dollars": "322.99",
"starting_balance": "1676.80",
"ending_balance": "1999.79",
"underlying_at_entry": 4302.03,
"underlying_at_exit": 4312.52,
"vix_at_entry": "17.75",
"vix_at_exit": "17.22",
"legs": [
{
"status": "CLOSED",
"type": "CALL",
"action": "SELL_TO_OPEN",
"instrument": "SPXW_100623C4325",
"expiration_date": "2023-10-06",
"days_to_expiration": 0,
"days_to_expiration_at_exit": 0,
"strike_price": "4325.0",
"quantity": 1,
"quantity_open": 0,
"entered_at": "2023-10-06T16:00:10.000000Z",
"exited_at": "2023-10-06T19:53:18.000000Z",
"entry_bid": "3.2000",
"entry_ask": "3.4000",
"entry_price": -3.35,
"exit_bid": "0.0500",
"exit_ask": "0.1000",
"exit_price": 0.05,
"current_bid": "0.0500",
"current_mid": "0.0750",
"current_ask": "0.1000",
"current_profit": "327.50",
"current_delta": "0.0294",
"current_spx_beta_weight": "-1.51",
"profit_dollars": "330.00",
"delta_at_entry": "0.2085",
"delta_at_exit": "0.0289",
"iv_at_entry": "0.1768",
"iv_at_exit": "0.0514",
"held_to_expiration": null,
"assigned": null,
"exercised": null
},
{
"status": "CLOSED",
"type": "CALL",
"action": "BUY_TO_OPEN",
"symbol": "SPXW_100623C4410",
"expiration_date": "2023-10-06",
"days_to_expiration": 0,
"days_to_expiration_at_exit": 0,
"strike_price": "4410.0",
"quantity": 1,
"quantity_open": 0,
"entered_at": "2023-10-06T16:00:10.000000Z",
"exited_at": "2023-10-06T19:53:18.000000Z",
"entry_bid": "0.0000",
"entry_ask": "0.0500",
"entry_price": 0.05,
"exit_bid": "0.0000",
"exit_ask": "0.0500",
"exit_price": -0,
"current_bid": "0.0000",
"current_mid": "0.0250",
"current_ask": "0.0500",
"current_profit": "-2.50",
"current_delta": "0.0000",
"current_spx_beta_weight": "11.00",
"profit_dollars": "-5.00",
"delta_at_entry": "0.0000",
"delta_at_exit": "0.0000",
"iv_at_entry": "0.0466",
"iv_at_exit": "0.0576",
"held_to_expiration": null,
"assigned": null,
"exercised": null
}
]
}
}
PUT
/v1/bots/positions/{number}/close
Close a specific bot position. 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 | Position number to close |
Header parameters
| API Token | string | required | Token from your Whispertrades account |
curl -X PUT "https://api.whispertrades.com/v1/bots/positions/example/close" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "API Token: example"
const response = await fetch("https://api.whispertrades.com/v1/bots/positions/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/positions/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/positions/example/close",
headers={
"Authorization": "Bearer YOUR_TOKEN",
"API Token": "example"
},
)
data = response.json()
print(data)
Response · 200
{
"success": true,
"message": "Close position initiated",
"data": {
"number": "S1TCAKFTMZ",
"status": "OPEN",
"bot": {
"name": "0 DTE 12:00 CCS",
"number": "1YJ351W9EY"
},
"broker_connection": {
"name": "Personal",
"number": "SATYKFAJQA",
"account_number": "938278493"
},
"is_paper": false,
"tags": "",
"symbol": "SPXW",
"type": "Call Credit Spread",
"entered_at": "2023-10-06T16:00:10.000000Z",
"exited_at": null,
"entry_bid": "3.1500",
"entry_ask": "3.4000",
"entry_price": -3.3,
"exit_bid": null,
"exit_ask": null,
"exit_price": null,
"broker_fee": "2.01",
"current_bid": "1.05",
"current_mid": "1.10",
"current_ask": "1.15",
"current_profit": "220.00",
"current_delta": "0.0294",
"entry_value": 330,
"exit_value": 5,
"max_risk": "8500.00",
"profit_dollars": null,
"starting_balance": "0.00",
"ending_balance": "0.00",
"underlying_at_entry": 4302.03,
"underlying_at_exit": null,
"vix_at_entry": "17.75",
"vix_at_exit": null,
"legs": [
{
"status": "OPEN",
"type": "CALL",
"action": "SELL_TO_OPEN",
"instrument": "SPXW_100623C4325",
"expiration_date": "2023-10-06",
"days_to_expiration": 0,
"days_to_expiration_at_exit": null,
"strike_price": "4325.0",
"quantity": 1,
"quantity_open": 1,
"entered_at": "2023-10-06T16:00:10.000000Z",
"exited_at": null,
"entry_bid": "3.2000",
"entry_ask": "3.4000",
"entry_price": -3.35,
"exit_bid": "0.0500",
"exit_ask": "0.1000",
"exit_price": 0.05,
"current_bid": "1.10",
"current_mid": "1.15",
"current_ask": "1.20",
"current_profit": "222.50",
"current_delta": "0.0294",
"profit_dollars": null,
"delta_at_entry": "0.2085",
"delta_at_exit": null,
"iv_at_entry": "0.1768",
"iv_at_exit": null,
"held_to_expiration": null,
"assigned": null,
"exercised": null
},
{
"status": "OPEN",
"type": "CALL",
"action": "BUY_TO_OPEN",
"symbol": "SPXW_100623C4410",
"expiration_date": "2023-10-06",
"days_to_expiration": 0,
"days_to_expiration_at_exit": 0,
"strike_price": "4410.0",
"quantity": 1,
"quantity_open": 1,
"entered_at": "2023-10-06T16:00:10.000000Z",
"exited_at": null,
"entry_bid": "0.0000",
"entry_ask": "0.0500",
"entry_price": 0.05,
"exit_bid": null,
"exit_ask": null,
"exit_price": null,
"current_bid": "0.0000",
"current_mid": "0.0250",
"current_ask": "0.0500",
"current_profit": "-2.50",
"current_delta": "0.0000",
"profit_dollars": "-5.00",
"delta_at_entry": "0.0000",
"delta_at_exit": null,
"iv_at_entry": "0.0466",
"iv_at_exit": null,
"held_to_expiration": null,
"assigned": null,
"exercised": null
}
]
}
}