Get started
Tracked tickers
Your watchlist is the unit: add and remove tickers by asking your agent or by code, the cap and the covered flag.
The tracked list is the account's watchlist on the site. The chart page, alerts, the API and the MCP server all read one list, so adding a ticker anywhere adds it everywhere. An account on Premium+ tracks up to 200.
What the list is for
The list is the user's own watchlist, kept in step with the site. Nothing else depends on it: pattern, history and chart calls answer for any ticker the nightly covers, tracked or not, and so do family track records, the scan, the universe and the demo.
Add and remove by asking your agent
Once TradingPal is connected (Quickstart, step 3), the list is a conversation away. The host calls add_tickers, remove_tickers and list_tracked_tickers for you, and the watchlist on the site changes with it:
"Track NVDA and AAPL."
→ add_tickers({"symbols": ["NVDA", "AAPL"]})
"Stop tracking TSLA."
→ remove_tickers({"symbols": ["TSLA"]})
"Which tickers am I tracking?"
→ list_tracked_tickers({})Asking about a ticker that is not on the list needs no change to it: "is anything forming on AMD?" answers straight away, and the list stays as it was.
Add and remove in code
PATCH /tickers adds the symbols in add and removes the ones in remove, leaving the rest alone. Send either list or both. Every added symbol must be a ticker TradingPal knows and the result must fit the cap, otherwise nothing changes and the error's details names the offending symbols; names in remove that are not tracked are ignored.
curl -X PATCH "https://api.tradingpal.io/api/v1/tickers" \
-H "Authorization: Bearer $TRADINGPAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"add": ["NVDA", "BRK.B"], "remove": ["TSLA"]}'Read the list
curl "https://api.tradingpal.io/api/v1/tickers" \
-H "Authorization: Bearer $TRADINGPAL_API_KEY"covered is true when the current nightly build includes the ticker. A tracked ticker that is not covered has no setups yet; the patterns route answers available: false with reason: "not_covered" rather than an error. GET /universe lists every symbol the nightly covers.
Replace the list
PUT /tickers sets the list from scratch and is all-or-nothing: if any symbol is invalid, unknown or over the cap, nothing changes and the error's details names the offending symbols. Use it to start over; for changes, PATCH keeps what you did not mention.
curl -X PUT "https://api.tradingpal.io/api/v1/tickers" \
-H "Authorization: Bearer $TRADINGPAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"symbols": ["NVDA", "AAPL", "BRK.B"]}'Symbols
Use the exchange symbol in upper case: BRK.B for a class share, BTC-USD for a crypto pair. Symbols are validated against the tickers TradingPal knows; invalid_symbol means the string is malformed, unknown_symbol means it is well formed but not a ticker we have.
The cap
cap comes back with every tickers response: 200 tickers on Premium+, the same limit as the watchlist on the site. Over the cap, PATCH and PUT fail with ticker_cap_exceeded and change nothing; the error's details says how many are tracked and how many were being added. The cap is per account, not per key: two keys on one account share the same list.