marketdata.v1.MarketDataService
GetSpotConfig
Retrieve a cacheable snapshot of spot assets and pairs, including precision and trading constraints.
Request
curl --request POST \ \
--url 'https://api.testnet.polyester.com/marketdata.v1.MarketDataService/GetSpotConfig' \
--header 'Content-Type: application/json' \
--header 'Connect-Protocol-Version: 1' \
--data '{}'Responses
{
"assets": [
{
"asset": "BTC",
"ledgerId": 1,
"marketDataVolumeScale": 123456,
"name": "Bitcoin",
"quantityDisplayDecimals": 8,
"quantityScale": 8
}
],
"maxOpenOrdersTotal": 1,
"pairs": [
{
"allowBuyFeeFromBase": false,
"baseAsset": "BTC",
"baseQuantityScale": 8,
"defaultMarketSlippageBpsBuy": 1,
"defaultMarketSlippageBpsSell": 1,
"delistingAt": "2025-01-01T00:00:00Z",
"listingAt": "2025-01-01T00:00:00Z",
"marketdata": {
"orderbookPriceBuckets": [
0.1
]
},
"maxClientRefDriftBps": 1,
"maxLimitQtyBase": "100000",
"maxMarketNotionalQuote": "123.45",
"maxMarketQtyBase": "100000",
"maxOpenOrdersPerPair": 1,
"maxOrderNotionalQuote": "123.45",
"minNotionalQuote": "10",
"minQtyBase": "0.0001",
"quoteAsset": "USDT",
"quoteQuantityScale": 6,
"referencePriceScale": 1,
"status": "PAIR_STATUS_ENABLED",
"stepSize": "0.0001",
"symbol": "BTC-USDT",
"symbolId": 1,
"tickSize": "0.01"
}
],
"tsSec": "1735689600"
}marketdata.v1.GetSpotConfigRequestmarketdata.v1.GetSpotConfigResponseAsset code, e.g. "USDT" or "BTC".
Stable numeric asset id used by account, balance, and order APIs.
Human-friendly display name, e.g. "Bitcoin".
Suggested decimal precision for displaying user-facing asset amounts.
Decimal scale (0..18) for this asset's order quantities and other fields that explicitly reference quantity_scale. A scale of 8 represents one whole asset as 100000000 in those fields. Account balance amounts use fixed 18-decimal units independently of this value.
Integer scale for public candle and market-overview base volume (0..18).
Stable numeric pair id used by low-latency ConnectRPC requests and streams.
Trading pair symbol, e.g. "BTC-USDT".
Base asset code. For BTC-USDT, this is "BTC".
Quote asset code. For BTC-USDT, this is "USDT".
Minimum allowed price increment as a decimal string in quote-asset units. Prices use 9 decimal places in scaled integer fields; for example "0.01" means orders must be priced in 0.01 quote-asset increments.
Minimum allowed quantity increment as a decimal string in base-asset units.
Minimum order notional as a decimal string in quote-asset units.
Minimum order quantity as a decimal string in base-asset units.
Whether BUY order fees may be paid from the base asset instead of the spent quote asset when the order request selects the base fee asset.
Quantity scale for base-asset amounts in this pair.
Quantity scale for quote-asset amounts in this pair.
Suggested order book aggregation bucket sizes in quote-asset price units, e.g. 0.01, 0.1, 1, or 10.
Scheduled listing timestamp. When unset, the pair has no explicit future listing time.
Scheduled delisting timestamp. When unset, the pair has no explicit delisting time.
Current trading status.
Default MARKET order slippage cap for BUY orders, in basis points (1 bp = 0.01%). A request-level slippage setting can override this value.
Default MARKET order slippage cap for SELL orders, in basis points (1 bp = 0.01%). A request-level slippage setting can override this value.
Maximum allowed drift between client reference price and server reference price for MARKET orders, in basis points (1 bp = 0.01%), when client reference pricing is used.
Integer scale for composite reference prices in candle responses (0..18). Primary market and execution prices use the fixed scale 9.
Largest quantity of one limit order, as a decimal string in base-asset units. A replace is checked on its new total less the quantity already filled. An order above it is rejected with MAX_QTY. Absent when the pair has no maximum.
Largest quantity of one market order, as a decimal string in base-asset units. A market order sized by quote amount is checked once converted to base. An order above it is rejected with MAX_QTY. Absent when the pair has no maximum.
Maximum per-order notional as a decimal string in quote-asset units. Base-sized orders are checked using quantity times limit price, or market protection price, without rounding. For quote-sized buys, the entire all-in maximum quote debit must also fit this maximum. Exceeding it returns MAX_NOTIONAL. Absent when no maximum is configured.
The venue's default limit on resting orders a typical account may hold on this pair at once: good-till-cancelled and good-till-date orders that have not ended. Immediate-or-cancel, fill-or-kill and market orders never count, and a replaced order keeps its place. An order past it is rejected with MAX_OPEN_ORDERS_PER_PAIR. An account may have a lower limit of its own; that is not part of this public configuration and would be returned by an account-scoped read.
Additional maximum notional for market orders as a decimal string in quote-asset units. Base-sized market orders are valued at the buy protection price or the sell reference price before slippage, without rounding. For quote-sized market buys, the entire all-in maximum quote debit must also fit this maximum. Exceeding it returns MAX_NOTIONAL. Absent when no maximum is configured.
Snapshot generation timestamp, in seconds since the Unix epoch (UTC).
The venue's default limit on resting orders a typical account may hold across all pairs together: good-till-cancelled and good-till-date orders that have not ended. Immediate-or-cancel, fill-or-kill and market orders never count, and a replaced order keeps its place. An order past it is rejected with MAX_OPEN_ORDERS_TOTAL. Each pair's own limit is PairConfig.max_open_orders_per_pair. An account may have a lower limit of its own; that is not part of this public configuration and would be returned by an account-scoped read.
| Key | HTTP status | Connect code | Error | When |
|---|---|---|---|---|
| bad-request | 400 | invalid_argument | Bad Request | The request was malformed or missing required parameters. |
| invalid-argument | 400 | invalid_argument | Invalid Argument | One or more request arguments are invalid. |
| not-found | 404 | not_found | Not Found | The requested resource was not found. |
| unavailable | 503 | unavailable | Service Unavailable | The service is temporarily unavailable. |
| unknown-symbol | 404 | invalid_argument | Unknown Symbol | The requested trading pair symbol was not found. |
| upstream-error | 502 | unavailable | Upstream Error | An upstream service error occurred. |