Skip to content

trader.watchlists ​

4 methods on trader.watchlists. Each returns the answer's data and throws NoviqaError on a failed answer.

list ​

GET/trader/v1/watchlists

Watchlists

The account's saved symbol lists in the order they were made, symbols by name in the trader's order; symbols the group no longer trades are left out. An account with no saved list gets the server's default Market Watch as one unsaved list with id 0 (none when the default is empty): create it with POST on the first change. The same list is on every device of the account.

Parameters
X-HST-Accountstring · header
Intended signed-in login captured by the browser tab before dispatch and retained across retries. A mismatch returns auth.account_changed (409) before mutation or refresh rotation. This never selects or authorizes an account; omission preserves existing API client compatibility.
Returns
Promise<Watchlist[]>
The answer's data.
Errors
400invalid_input: invalid input
401auth.session_expired: session expired, sign in again
403auth.invalid_terminal: this terminal cannot be used here
403auth.otp_enrol_required: your group requires one-time codes: set them up to continue
403auth.password_change_required: you must change your password first
409auth.account_changed: the signed-in account changed; sign in again before continuing
500internal: something went wrong
ts
import { trader } from "@/lib/noviqa"

const data = await trader.watchlists.list()
bash
curl -X GET "$NOVIQA_API_URL/trader/v1/watchlists" \
  -H "Authorization: Bearer $NOVIQA_TOKEN"
json
{
  "success": true,
  "code": "ok",
  "message": "done",
  "data": [
    {
      "created_at": "2026-09-25T10:15:00Z",
      "id": 1,
      "name": "Ann Smith",
      "symbols": [
        "string"
      ],
      "updated_at": "2026-09-25T10:15:00Z"
    }
  ],
  "request_id": "5b7f2c1e"
}
ts
trader.watchlists.list(options?: RequestOptions): Promise<watchlist.Watchlist[]>

create ​

POST/trader/v1/watchlists

Create a watchlist

name is required (trimmed, 1-32 characters); symbols are names the group trades, at most 200, repeats dropped, order kept. At most 20 lists per account. Answers the saved list. An investor (read-only) session is refused with trade.read_only.

Parameters
X-HST-Accountstring · header
Intended signed-in login captured by the browser tab before dispatch and retained across retries. A mismatch returns auth.account_changed (409) before mutation or refresh rotation. This never selects or authorizes an account; omission preserves existing API client compatibility.
Request body
namestring
symbolsstring[]
replaces the list's symbols when sent
Returns
Promise<Watchlist>
The answer's data.
Errors
400invalid_input: invalid input
401auth.session_expired: session expired, sign in again
403auth.csrf_invalid: request refused: reload the page and try again
403auth.invalid_terminal: this terminal cannot be used here
403auth.otp_enrol_required: your group requires one-time codes: set them up to continue
403auth.password_change_required: you must change your password first
403trade.read_only: read-only access cannot trade
409auth.account_changed: the signed-in account changed; sign in again before continuing
500internal: something went wrong
ts
import { trader } from "@/lib/noviqa"

const data = await trader.watchlists.create({
  name: "Majors",
  symbols: [
    "EURUSD",
    "GBPUSD",
    "USDJPY"
  ]
})
bash
curl -X POST "$NOVIQA_API_URL/trader/v1/watchlists" \
  -H "Authorization: Bearer $NOVIQA_TOKEN" \
  -H "Content-Type: application/json" \
  --data-raw '{
  "name": "Majors",
  "symbols": [
    "EURUSD",
    "GBPUSD",
    "USDJPY"
  ]
}'
json
{
  "success": true,
  "code": "ok",
  "message": "done",
  "data": {
    "created_at": "2026-09-25T10:15:00Z",
    "id": 1,
    "name": "Ann Smith",
    "symbols": [
      "string"
    ],
    "updated_at": "2026-09-25T10:15:00Z"
  },
  "request_id": "5b7f2c1e"
}
ts
trader.watchlists.create(body: watchlist.Body, options?: RequestOptions): Promise<watchlist.Watchlist>

update ​

PATCH/trader/v1/watchlists/{id}

Change a watchlist

Renames the list and/or replaces its symbols (symbols replaces the whole list; same rules as create). No version. not_found for another account's list. An investor (read-only) session is refused with trade.read_only.

Parameters
X-HST-Accountstring · header
Intended signed-in login captured by the browser tab before dispatch and retained across retries. A mismatch returns auth.account_changed (409) before mutation or refresh rotation. This never selects or authorizes an account; omission preserves existing API client compatibility.
idinteger · pathrequired
Numeric id.
Request body
namestring
symbolsstring[]
replaces the list's symbols when sent
Returns
Promise<Watchlist>
The answer's data.
Errors
400invalid_input: invalid input
401auth.session_expired: session expired, sign in again
403auth.csrf_invalid: request refused: reload the page and try again
403auth.invalid_terminal: this terminal cannot be used here
403auth.otp_enrol_required: your group requires one-time codes: set them up to continue
403auth.password_change_required: you must change your password first
403trade.read_only: read-only access cannot trade
404not_found: not found
409auth.account_changed: the signed-in account changed; sign in again before continuing
500internal: something went wrong
ts
import { trader } from "@/lib/noviqa"

const data = await trader.watchlists.update(1, {
  symbols: [
    "EURUSD",
    "XAUUSD"
  ]
})
bash
curl -X PATCH "$NOVIQA_API_URL/trader/v1/watchlists/1" \
  -H "Authorization: Bearer $NOVIQA_TOKEN" \
  -H "Content-Type: application/json" \
  --data-raw '{
  "symbols": [
    "EURUSD",
    "XAUUSD"
  ]
}'
json
{
  "success": true,
  "code": "ok",
  "message": "done",
  "data": {
    "created_at": "2026-09-25T10:15:00Z",
    "id": 1,
    "name": "Ann Smith",
    "symbols": [
      "string"
    ],
    "updated_at": "2026-09-25T10:15:00Z"
  },
  "request_id": "5b7f2c1e"
}
ts
trader.watchlists.update(id: number, body: watchlist.Body, options?: RequestOptions): Promise<watchlist.Watchlist>

delete ​

DELETE/trader/v1/watchlists/{id}

Delete a watchlist

not_found for another account's list. An investor (read-only) session is refused with trade.read_only.

Parameters
X-HST-Accountstring · header
Intended signed-in login captured by the browser tab before dispatch and retained across retries. A mismatch returns auth.account_changed (409) before mutation or refresh rotation. This never selects or authorizes an account; omission preserves existing API client compatibility.
idinteger · pathrequired
Numeric id.
Returns
Promise<null>
The answer's data.
Errors
400invalid_input: invalid input
401auth.session_expired: session expired, sign in again
403auth.csrf_invalid: request refused: reload the page and try again
403auth.invalid_terminal: this terminal cannot be used here
403auth.otp_enrol_required: your group requires one-time codes: set them up to continue
403auth.password_change_required: you must change your password first
403trade.read_only: read-only access cannot trade
404not_found: not found
409auth.account_changed: the signed-in account changed; sign in again before continuing
500internal: something went wrong
ts
import { trader } from "@/lib/noviqa"

const data = await trader.watchlists.delete(1)
bash
curl -X DELETE "$NOVIQA_API_URL/trader/v1/watchlists/1" \
  -H "Authorization: Bearer $NOVIQA_TOKEN"
json
{
  "success": true,
  "code": "ok",
  "message": "done",
  "data": null,
  "request_id": "5b7f2c1e"
}
ts
trader.watchlists.delete(id: number, options?: RequestOptions): Promise<null>