Skip to main content
All examples use fictitious link 17 and COPY_EXACT_CATALOG_ID. Replace them only with authenticated catalog data from the intended account. These examples are not executable trading defaults.

Discover the contract

An illustrative discovery response is:

Select a linked account

The numeric exchange_id is registry metadata, not a selector to override routing. exchange_link_id selects the immutable linked account and environment. Preserve the exact link for every following read and command. Do not switch automatically to another link if the intended one is unavailable.

Read the catalog

instrument_type is 1 for spot and 2 for derivatives. The response’s data.all contains symbols, data.hash identifies that catalog snapshot, and data.expiration is its cache expiry. data.selected can accompany an exact instrument_id selection. Reuse the returned hash on subsequent equivalent catalog reads; a matching hash returns 304 without a new body. Topology values are 1 spot, 2 linear derivative and 3 inverse derivative. Canonical quantities are base units for spot/linear instruments and quote-face units for inverse instruments. The exchange adapter owns venue contract conversion.

Decimal interpretation

This means price 70,123.45 and quantity 0.00025 in the field’s documented unit. Parse coefficients as arbitrary-precision integers/decimal strings. Scale controls decimal placement; it is not a lot or tick-size guarantee. Validate against the selected catalog’s increments and limits.

Spot settlement currency

Use the returned eligible settlement choice for the spot request’s trading_currency. quantity_asset describes the unit entered for quantities; it is a different field. Preserve eligible canonical values when modifying an existing spot position.

Balance snapshots

Only a complete snapshot can establish absence of an asset from that snapshot. An incomplete response is not a zero balance. Balances are an exact-link aggregate and require an unrestricted instrument policy plus read. Balance observations do not reserve funds against concurrent trading.

Fees and liquidation context

Fee schedules are link-wide; this endpoint requires a key without an instrument restriction. Read /v1/fee-rates/list?exchange_link_id=17; use data.fee_rates and its expiry instead of assuming a fee from a public venue tier. Keep decimal fields exact. Fees, minimums, available balances and supported order roles remain account/catalog-specific. /v1/liquidation/context requires the link, instrument and margin_mode=2 for isolated-margin context. This is a read model, not a guaranteed liquidation-price promise. Do not use a value from another instrument, margin mode or stale account state.

Position reads

  • /positions/list pages active or inactive positions for one link. Default offset is 0 and limit is 50; maximum limit is 200.
  • /positions/get reads one exact UUID/link/instrument tuple.
  • /positions/lookup?id=… resolves an authorized position UUID without trusting caller-supplied venue inference.
  • /positions/get-for-modification reads the current active Position publication, including its revision and order identities. It is not a prebuilt PositionRequest.
Respect has_more and any incomplete/error indication. A temporarily incomplete page is not evidence that a position disappeared. Use a new complete snapshot after reconnect or a state gap before making exposure-dependent decisions.