HeyTraders Documentation

Core Market API

Core Market operations cover crypto discovery, historical/current prices, Signal DSL evaluation, screening, pair diagnostics, derivatives data, and canonical metadata.

Operations

MethodPathRequired scopePurpose
GET/v1/market/discoverpublicDiscover CMC-backed assets with query parameters
POST/v1/market/discoverresearchDiscover CMC-backed assets with a typed body
POST/v1/market/instruments/searchresearchSearch explicitly selected live, equity, crypto-asset, or Polymarket catalogs without price observations
GET/v1/market/ohlcvresearchRead historical candles
GET/v1/market/tickerresearchRead one current ticker
POST/v1/market/tickerresearchRead a bounded ticker batch
POST/v1/market/evaluateresearchEvaluate one Signal DSL expression
POST/v1/market/scanresearchFilter a canonical universe by a condition
POST/v1/market/rankresearchRank a canonical universe by an expression
GET/v1/market/funding-ratesresearchRead venue funding rates
POST/v1/command-data/market/funding-ratesresearchRead funding observations with filtering and a bounded row limit
POST/v1/command-data/market/premiumresearchCompare prices across matching instruments
POST/v1/command-data/market/arbitrageresearchCompare funding spreads against a base venue
POST/v1/command-data/market/longshortresearchRead long/short ratios
POST/v1/command-data/market/market-statsresearchRead statistics for requested instruments
POST/v1/command-data/market/screenerresearchRun a structured screener plan over a data source
POST/v1/market/metadata/batchpublicResolve display, precision, venue, and freshness metadata
GET/v1/market/cmc-rankingresearchRank CoinGecko assets by volume, market capitalisation, or 24-hour change; change rankings cover the 250 largest assets by market capitalisation
GET/v1/market/trendingresearchRead trending assets
GET/v1/market/top-gainersresearchRead top 24-hour gainers among CoinGecko's 250 largest assets by market capitalisation
GET/v1/market/newly-listedresearchRead newly listed assets
GET/v1/market/upcoming-listingsresearchRead upcoming-listing candidates
GET/v1/market/priceresearchRead a compact current-price resource
POST/v1/market/pairs/calculateresearchCalculate pair metrics across a universe
POST/v1/market/pairs/analyzeresearchAnalyze one aligned pair
GET/v1/market/fear-greedresearchRead the crypto Fear and Greed index
GET/v1/market/open-interestsresearchRead Binance Futures open interest
GET/v1/market/dvolresearchRead latest Deribit volatility index data
GET/v1/market/options-chainresearchRead one Deribit option-underlying dataset with filters, units, summaries, strike aggregates, and sorted rows
GET/v1/market/orderbookresearchRead a Binance spot or futures order book

Command-data list limits

Direct funding-rates, premium, and arbitrage requests default to limit=100. An explicit limit must be an integer from 1 through 200; invalid limits return HTTP 400 with error code invalid-command-data-arguments and details.retryable=false.

These three operations, longshort, and market-stats return count for the number of returned rows, total for rows matching filter before limit, and truncated when total > count. Filtering and sorting precede the limit.

Screener source.params retain their existing policy: an omitted source limit loads all matching rows, and an explicit source limit accepts 1 through 10000. The screener's own result limit is separate. Direct longshort and market-stats selection limits also retain the 1 through 10000 range with no default limit.

Identifier rules

OHLCV/ticker operations use an exchange plus venue symbol as defined by their schema. Scan and rank universes use strict EXCHANGE:BASE/QUOTE[:SETTLE] tickers because each item can target a different exchange. Do not add a separate exchange field to a scan/rank body.

metadata/batch is public because clients need display and precision metadata before rendering a market. Its freshness.degraded and warnings indicate an unavailable resolution; do not treat missing precision as permission to guess.

Discovery versus execution

discover, CMC ranking, trending, gainers, and listing endpoints describe broad-market assets. They do not prove that an exchange account can trade the asset. Re-resolve any execution target through Exchanges and Accounts before an order.

Expression and pair behavior

Use GET /v1/meta/indicators before constructing Signal DSL. Expression, condition, metric, and sort fields use the same supported DSL primitives. Pair calculations skip combinations without enough aligned candles. Single-pair analysis returns 422 DATA_UNAVAILABLE when it cannot establish at least the required aligned history; it does not return a successful {error: ...} body. Successful single-pair analysis also returns a bounded, endpoint-preserving series derived from the same aligned closes as the aggregate statistics. Indexed values start at 100; candles are aligned by their common source timestamps, and each spread and z-score point retains that timestamp.

Deribit option-chain contract

GET /v1/market/options-chain selects exactly one settlement family and one underlying. settlement=coin supports inverse BTC and ETH options; settlement=usdc supports linear BTC, ETH, AVAX, HYPE, SOL, TRX, and XRP options. The endpoint rejects unsupported combinations rather than mixing unlike underlyings.

expiry, type (C or P), and min_oi filter the selected dataset before the response summary and strike aggregation are calculated. sort_by accepts strike, open_interest, volume, mark_price, bid_price, or ask_price; ascending and top_n affect only the returned table rows. matching_count reports the number of rows before top_n, while count reports the rows in the response. facets publishes the supported underlyings, expiries, and contract types for the selected settlement dataset.

The response explicitly publishes oi_unit, volume_unit, price_unit, and strike_unit. Open interest and volume use the selected underlying asset; mark, bid, and ask prices use settlement_currency. Coin-settled option strikes use USD, while USDC-settled option strikes use USDC. strike_open_interest is calculated from all matching rows before table sorting and pagination, so changing table order does not change the chart dataset.

Upstream behavior

These are synchronous requests. External provider/downloader failure is an HTTP error, not an empty successful resource. Preserve the common 502, 503, and 504 distinctions and retry only idempotent reads.