Skip to main content
Loading market data…
GET/api/v1/exchanges/{source}/instrumentsHobbyist tier+ · 30 req/min

Per-exchange instrument table — OI + 24h notional for each instrument.

Granular drill-in — one row per instrument the venue has been active on, with latest OI (USD), 24h trade notional, and latest trade/OI timestamps. Sorted OI-desc, volume-desc.

Path parameters

Segments of the URL path, validated server-side.

NameTypeRequiredDefaultDescription
sourcestringrequired
Exchange slug.

Query parameters

All query parameters are optional unless marked required.

NameTypeRequiredDefaultDescription
limitnumberoptional100
Rows. Max 500.
offsetnumberoptional0
Pagination offset.

Response shape

Always wrapped in the standard envelope. Nullable fields are explicitly marked — treat missing numeric data as a real data-source gap, not as an error.

data payloadtypescript
// Wrapped in the standard envelope:
// {
//   data: /* shape below */,
//   meta?: { total?: number; limit?: number; offset?: number; ... }
// }

Array<{
  instrumentId: number;
  canonicalSymbol: string;
  base: string;
  quote: string;
  kind: string;
  oiUsd: number;
  volume24hUsd: number;
  lastTradeTs: number | null;
  lastOiTs: number | null;
}>

Example

Copy the curl, replace YOUR_KEY with a real key from your dashboard, and run.

Requestbash
curl -sS "http://localhost:3000/api/v1/exchanges/binance_futures/instruments?limit=5" \
  -H "Authorization: Bearer cg_live_YOUR_KEY"
Responsejson
{
  "data": [
    {
      "instrumentId": 12,
      "canonicalSymbol": "BTCUSDT",
      "base": "BTC",
      "quote": "USDT",
      "kind": "perp",
      "oiUsd": 5800000000,
      "volume24hUsd": 41200000000,
      "lastTradeTs": 1744834810000,
      "lastOiTs": 1744834800000
    }
  ],
  "meta": { "total": 1, "limit": 5, "offset": 0 }
}

Next

Check the error code reference, or get an API key to try the request against your own account.