/api/sd/cme/cot
GETAvailableFRESH

CFTC positioning (CME crypto futures)

Weekly Commitments of Traders series for CME crypto futures: long, short, spread and net positions of dealers, asset managers, leveraged funds, other reportables and non-reportables.

GET/api/sd/cme/cot

Request

Query parameters

NameTypeRequiredDefaultAllowed valuesDescription
coinstringRequired——Coin symbol: `BTC`, `ETH`, `SOL` or `XRP`. Example: BTC
rangestringOptional1y3m, 6m, 1y, 3y, allLook-back range; one point per weekly report.
unitstringOptionalcoincoin, contracts, usdUnit of the position fields. `contracts` requires `contract`, because contracts of different size cannot be added.
contractstringOptional——One CME product of the coin (for example `BTC` or `MBT`). Default: all products of the coin, converted to coin and summed.

Example request

curl -s "https://www.coinboss.com/api/sd/cme/cot?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.

FieldTypeUnitDescription
successboolean—true when the request succeeded. On failure the body is `{ success: false, code, error, request_id }`.
schemastring—Schema id of this response. It changes only when an existing field changes meaning or type.
nownumbermsServer time when the response was built.
coinstring—Coin symbol (upper case).
rangestring—Look-back range applied.
unitstring—Unit of the position fields: `coin`, `contracts` or `usd`.
contractnull—CME product selected, or `null` for all products of the coin.
report_datestring—As-of date of the CFTC report (normally a Tuesday).
contractsarray—CME products included.
contracts[]string—CME products included.
multipliersobject—Coins per contract, per product (the key is the product code). dynamic keys: BTC,MBT
multipliers.{*}number—Coins per contract, per product (the key is the product code).
pointsnumber—Series points, oldest first.
latestobject—Most recent weekly report.
latest.datestring—As-of date of the weekly report.
latest.contractsarray—CME products included.
latest.contracts[]string—CME products included.
latest.oinumber—Total open interest of the report, in the selected unit.
latest.dealer_longnumber—Long positions of dealers / intermediaries.
latest.dealer_shortnumber—Short positions of dealers / intermediaries.
latest.dealer_spreadnumber—Offsetting long-and-short positions of dealers; not included in long or short.
latest.dealer_netnumber—Dealers: long − short.
latest.asset_mgr_longnumber—Long positions of asset managers / institutional.
latest.asset_mgr_shortnumber—Short positions of asset managers / institutional.
latest.asset_mgr_spreadnumber—Offsetting positions of asset managers; not included in long or short.
latest.asset_mgr_netnumber—Asset managers: long − short.
latest.lev_money_longnumber—Long positions of leveraged funds.
latest.lev_money_shortnumber—Short positions of leveraged funds.
latest.lev_money_spreadnumber—Offsetting positions of leveraged funds; not included in long or short.
latest.lev_money_netnumber—Leveraged funds: long − short.
latest.other_rept_longnumber—Long positions of other reportable traders.
latest.other_rept_shortnumber—Short positions of other reportable traders.
latest.other_rept_spreadnumber—Offsetting positions of other reportable traders; not included in long or short.
latest.other_rept_netnumber—Other reportables: long − short.
latest.nonrept_longnumber—Long positions of non-reportable (small) traders.
latest.nonrept_shortnumber—Short positions of non-reportable (small) traders.
latest.nonrept_netnumber—Non-reportables: long − short.
seriesarray—Weekly points, oldest first.
series[]object—Weekly points, oldest first.
series[].datestring—As-of date of the weekly report.
series[].contractsarray—CME products included.
series[].contracts[]string—CME products included.
series[].oinumber—Total open interest of the report, in the selected unit.
series[].dealer_longnumber—Long positions of dealers / intermediaries.
series[].dealer_shortnumber—Short positions of dealers / intermediaries.
series[].dealer_spreadnumber—Offsetting long-and-short positions of dealers; not included in long or short.
series[].dealer_netnumber—Dealers: long − short.
series[].asset_mgr_longnumber—Long positions of asset managers / institutional.
series[].asset_mgr_shortnumber—Short positions of asset managers / institutional.
series[].asset_mgr_spreadnumber—Offsetting positions of asset managers; not included in long or short.
series[].asset_mgr_netnumber—Asset managers: long − short.
series[].lev_money_longnumber—Long positions of leveraged funds.
series[].lev_money_shortnumber—Short positions of leveraged funds.
series[].lev_money_spreadnumber—Offsetting positions of leveraged funds; not included in long or short.
series[].lev_money_netnumber—Leveraged funds: long − short.
series[].other_rept_longnumber—Long positions of other reportable traders.
series[].other_rept_shortnumber—Short positions of other reportable traders.
series[].other_rept_spreadnumber—Offsetting positions of other reportable traders; not included in long or short.
series[].other_rept_netnumber—Other reportables: long − short.
series[].nonrept_longnumber—Long positions of non-reportable (small) traders.
series[].nonrept_shortnumber—Short positions of non-reportable (small) traders.
series[].nonrept_netnumber—Non-reportables: long − short.
coverageobject—What is and is not included in the numbers. Compare this before comparing totals with another source.
coverage.included_exchangesarray—Sources whose fresh data is included.
coverage.included_exchanges[]string—Sources whose fresh data is included.
coverage.unavailablearray—Sources that could not be included, each with a reason. They are never counted as 0. empty in the samples used to generate this table
coverage.stale_excludedarray—Rows left out because their last update is outside the fresh window. empty in the samples used to generate this table
methodobject—Plain-text statement of the formulas used for this response, one entry per field.
method.valuestring—Formula note for `value`, plain text.
method.categoriesstring—Formula note for `categories`, plain text.
method.identitystring—Formula note for `identity`, plain text.
method.pricestring—Formula note for `price`, plain text.
method.is_stalestring—Formula note for `is_stale`, plain text.
metaobject—Lineage and freshness of this response.
meta.schemastring—Schema id of this response. It changes only when an existing field changes meaning or type.
meta.sourcearray—Upstream public endpoints the data was collected from.
meta.source[]object—Upstream public endpoints the data was collected from.
meta.source[].exchangestring—Exchange id (lower case).
meta.source[].endpointstring—Public endpoint of the source the collector reads (shown for lineage; clients never call it).
meta.observed_atnumbermsTimestamp given by the source for the data.
meta.received_atnumbermsTime the CoinBoss collector received the data.
meta.fetched_atnumbermsTime this response was assembled.
meta.windowstring—Time window the numbers cover.
meta.qualitystring—FRESH, PARTIAL, STALE, BROKEN or UNAVAILABLE, judged from data timestamps and coverage.
meta.is_staleboolean—True when the data is older than its fresh window.
meta.cache_ttl_snumbersCache lifetime of this response.
meta.fallbackstring—What the endpoint returns when the collector or a source fails.
latest.pricenumberUSDPrice used for USD conversion. may be absent
latest.price_srcstring—Where `price` comes from: CME front-month settlement when collected, otherwise a labelled daily reference price. may be absent
series[].pricenumberUSDPrice used for USD conversion. may be absent
series[].price_srcstring—Where `price` comes from: CME front-month settlement when collected, otherwise a labelled daily reference price. may be absent

Generated 2026-11-11 23:00 UTC from 3 real responses.

Example response

/api/sd/cme/cot?coin=BTC · Real response captured 2026-11-13 03:52:57 UTC. Long arrays and maps are shortened for display: series had 51 items.

  • {
    • "success": true,
    • "schema": "coinboss.sd.cme/1",
    • "now": 1794541977237,
    • "coin": "BTC",
    • "range": "1y",
    • "unit": "coin",
    • "contract": null,
    • "report_date": "2026-11-03",
    • "contracts": [
      • "BTC",
      • "MBT"
      ],
    • "multipliers": {
      • "BTC": 5,
      • "MBT": 0.1
      },
    • "points": 51,
    • "latest": {
      • "date": "2026-11-03",
      • "contracts": [ … 2 ],
      • "oi": 89918.8,
      • "dealer_long": 30263.2,
      • "dealer_short": 27953.8,
      • "dealer_spread": 2450,
      • "dealer_net": 2309.4,
      • "asset_mgr_long": 22052.2,
      • "asset_mgr_short": 9925.7,
      • "asset_mgr_spread": 935,
      • "asset_mgr_net": 12126.5,
      • "lev_money_long": 26616.8,
      • "lev_money_short": 40103.2,
      • "lev_money_spread": 2148,
      • "lev_money_net": -13486.4,
      • "other_rept_long": 1111.6,
      • "other_rept_short": 1787.6,
      • "other_rept_spread": 99.6,
      • "other_rept_net": -676,
      • "nonrept_long": 4242.4,
      • "nonrept_short": 4515.9,
      • "nonrept_net": -273.5
      },
    • "series": [
      • { … 22 },
      • { … 22 }
      ],
    • "coverage": {
      • "included_exchanges": [ … 1 ],
      • "unavailable": [],
      • "stale_excluded": []
      },
    • "method": {
      • "value": "CFTC Commitments of Traders, Traders in Financial Futures, futures only. Each series point is one weekly report (as-of Tuesday). unit=coin: contracts x multipli…",
      • "categories": "dealer = Dealer/Intermediary, asset_mgr = Asset Manager/Institutional, lev_money = Leveraged Funds, other_rept = Other Reportables, nonrept = Non-reportable; *_…",
      • "identity": "oi = sum of the four category longs + four category spreads + nonrept_long (and the same on the short side)",
      • "price": "unit=usd only: CME front-month final settlement of the report date when collected, otherwise reference spot price (price_src per point); null price gives null v…",
      • "is_stale": "now is more than 10 days past the scheduled release of the latest stored report (release = report_date + 3 days, 21:30 UTC upper bound for Friday 15:30 ET)"
      },
    • "meta": {
      • "schema": "coinboss.sd.cme/1",
      • "source": [ … 1 ],
      • "observed_at": 1793664000000,
      • "received_at": 1794504008901,
      • "fetched_at": 1794541977237,
      • "window": "1y",
      • "quality": "FRESH",
      • "is_stale": false,
      • "cache_ttl_s": 300,
      • "fallback": "on collector failure the last stored weekly report is served with its real report_date; flagged is_stale=true once 10 days have passed since its scheduled relea…"
      }
    }

Verified samples

Besides the example above, the probe calls this endpoint with these parameters and checks the schema each time.

ParametersHTTPLatencyResult
coin=ETH&unit=usd2006 msPass PARTIAL
coin=BTC&range=all20019 msPass FRESH
coin=BTC&unit=contracts4001 msPass returns the expected error

Checked 2026-11-13 03:28:22 UTC

Details

Authentication
None. Public endpoint.
Rate limit
1200 requests per minute per IP
Server cache
5m
Edge micro-cache
10s
Update frequency
Weekly. The report date is normally Tuesday and the CFTC publishes it on Friday; the collector checks three times per day.
Window
3m / 6m / 1y / 3y / all, weekly points.
Data sources
CFTC Commitments of Traders, Traders in Financial Futures report (futures only), collected and stored by CoinBoss (sd_cme_cot_weekly).
Exchange coverage
BTC since 2018-04-10, ETH since 2021-04-06; SOL and XRP since their CME listing. A week in which one product of the coin is missing from the report is marked PARTIAL.
Pagination
No paging; `range` bounds the number of points.
Sorting
Report date ascending.
Units
Positions in coin by default (contracts × multiplier), or in contracts / USD with `unit`. With `unit=usd` each point carries the reference `price` and `price_src` used.
Method
net = long − short for every trader class. `*_spread` is the offsetting long-and-short position held by the same trader and is not included in long or short. Identity: Σ long + Σ spread + non-reportable long = open interest (and the same on the short side).
Timestamps
Unix epoch milliseconds (UTC) unless the field description says otherwise
Response format
json
Stability
Stable
Available since
2026-11-11

Live status

AvailableChecked 2026-11-13 03:52:57 UTCHTTP 2005 msSchema matchesNewest data point 10.5h old

Availability, last 30 days

100% of 405 checks passed

Errors

Failed calls share one shape on every endpoint. The full list is on the errors page. Errors and rate limits →

CodeHTTPMeaningWhat to do
INVALID_PARAM400A 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.
UNAUTHORIZED401The `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.
FORBIDDEN403The route is not part of the public API (internal or account-only).Do not retry.
NOT_FOUND404Unknown route, or the requested coin / exchange / fund does not exist.Do not retry; check the path and identifiers against the catalog.
RATE_LIMITED429More requests than the per-minute limit. `Retry-After` gives the seconds to wait.Wait for `Retry-After`, then retry with backoff.
INTERNAL500Unexpected 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_FAILED503The 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.
UNAVAILABLE501 / 503The 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_FAILED200Some 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

GET/api/sd/cme/cotAvailable
Parameters

string — Coin symbol: `BTC`, `ETH`, `SOL` or `XRP`.

string · default 1y — Look-back range; one point per weekly report.

string · default coin — Unit of the position fields. `contracts` requires `contract`, because contracts of different size cannot be added.

string — One CME product of the coin (for example `BTC` or `MBT`). Default: all products of the coin, converted to coin and summed.

Request URLhttps://www.coinboss.com/api/sd/cme/cot?coin=BTC
Choose an endpoint and press “Send request”. The response, headers and timing will appear here.