/api/exchange-balances/history
GETAvailable

Exchange balance history

Exchange balance history

GET/api/exchange-balances/history

Request

Query parameters

NameTypeRequiredDefaultAllowed valuesDescription
symbolstringOptionalBTCBTC, ETH, USDT, USDC, SOL, XRP, DOGE, BNB, TRX, LTC, LINK, ADA, AVAX, SHIB, … (20)Coin; 400 if unsupported. Example: BTC
exchangestringOptionalall—Exchange id; all = aggregate. Example: all
daysintegerOptional365≤ 1500Look-back window in days. Example: 365

Example request

curl -s "https://www.coinboss.com/api/exchange-balances/history?symbol=BTC&exchange=all&days=365"

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 }`.
symbolstring—Instrument symbol as normalised by CoinBoss (for example BTCUSDT).
exchangestring—Exchange id, lower case (for example `binance`).
dataarray—Payload.
data[]object—Payload.
data[].dstring—Calendar date (UTC).
data[].balancenumber—Balance in coins.
data[].balance_usdnumberUSDBalance value.

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

Example response

/api/exchange-balances/history?symbol=BTC&exchange=all&days=365 · Real response captured 2026-11-13 04:02:48 UTC. Long arrays and maps are shortened for display: data had 365 items.

  • {
    • "success": true,
    • "symbol": "BTC",
    • "exchange": "all",
    • "data": [
      • { … 3 },
      • { … 3 }
      ]
    }

Verified samples

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

ParametersHTTPLatencyResult
days=365&symbol=ETH&exchange=all20032 msPass
days=365&symbol=SOL&exchange=all20018 msPass

Checked 2026-11-13 03:58:11 UTC

Details

Authentication
None. Public endpoint.
Rate limit
1200 requests per minute per IP
Server cache
5m
Edge micro-cache
10s
Update frequency
every 6 hours
Window
last 365 days by default (`days` max 1500); data starts 2022-11
Data sources
Daily history of an asset's on-chain balance on one or all exchanges, from a public on-chain transparency dataset.
Exchange coverage
About 78 centralized exchanges that publish wallet addresses (as tracked by the upstream dataset); exchanges without disclosed wallets (e.g. Coinbase, Upbit, Bithumb, Kraken) are missing. Daily history starts 2022-11.
Sorting
date ascending
Units
coins and USD
Method
With `exchange` omitted or `all`, balances are summed across exchanges (alias tokens merged).
Timestamps
Unix epoch milliseconds (UTC) unless the field description says otherwise
Response format
json
Stability
Stable

Live status

AvailableChecked 2026-11-13 04:02:48 UTCHTTP 2002 msSchema matchesNewest data point 28h old

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 →

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/exchange-balances/historyAvailable
Parameters

string · default BTC — Coin; 400 if unsupported.

string · default all — Exchange id; all = aggregate.

integer · default 365 · max 1500 — Look-back window in days.

Request URLhttps://www.coinboss.com/api/exchange-balances/history?symbol=BTC&exchange=all&days=365
Choose an endpoint and press “Send request”. The response, headers and timing will appear here.