configs query returns all coin definitions and contract configurations available on the exchange. Use it to resolve contract IDs for the a field, read the decimal scales that convert display values to the raw integers the wire protocol expects, obtain tick and step sizes for validation, and inspect leverage tiers for margin calculations.
This endpoint is the authority
Three sources describe the API, and they are not interchangeable:
Every numeric value in every example on this site is illustrative and must not be used to build an order. Resolve the real value from
configs at runtime, for the exact contract you are trading.
Stop conditions
An automated client must halt and surface the problem rather than improvise when any of the following holds. Substituting a different contract is never correct.- The target contract
nameis absent from the response. - More than one contract shares the target
name. - The contract object is missing any field the order path needs:
priceScale,qtyScale,tickSize,stepSize,minTradeNtl, ortiers. - The matched contract’s
statusis anything other than"Active".
There is no version or snapshot identifier on this response. You cannot currently prove that a quote, a validation pass, and a signature all used the same configuration. The only change signal available is the
version field pushed by the config WebSocket channel — subscribe to it, and re-fetch configs and re-validate any unsigned order when the version changes. Treat a configuration change between validation and signing as a reason to abort and revalidate.Request
string
required
Must be
"configs".integer
Filter results by market deployer. Use
0 or omit to return configuration for all deployers. Pass a positive integer to restrict results to a specific deployer.Response
Discovery and filtering
string
Whether the contract is tradeable.
"Active" means it is; "Delisted" means it is not. Treat any value other than "Active" as untradeable — the set of values is not closed, so fail safe rather than enumerating.This is the primary filter. A delisted contract is returned with a complete parameter set and is indistinguishable from a live one on any other field.Coin
status is independent of contract status. A coin stays Active after its contract is delisted, so a coin being Active tells you nothing about whether you can trade it. Always check the contract.1
Filter to status Active
Discard every contract whose
status is not exactly "Active".2
Match on name
Find your target by
name. Never select by contractId — IDs are server-assigned and do not map to any fixed pair.3
Stop if the result is not exactly one contract
Zero matches, or more than one, is a stop condition. Do not fall back to another contract.
4
Read that contract's own parameters
Take
priceScale, qtyScale, tickSize, stepSize and tiers from the matched object only.Fee defaults
integer
Contract-level default taker fee rate in basis points. The rate actually applied to your account resolves through the fee hierarchy — read
effectiveTakerBps from userAccount for the value in force.integer
Contract-level default maker fee rate in basis points, resolved the same way as
defaultTakerBps.Notional, and the limits enforced on it
Order validation works on notional, not on price or size alone. Notional is an integer in the settlement coin’s raw units — the quote coin’sszDecimals:
string
The factor that converts Contract creation enforces
price_raw × size_raw into the settlement coin’s raw units. It is derived, not independent:priceScale + qtyScale ≤ quoteCoin.szDecimals, so the exponent is never negative. Read the value from this response rather than recomputing it.string
Minimum notional, in settlement-coin raw units. An order whose notional is below this is rejected with
notional below minTradeNtl.string
Maximum notional for a single order, in settlement-coin raw units, compared against that order’s own
price × size. Exceeding it is rejected with notional exceeds maxPositionNotional.integer
How far a limit order’s price may deviate from the mark price, in basis points: the order is rejected with
price exceeds priceBandBps when |price − mark| > mark × priceBandBps / 10000.The band is not applied when priceBandBps is 0, when no mark price has been published yet, or to market orders.Worked example
Using a contract withpriceScale: 0, qtyScale: 4, notionalScaleMultiplier: "100", settled in a coin with szDecimals: 6 — buying 0.01 at a display price of 70000:
Check that notional against
minTradeNtl and maxPositionNotional before signing; both are expressed in the same raw units.
Fields returned but not specified
The response carries the fields below. Their semantics are not part of the published contract, so do not build order sizing, margin, or risk logic on them. They are listed here so that an automated client can recognise and ignore them rather than infer a meaning from the name.Treat any field not described on this page as reserved. A future response may add fields; ignore unknown keys rather than failing, and do not rely on a field’s continued presence until it is specified here.
Contract Fields
integer
The unique contract identifier. Use this as the
a field when placing, modifying, or canceling orders.string
Human-readable contract name (e.g.
"BTC-USDC").string
Minimum price movement expressed as a raw integer string. All order prices must be multiples of this value.
string
Minimum quantity movement expressed as a raw integer string. All order quantities must be multiples of this value.
integer
Decimal exponent for prices. Divide any raw price by
10^priceScale to get the human-readable display value.integer
Decimal exponent for quantities. Divide any raw quantity by
10^qtyScale to get the human-readable display value.string
The initial leverage applied to new positions on this contract.
string
URL of the contract’s icon, or an empty string when none is set — never
null. The host is not guaranteed and varies between contracts, so treat the value as an opaque URL: do not derive other URLs from it, and do not assume it is served from an Upsidemax domain.integer
Funding settlement interval in seconds; funding settles once per interval. The value comes from a fixed set:
3600 (1h), 7200 (2h), 14400 (4h), or 28800 (8h).string
Minimum notional value per trade, expressed as a raw integer string.
Tier[]
Leverage tier schedule for this contract. Each tier applies up to
upperBound position size.