Skip to content

Markets and Exchange Contracts

BTC-PERP identifies one perpetual market. Its contracts array lists the native exchange contracts, including their settlement assets and order-size units.

Route Returns
GET /v1/markets Perpetual markets and their exchange contracts
GET /v1/markets/BTC-PERP All BTC contract mappings
GET /v1/venues All 19 exchange IDs, names, categories, and websites

These routes require no API key. List responses contain markets or venues, followed by pagination. An individual market returns its fields directly.

Each market has contract_type: "perpetual". Where supplied, a contract’s payoff_type distinguishes linear from inverse settlement. BTC, for example, includes USDT- and USDC-settled contracts alongside coin-settled inverse contracts.

Terminal window
# All exchange mappings for BTC
curl --fail-with-body 'https://api.trade8.xyz/v1/markets/BTC-PERP'
# OKX contracts settled in USDT
curl --fail-with-body \
'https://api.trade8.xyz/v1/markets?venue=okx&settlement_asset=USDT&limit=10'
# All exchanges, or decentralized exchanges only
curl --fail-with-body 'https://api.trade8.xyz/v1/venues'
curl --fail-with-body 'https://api.trade8.xyz/v1/venues?type=decentralized'

Markets accept instrument, venue, settlement_asset, limit, and cursor. Exchange lists accept type, limit, and cursor. Markets default to 10 instruments per page; exchange lists default to 50. Both accept a maximum of 200. Use the identifiers exactly as returned, such as BTC-PERP, binance, and USDT.

Each instrument appears once. Filters narrow its contracts array to matching exchanges and settlement assets. Empty matches return an empty list. An unknown individual instrument returns 404 INSTRUMENT_NOT_FOUND; invalid or repeated parameters return 400 INVALID_PARAMETER.

Results sort by instrument or exchange ID. Pass pagination.next_cursor to fetch the next page with the same filters. A null cursor marks the final page. If a refresh invalidates a cursor, restart from the first page.

const url = new URL('https://api.trade8.xyz/v1/markets');
url.searchParams.set('limit', '10');
let cursor;
do {
if (cursor) url.searchParams.set('cursor', cursor);
const response = await fetch(url);
const page = await response.json();
if (!response.ok) throw new Error(page.error.message);
for (const market of page.markets) {
console.log(market.instrument, market.contracts.map(c => c.venue));
}
cursor = page.pagination.next_cursor;
} while (cursor);

Use venue and venue_instrument to identify a native contract. GMX pool addresses also include network, because Arbitrum and Avalanche have separate pools.

Field Meaning
quantity_unit Native order-size unit: a base asset, USD, or contract
contract_size, contract_size_unit Face value of one lot-based contract, when supplied
price_unit Unit in which the contract price is quoted
settlement_asset Settlement currency for a single-currency contract
settlement_assets Pool settlement tokens when the token depends on the position side
quantity_step Published native size increment, when supplied
minimum_quantity, maximum_quantity Published limit-order size bounds
minimum_notional Minimum order value in the price unit
max_leverage Published exchange ceiling; account risk tiers can lower it

Native quantity units differ. Binance BTC/USDT uses BTC quantities. OKX BTC/USDT uses contract lots with a published BTC face value. Binance BTC/USD inverse uses contracts with a USD face value and BTC settlement. Read the units before converting an order size.

GMX records identify the pool, network, and settlement tokens. Pool pricing and size rules differ from order books, so those records omit order-book tick and lot increments. Kraken Multi-M records use the default USD profit-and-loss currency; collateral and payout elections are account settings.

price_rule.type identifies the published price constraint:

  • fixed_tick: prices are multiples of price_rule.tick_size.
  • significant_figures: non-integer prices must satisfy both max_significant_figures and max_decimal_places. integer_prices_allowed preserves the exchange’s integer-price exception.

Hyperliquid BTC allows five significant figures and one decimal place. 77000 is valid; 77000.1 has too many significant figures. Its quantity increment is 0.00001 BTC.

Optional rules appear when the source provides them. Use decimal arithmetic for prices, increments, and native contract conversions.

The current metadata release contains 592 instruments and 5,288 exchange contracts, captured on 31 August 2026. It covers the 19 exchanges in the integration directory, including Binance, Bybit, OKX, Hyperliquid, dYdX, and GMX.

Instrument metadata is bundled at release time. The HTTP Last-Modified header records its refresh time. Live prices, order books, and account permissions have separate endpoints. Exchange listings and rules can change between metadata releases.

The crypto universe uses published asset classifications and native symbols. Multiplier-token names remain separate instruments. The directory lists all integrated exchanges; each market includes only its verified exchange mappings.

last is the latest trade; mark_price supports exchange risk calculations; index_price tracks the reference index. Conditional orders select a trigger source and exchange.

Funding rates are decimal fractions for the supplied interval_hours: 0.0001 equals 0.01% for that interval. Read type and next_funding_at alongside the rate.

See the ticker, orderbook, funding, and exchange connectivity references for streaming messages. AI clients read the same market data through the public MCP tools.

Account access

Jurisdiction Restriction

Trade8 is not available in your jurisdiction.

You can still explore the product and read the documentation.

Explore the Docs