bingx-coinm-market
BingX Coin-M (CSwap) Market Data
Public market data for BingX Coin-M inverse perpetual futures. No HMAC signature required, but a timestamp query parameter is required for all endpoints.
Coin-M contracts are coin-margined (settled in the base asset, e.g., BTC). Symbol format is BASE-USD (e.g., BTC-USD, ETH-USD).
Quick Reference
| Endpoint | Method | Description | Required | Optional | Authentication |
|---|---|---|---|---|---|
/openApi/cswap/v1/market/contracts |
GET | Contract specifications | None | None | No |
/openApi/cswap/v1/market/depth |
GET | Order book bids & asks | symbol | None | No |
/openApi/cswap/v1/market/klines |
GET | OHLCV candlestick data | symbol, interval | startTime, endTime, limit | No |
/openApi/cswap/v1/market/premiumIndex |
GET | Mark price & current funding rate | None | symbol | No |
/openApi/cswap/v1/market/openInterest |
GET | Total open interest | symbol | None | No |
/openApi/cswap/v1/market/ticker |
GET | 24h price change statistics | None | symbol | No |
Parameters
Common Parameters
- symbol: Trading pair in
BASE-USDformat (e.g.,BTC-USD,ETH-USD). Note: Coin-M usesUSD, notUSDT. - limit: Number of results to return. Default and max vary per endpoint.
- startTime: Start timestamp in milliseconds (e.g.,
1735693200000) - endTime: End timestamp in milliseconds (e.g.,
1735693200000) - interval: Kline/candlestick interval (see Enums below)
Enums
- interval:
1m|3m|5m|15m|30m|1h|2h|4h|6h|12h|1d|3d|1w|1M
Parameter Validation Rules
- symbol: Must match
^[A-Z0-9]+-USD$; max 20 characters (e.g.,BTC-USD). Coin-M usesUSD, notUSDT - limit: Positive integer; default and max vary per endpoint
- startTime / endTime: Unix timestamps in milliseconds;
endTimemust be ≥startTime - interval: Must exactly match one of the enum values above
Quick Start
Base URLs: see references/base-urls.md
TypeScript helper:
CONSTRAINT: You MUST copy the
coinmMarketfunction below verbatim when generating code. Do NOT rewrite the request or JSON parsing logic. Only modify: (1)BASE_URLSentries for custom environments, (2) business parameters passed tocoinmMarket.
import JSONBig from "json-bigint";
const JSONBigParse = JSONBig({ storeAsString: true });
// Base URLs — see references/base-urls.md for all environments
// Domain priority: .com is mandatory primary; .pro is fallback for network/timeout errors ONLY.
const BASE_URLS = ["https://open-api.bingx.com", "https://open-api.bingx.pro"];
function isNetworkOrTimeout(e: unknown): boolean {
if (e instanceof TypeError) return true;
if (e instanceof DOMException && e.name === "AbortError") return true;
if (e instanceof Error && e.name === "TimeoutError") return true;
return false;
}
async function coinmMarket(
path: string,
params: Record<string, string | number> = {}
): Promise<unknown> {
const query = new URLSearchParams(
Object.entries(params).map(([k, v]) => [k, String(v)])
).toString();
for (const base of BASE_URLS) {
try {
const url = `${base}${path}${query ? `?${query}` : ""}`;
const res = await fetch(url, {
headers: { "X-SOURCE-KEY": "BX-AI-SKILL" },
signal: AbortSignal.timeout(10000),
});
const json = JSONBigParse.parse(await res.text());
if (json.code !== 0) throw new Error(`BingX error ${json.code}: ${json.msg}`);
return json.data;
} catch (e) {
if (!isNetworkOrTimeout(e) || base === BASE_URLS[BASE_URLS.length - 1]) throw e;
}
}
}
Code Usage Rules
- MUST copy
coinmMarketverbatim -- do not simplify or rewrite - MUST use
json-bigint(JSONBigParse.parse) for response parsing -- notJSON.parse - MUST include
X-SOURCE-KEY: BX-AI-SKILLheader on every request - MUST NOT remove the domain fallback loop or
isNetworkOrTimeoutcheck
Common Calls
24h ticker price for BTC-USD:
const ticker = await coinmMarket("/openApi/cswap/v1/market/ticker", {
symbol: "BTC-USD",
});
// ticker.lastPrice, ticker.priceChangePercent, ticker.volume
Order book depth for BTC-USD:
const depth = await coinmMarket("/openApi/cswap/v1/market/depth", {
symbol: "BTC-USD",
});
// depth.bids: [price, qty][], depth.asks: [price, qty][]
1-hour klines (last 100 candles):
const klines = await coinmMarket("/openApi/cswap/v1/market/klines", {
symbol: "BTC-USD",
interval: "1h",
limit: 100,
});
// Each item: [openTime, open, high, low, close, volume, closeTime]
Mark price & current funding rate:
const premium = await coinmMarket("/openApi/cswap/v1/market/premiumIndex", {
symbol: "BTC-USD",
});
// premium.markPrice, premium.lastFundingRate, premium.nextFundingTime
Open interest:
const oi = await coinmMarket("/openApi/cswap/v1/market/openInterest", {
symbol: "BTC-USD",
});
// oi.openInterest, oi.symbol, oi.time
All contract specifications:
const contracts = await coinmMarket("/openApi/cswap/v1/market/contracts");
// Array of contract objects: symbol, pricePrecision, minTickSize, minTradeValue, status
Additional Resources
For complete parameter descriptions, optional fields, and full response schemas, see api-reference.md.
Agent Interaction Rules
cswap-market provides public read-only market data. No HMAC signature required (only timestamp parameter needed), no CONFIRM needed. The interaction goal is to collect query parameters.
Note: Coin-M contract trading pair format is
BASE-USD(e.g.BTC-USD), notBASE-USDT.
Operation Identification
When the user's request is vague (e.g. "check Coin-M market" or "look at BTC inverse contract"), first identify what type of data they want to query:
Please select the market data type:
- Price / 24h change — ticker
- Order book depth — depth
- K-lines / Candlesticks — klines
- Mark price / Funding rate — premiumIndex
- Open interest — openInterest
- Contract specification list — contracts
When symbol is missing
Applicable endpoints: depth, klines, openInterest
Please select a trading pair (or type another):
- BTC-USD
- ETH-USD
- BNB-USD
- Other (enter manually, format: BASE-USD)
If the trading pair can be inferred from context (e.g. "BTC K-lines today" or "Ethereum inverse contract funding rate"), infer it automatically without asking again.
When interval is missing (klines endpoint only)
Please select a K-line interval:
- 1m (1 minute)
- 5m (5 minutes)
- 15m (15 minutes)
- 1h (1 hour)
- 4h (4 hours)
- 1d (daily)
- 1w (weekly)
limit handling
- klines: default 100, no need to ask — inform the user "returning the most recent 100 K-lines by default"
Endpoints where symbol is optional
symbol is optional for ticker and premiumIndex. If the user does not specify, query all contracts and inform the user; if a trading pair is specified, query only that pair.