Skip to main content
The 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.
Scales are per contract and are frequently 0. A contract with priceScale: 0 takes the display price unchanged; one with qtyScale: 0 takes whole units only. Reusing another contract’s scale, or a scale copied from documentation, misprices an order by a factor of ten or more without any error from the server. Read priceScale and qtyScale from the contract object you are about to trade — every session, never cached across a config change.

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 name is 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, or tiers.
  • The matched contract’s status is 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

The response mixes tradeable and untradeable contracts. The second entry above is Delisted — it is returned in full, with a complete and plausible set of parameters, and nothing else marks it as unusable. Filter on status before anything else.Note also that priceScale is 0 for the contract above: its raw price equals its display price. Scales differ per contract and 0 is common.

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.
Resolve a contract in this order:
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’s szDecimals:
string
The factor that converts price_raw × size_raw into the settlement coin’s raw units. It is derived, not independent:
Contract creation enforces 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.
Market orders are not price-band checked. Because you supply the execution price yourself, nothing bounds how far a market order may cross the book — a mistyped price will sweep it. What limits the damage is the margin pre-check, which charges the full difference between your submitted price and the mark price without dividing by leverage. Compute the market price from the mark price and your account’s slippage allowance, and validate it yourself before signing.

Worked example

Using a contract with priceScale: 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.
marketSlippageBps exists at two different scopes with the same name and different meanings. The one in this response is a contract field. The one returned by userAccount, and written by updateSlippageSetting, is an account setting scoped to (account, market deployer) and is the one that governs the price you compute for a market order. Do not substitute one for the other.
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.