GET
/api/v1/instruments/{symbol}Free tier · 10 req/minInstrument detail + activity counters (trade/OI/funding).
Resolve one instrument by canonical symbol. The `activity` bag is the fast way to tell whether an instrument is actively reporting — non-zero counts and fresh `last*Ts` values mean the pipeline is healthy.
Path parameters
Segments of the URL path, validated server-side.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| symbol | string | required | — | Canonical symbol (e.g. `BTCUSDT`). |
Query parameters
This endpoint takes no query parameters.
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; ... }
// }
{
id: number;
canonicalSymbol: string;
base: string;
quote: string;
kind: string;
expiry: string | null;
strike: number | null;
optionType: string | null;
activity: {
tradeCount: number;
openInterestCount: number;
fundingCount: number;
lastTradeTs: number | null;
lastOiTs: number | null;
lastFundingTs: 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/instruments/BTCUSDT"Responsejson
{
"data": {
"id": 12,
"canonicalSymbol": "BTCUSDT",
"base": "BTC",
"quote": "USDT",
"kind": "perp",
"expiry": null,
"strike": null,
"optionType": null,
"activity": {
"tradeCount": 1250000,
"openInterestCount": 48200,
"fundingCount": 620,
"lastTradeTs": 1744834810000,
"lastOiTs": 1744834800000,
"lastFundingTs": 1744833600000
}
}
}Next
Check the error code reference, or get an API key to try the request against your own account.