Skip to content

staff.quotes โ€‹

2 methods on staff.quotes. Each returns the answer's data and throws NoviqaError on a failed answer.

list โ€‹

GET/admin/v1/quotes

Latest raw prices

The latest price of each asked symbol as the feeds sent it (or as staff threw it in), without any group spread markup, sorted by symbol name. Symbols are not limited by group scope.

More details

Rights: the staff member needs every one of: prices.raw.

Parameters
idsstring ยท query
Symbol ids separated by commas, e.g. 1,2,3 (at most 1000). Absent: every active symbol within that bound.
Returns
Promise<Quote[]>
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
403forbidden: you do not have access to this action
500internal: something went wrong
ts
import { staff } from "@/lib/noviqa"

const data = await staff.quotes.list({
  ids: "string"
})
bash
curl -X GET "$NOVIQA_API_URL/admin/v1/quotes?ids=string" \
  -H "Authorization: Bearer $NOVIQA_TOKEN"
json
{
  "success": true,
  "code": "ok",
  "message": "done",
  "data": [
    {
      "ask": "1.08460",
      "bid": "1.08452",
      "digits": 5,
      "last": "1.08452",
      "symbol": "EURUSD",
      "symbol_id": 1,
      "time": "2026-09-25T10:15:00Z"
    }
  ],
  "request_id": "5b7f2c1e"
}
ts
staff.quotes.list(query?: { ids? }, options?: RequestOptions): Promise<market.Quote[]>

create โ€‹

POST/admin/v1/quotes

Throw a price into the flow

Publishes a staff price for one active symbol exactly like a feed price, flagged manual: every group, chart and pending order sees it, symbols priced from it follow, and the next feed price replaces it as usual. symbol_id and bid (above 0) are required; ask must be at least the bid; last is optional (0 = none, never negative). Prices are rounded to the symbol's digits (bid down, ask up); the answer carries the price as published and the market price it replaced (market_bid/market_ask, 0 when there was none). Unknown body fields are refused. Writes a journal line.

More details

Rights: the staff member needs every one of: prices.inject.

Request body
askstring
Exact decimal as a string. Never parse it into a binary float for money or prices.
bidstring
Exact decimal as a string. Never parse it into a binary float for money or prices.
laststring
0 = none Exact decimal as a string. Never parse it into a binary float for money or prices.
symbol_idinteger
Returns
Promise<QuoteInjected>
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
403forbidden: you do not have access to this action
403trade.invalid_price: invalid price
404not_found: not found
500internal: something went wrong
504trade.timeout: request timed out
ts
import { staff } from "@/lib/noviqa"

const data = await staff.quotes.create({
  ask: "1.08520",
  bid: "1.08500",
  last: "0",
  symbol_id: 1
})
bash
curl -X POST "$NOVIQA_API_URL/admin/v1/quotes" \
  -H "Authorization: Bearer $NOVIQA_TOKEN" \
  -H "Content-Type: application/json" \
  --data-raw '{
  "ask": "1.08520",
  "bid": "1.08500",
  "last": "0",
  "symbol_id": 1
}'
json
{
  "success": true,
  "code": "ok",
  "message": "done",
  "data": {
    "ask": "1.08460",
    "bid": "1.08452",
    "code": "ok",
    "last": "1.08452",
    "market_ask": "1.08452",
    "market_bid": "1.08452",
    "message": "string",
    "symbol_id": 1,
    "time": "2026-09-25T10:15:00Z"
  },
  "request_id": "5b7f2c1e"
}
ts
staff.quotes.create(body: models.QuoteInject, options?: RequestOptions): Promise<models.QuoteInjected>