Get Instruments

List all instruments available for trading. Clients should call this once on startup and refresh on a timer or when an If-None-Match request indicates a new version.

GET /instruments
GET /instruments/{symbol}

Auth: Public. No token required.

Available Symbols

All instruments are USDC-quoted linear perpetuals. Symbols follow the BASE-USDC-PERP format.

SymbolBase asset
AAVE-USDC-PERPAAVE
ADA-USDC-PERPADA
APT-USDC-PERPAPT
ARB-USDC-PERPARB
AVAX-USDC-PERPAVAX
BNB-USDC-PERPBNB
BTC-USDC-PERPBTC
DOGE-USDC-PERPDOGE
DOT-USDC-PERPDOT
ETH-USDC-PERPETH
HYPE-USDC-PERPHYPE
LINK-USDC-PERPLINK
NEAR-USDC-PERPNEAR
PEPE-USDC-PERPPEPE
POL-USDC-PERPPOL
SOL-USDC-PERPSOL
SUI-USDC-PERPSUI
TRX-USDC-PERPTRX
UNI-USDC-PERPUNI
XRP-USDC-PERPXRP

This table is a snapshot; GET /instruments below is always the source for the live set (status, tick sizes, fees, etc.).

List All Instruments

curl https://api.godarkdex.com/api/v1/instruments

Response

{
  "code": 0,
  "data": {
    "version": 842,
    "updated_at": "2026-04-20T00:00:00Z",
    "instruments": [
      {
        "symbol": "BTC-USDC-PERP",
        "base_asset": "BTC",
        "quote_asset": "USDC",
        "type": "perp",
        "status": "trading",
        "tick_size": 0.1,
        "step_size": 0.001,
        "min_qty": 0.001,
        "max_qty": 1000,
        "min_notional": 25,
        "contract_size": 1,
        "margin_asset": "USDC",
        "max_leverage": 20,
        "maker_fee_bps": 2,
        "taker_fee_bps": 5,
        "initial_margin_ratio": 0.05,
        "maintenance_margin_ratio": 0.025,
        "listed_at": "2026-01-01T00:00:00Z",
        "expires_at": null
      }
    ]
  },
  "timestamp": "2026-04-20T10:30:00.123Z",
  "request_id": "req_01HXYZ..."
}

Single Instrument

curl https://api.godarkdex.com/api/v1/instruments/BTC-USDC-PERP

Returns the same instrument object under data (not wrapped in an instruments array).

Field Reference

FieldTypeDescription
symbolstringCanonical id used on all other endpoints
base_assetstringBase asset (e.g. BTC)
quote_assetstringQuote asset (always USDC)
typestringperp (currently the only type)
statusstringtrading, halted, pre-open, or delisted
tick_sizenumberMinimum price increment (quote asset)
step_sizenumberMinimum quantity increment (base asset)
min_qtynumberMinimum order quantity
max_qtynumberMaximum order quantity
min_notionalnumberMinimum order notional (USDC)
contract_sizenumberContract multiplier (1 for linear perps)
margin_assetstringCollateral asset (always USDC)
max_leveragenumberMaximum leverage permitted on this instrument
maker_fee_bpsnumberDefault maker fee (negative = rebate). See caveat below.
taker_fee_bpsnumberDefault taker fee. See caveat below.
initial_margin_rationumberInitial margin requirement (see Margin & Liquidation)
maintenance_margin_rationumberMaintenance margin requirement (see Margin & Liquidation)
listed_atstringListing timestamp (RFC 3339)
expires_atstring | nullExpiry timestamp (always null for perps)

Fee Authority

maker_fee_bps and taker_fee_bps on this endpoint are instrument-level defaults, not your effective fees. Your actual fees are driven by your VIP tier and always live at GET /account/vip. When they differ, /account/vip wins.

Cache Semantics

The list response carries:

Responses include an ETag header matching version. Clients should cache the list and pass If-None-Match: "<etag>" on subsequent calls; unchanged lists return 304 Not Modified with an empty body.

Instrument Status Changes

Intraday status changes (halts, new listings) are pushed on the public instruments WebSocket channel — subscribe to receive snapshot on connect and update on each change. Clients that don't need reactivity can just refresh on a timer instead.