Futures volume for one coin
Self-data layer: futures volume for one coin
/api/sd/volumeRequest
Query parameters
| Name | Type | Required | Default | Allowed values | Description |
|---|---|---|---|---|---|
| coin | string | Required | — | — | Coin symbol; 400 when missing. Alias: `base`. Example: BTC |
Example request
curl -s "https://www.coinboss.com/api/sd/volume?coin=BTC"Response fields
The field table is generated from real responses, so it lists exactly what the endpoint returns. Paths use a[] for array items and {*} for objects keyed by a dynamic name such as a coin or an exchange.
| Field | Type | Unit | Description |
|---|---|---|---|
| success | boolean | — | true when the request succeeded. On failure the body is `{ success: false, code, error, request_id }`. |
| coin | string | — | Coin symbol, upper case (for example BTC). |
| now | number | ms | Server time when the response was built. |
| futures | object | — | Futures market block or value. |
| futures.total_usd | number | USD | 24h futures volume across exchanges (USD notional). |
| futures.n_exchanges | number | — | Number of exchanges contributing. |
| futures.by_exchange | array | — | Per-exchange breakdown. |
| futures.by_exchange[] | object | — | Per-exchange breakdown. |
| futures.by_exchange[].exchange | string | — | Exchange id, lower case (for example `binance`). |
| futures.by_exchange[].vol_usd | number | USD | Volume in USD notional. |
| futures.by_exchange[].legacy_usd | number | USD | Part of the volume that comes from the USDT-perpetual ticker set. |
| futures.by_exchange[].sd_usd | number | USD | Part that comes from additional contracts (USDC, coin-margined, delivery) already included. |
| futures.by_exchange[].share_pct | number | % | Share of the total. |
| futures.change_24h | object | — | 24h change. |
| futures.change_24h.pct | number | % | Percentage. |
| futures.change_24h.cur | number | — | Current value. |
| futures.change_24h.prev | number | — | Previous value (baseline). |
| futures.change_24h.n_matched | number | — | Items present at both ends of the comparison. |
| futures.change_24h.n_total | number | — | Items present now. |
| futures.change_24h.prev_ts | number | ms | Time of the baseline snapshot. |
| futures.change_24h.basis | string | — | Futures price minus spot price, or the basis block. |
| futures.selfdata_contracts | object | — | Additional contracts: what is already included and what is still pending. |
| futures.selfdata_contracts.included_usd | null | USD | 24h volume of the additionally collected contracts (coin-margined, USDC, delivery) already counted in the futures total; null when none is counted yet. |
| futures.selfdata_contracts.n_included | number | count | Number of additionally collected contracts counted in the futures total (those that have their own snapshot from about 24 hours ago). |
| futures.selfdata_contracts.pending_usd | number|null | USD | Sum of pending items, not in the total. |
| futures.selfdata_contracts.n_pending | number | count | Number of additionally collected contracts not yet counted because they lack their own 24h-ago baseline; the largest are listed in `pending`. |
| futures.selfdata_contracts.pending | array | — | Items collected but not yet included. |
| futures.selfdata_contracts.pending[] | object | — | Items collected but not yet included. |
| futures.selfdata_contracts.pending[].exchange | string | — | Exchange id, lower case (for example `binance`). |
| futures.selfdata_contracts.pending[].symbol | string | — | Instrument symbol as normalised by CoinBoss (for example BTCUSDT). |
| futures.selfdata_contracts.pending[].margin | string | — | Margin currency class. |
| futures.selfdata_contracts.pending[].contract_type | string | — | `perpetual` or `delivery`. |
| futures.selfdata_contracts.pending[].vol_usd | number | USD | Volume in USD notional. |
| futures.selfdata_contracts.pending[].reason | string | — | Reason code. |
| spot | object | — | Spot market block or value. |
| spot.total_usd | number | USD | 24h spot volume across exchanges. |
| spot.n_exchanges | number | — | Number of exchanges contributing. |
| spot.asof | number | ms | Time of the newest data used. |
| spot.by_exchange | array | — | Per-exchange breakdown. |
| spot.by_exchange[] | object | — | Per-exchange breakdown. |
| spot.by_exchange[].exchange | string | — | Exchange id, lower case (for example `binance`). |
| spot.by_exchange[].vol_usd | number | USD | Volume in USD notional. |
| spot.by_exchange[].quote | string | — | Quote currencies included for this exchange. |
| spot.by_exchange[].ts | number | ms | Timestamp. |
| spot.by_exchange[].price | number | — | Last price in the quote currency (USD or USDT unless stated). |
| spot.by_exchange[].age_s | number | s | Seconds since this row was last updated. |
| spot.by_exchange[].share_pct | number | % | Share of the total. |
| spot.change_24h | object | — | 24h change. |
| spot.change_24h.pct | number | % | Percentage. |
| spot.change_24h.cur | number | — | Current value. |
| spot.change_24h.prev | number | — | Previous value (baseline). |
| spot.change_24h.n_matched | number | — | Items present at both ends of the comparison. |
| spot.change_24h.n_total | number | — | Items present now. |
| spot.change_24h.prev_ts | number | ms | Time of the baseline snapshot. |
| spot.change_24h.basis | string | — | Futures price minus spot price, or the basis block. |
| ratios | object | — | Volume ratios: `futures_to_spot` (24h futures volume ÷ 24h spot volume) and `oi_to_futures_volume`; each null when an input is missing. |
| ratios.futures_to_spot | number | — | Futures volume divided by spot volume. |
| ratios.oi_to_futures_volume | number | — | Open interest divided by 24h futures volume. |
| method | object | — | Plain-text statement of the formulas used for this response. |
| method.futures | string | — | Futures market block or value. |
| method.spot | string | — | Spot market block or value. |
| method.change | string | — | Change over the stated period. |
| method.oi_to_futures_volume | string | — | Plain-text definition of `ratios.oi_to_futures_volume`: total open interest in USD ÷ 24h futures volume in USD. |
Generated 2026-11-11 23:00 UTC from 4 real responses.
Example response
/api/sd/volume?coin=BTC · Real response captured 2026-11-13 03:57:37 UTC. Long arrays and maps are shortened for display: spot.by_exchange had 14 items; futures.by_exchange had 23 items; futures.selfdata_contracts.pending had 5 items.
- "success"true
- "coin""BTC"
- "now"1794542257033
- "futures"
- "total_usd"79049803843.06
- "n_exchanges"23
- "by_exchange"
- "change_24h"
- "selfdata_contracts"
- "spot"
- "total_usd"7929483908.44
- "n_exchanges"14
- "asof"1794541800000
- "by_exchange"
- "change_24h"
- "ratios"
- "futures_to_spot"9.9691
- "oi_to_futures_volume"0.6197
- "method"
- "futures""SUM of each exchange 24h quote turnover in USD for this coin's contracts (ticker fresh within 1h); self-collected coin-margined/USDC/delivery contracts are adde…"
- "spot""per exchange: 24h quote turnover summed over that exchange's USD/USDT/USDC-quoted spot pairs of the coin (quote = the largest pair); total = SUM over exchanges …"
- "change""same-exchange pairing: only exchanges with both a current value and a snapshot ~24h ago enter numerator and denominator"
- "oi_to_futures_volume""total open interest (USD) / 24h futures turnover (USD)"
Verified samples
Besides the example above, the probe calls this endpoint with these parameters and checks the schema each time.
| Parameters | HTTP | Latency | Result |
|---|---|---|---|
| coin=ETH | 200 | 38 ms | Pass |
| coin=SOL | 200 | 46 ms | Pass |
| coin=ARKM | 200 | 43 ms | Pass |
| — | 400 | 1 ms | Pass returns the expected error |
Checked 2026-11-13 03:57:37 UTC
Details
- Authentication
- None. Public endpoint.
- Rate limit
- 1200 requests per minute per IP
- Server cache
- 30s
- Edge micro-cache
- 10s
- Update frequency
- futures tickers every 60 s (coin-margined / USDC / dated contracts every 120 s); spot snapshots every 10 min
- Window
- rolling 24 h volume as reported by each venue; 24 h change vs own archive about 24 h earlier
- Data sources
- 24h futures volume from in-house ticker collectors (24 derivatives venues) and 24h spot volume from in-house spot ticker collectors (14 spot exchanges, e.g. binance, okx, bybit, coinbase, kraken, upbit).
- Exchange coverage
- futures: up to 24 venues; spot: 14 exchanges, USD / USDT / USDC quoted pairs
- Units
- volumes in USD; changes in percent; ratios dimensionless
- Method
- futures total = SUM(volume_usd) of tickers fresh within 1 h, plus non-USDT-perp contracts once they have their own ~24 h baseline; spot total = SUM of the latest per-exchange snapshot within 30 min; 24 h change by same-exchange pairing; ratios futures_to_spot and oi_to_futures_volume
- Timestamps
- Unix epoch milliseconds (UTC) unless the field description says otherwise
- Response format
- json
- Stability
- Stable
- Available since
- 2026-11-11
Live status
Availability, last 30 days
100% of 411 checks passed
Errors
Failed calls share one shape on every endpoint. The full list is on the errors page. Errors and rate limits →
| Code | HTTP | Meaning | What to do |
|---|---|---|---|
| INVALID_PARAM | 400 | A required parameter is missing or a value is not accepted. `param` names the parameter when it is known. | Do not retry unchanged; fix the request. |
| UNAUTHORIZED | 401 | The `CB-API-KEY` header was sent but the key is unknown or revoked. Public data needs no key — drop the header or use a valid key. | Do not retry unchanged. |
| FORBIDDEN | 403 | The route is not part of the public API (internal or account-only). | Do not retry. |
| NOT_FOUND | 404 | Unknown route, or the requested coin / exchange / fund does not exist. | Do not retry; check the path and identifiers against the catalog. |
| RATE_LIMITED | 429 | More requests than the per-minute limit. `Retry-After` gives the seconds to wait. | Wait for `Retry-After`, then retry with backoff. |
| INTERNAL | 500 | Unexpected server error. The message is generic by design; quote `request_id` when reporting it. | Retry once after a few seconds; report it with the request id if it persists. |
| UPSTREAM_FAILED | 503 | The data source behind this endpoint did not answer in time. No stale or substitute numbers are returned in its place. | Retry with backoff; check the status page. |
| UNAVAILABLE | 501 / 503 | The dataset is temporarily not ready (cache warming) or the endpoint has no lawful public source yet. | Retry later; the catalog marks endpoints that are unavailable by design. |
| REQUEST_FAILED | 200 | Some older endpoints answer HTTP 200 with `success: false`. Always check `success`, not only the HTTP status. | Depends on the message; treat as a failed request. |
Try it
/api/sd/volumeAvailablestring — Coin symbol; 400 when missing. Alias: `base`.
https://www.coinboss.com/api/sd/volume?coin=BTCMore in this category
- One-shot coin bundle (OI, funding, liquidations, volume, long/short) /api/sd/coin
- Futures volume for one coin /api/sd/volume
- Derivatives coin screener /api/derivatives/coins
- Full derivatives coin table /api/derivatives/coins-full
- Derivatives candles for a coin /api/derivatives/kline
- RSI list per coin /api/derivatives/rsi
- MACD series for a coin /api/indicators/ta/macd/:coin
- Historical series for one coin /api/market/history
- Derivatives tickers aggregated per coin /api/market/tickers
- Derivatives volume ranking /api/market/volume-rank