Appearance
staff.quotes โ
2 methods on staff.quotes. Each returns the answer's data and throws NoviqaError on a failed answer.
list โ
GET
/admin/v1/quotesLatest 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 ยท querySymbol 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
400
invalid_input: invalid input401
auth.session_expired: session expired, sign in again403
auth.invalid_terminal: this terminal cannot be used here403
auth.otp_enrol_required: your group requires one-time codes: set them up to continue403
auth.password_change_required: you must change your password first403
forbidden: you do not have access to this action500
internal: something went wrongts
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/quotesThrow 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
askstringExact decimal as a string. Never parse it into a binary float for money or prices.
bidstringExact decimal as a string. Never parse it into a binary float for money or prices.
laststring0 = none Exact decimal as a string. Never parse it into a binary float for money or prices.
symbol_idintegerReturns
Promise<QuoteInjected>The answer's
data.Errors
400
invalid_input: invalid input401
auth.session_expired: session expired, sign in again403
auth.csrf_invalid: request refused: reload the page and try again403
auth.invalid_terminal: this terminal cannot be used here403
auth.otp_enrol_required: your group requires one-time codes: set them up to continue403
auth.password_change_required: you must change your password first403
forbidden: you do not have access to this action403
trade.invalid_price: invalid price404
not_found: not found500
internal: something went wrong504
trade.timeout: request timed outts
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>