Skip to main content
Loading market data…
GET/api/v1/instrumentsFree tier · 10 req/min

Paginated instrument directory — richer sibling of `/api/v1/symbols`.

Same underlying instrument table as `/api/v1/symbols`, exposed with consistent filter semantics under the instruments namespace.

Query parameters

All query parameters are optional unless marked required.

NameTypeRequiredDefaultDescription
limitnumberoptional500
Rows per page. Max 5000.
offsetnumberoptional0
Pagination offset.
basestringoptional
Exact base-asset filter.
kindenumoptional
Instrument family.
perpspotfutureoption
searchstringoptional
Prefix search on canonical symbol.

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<{
  id: number;
  canonicalSymbol: string;
  base: string;
  quote: string;
  kind: "perp" | "spot" | "future" | "option";
  expiry: string | null;
  strike: number | null;
  optionType: "C" | "P" | 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/instruments?base=BTC&kind=perp&limit=5"
Responsejson
{
  "data": [
    {
      "id": 12,
      "canonicalSymbol": "BTCUSDT",
      "base": "BTC",
      "quote": "USDT",
      "kind": "perp",
      "expiry": null,
      "strike": null,
      "optionType": null
    }
  ],
  "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.