/api/indices/bottom-radar
GETAvailable

Bottom radar

Bottom radar (multi-indicator bottoming signals)

GET/api/indices/bottom-radar

Request

This endpoint takes no parameters.

Example request

curl -s "https://www.coinboss.com/api/indices/bottom-radar"

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 }`.
updatednumbermsWhen the data was last updated.
litnumbercountNumber of lamps in `lamps` that are on.
totalnumber—Total.
levelstring—Level.
levelZhstring—Chinese display text for `level`.
lampsarray—The bottom-structure conditions for BTC ("lamps"), such as `spring`, `crowd` and `ignite`.
lamps[]object—One lamp: `key`, `zh` (Chinese name), `lit`, `detail` (Chinese text) and `raw` (the inputs; null when their data source failed).
lamps[].keystring—Key.
lamps[].zhstring—Text in Chinese.
lamps[].litboolean—true when the condition of this lamp is met.
lamps[].detailstring—Detail.
lamps[].rawobject—Value as received from the source.
lamps[].raw.realVolnumber%Latest BTC realized volatility from the site's volatility series; the `spring` lamp needs it below 1. may be absent
lamps[].raw.iv30number%Latest BTC 30-day at-the-money implied volatility, in volatility points. may be absent
lamps[].raw.ivRanknumberfractionShare of the last 60 daily `iv30` readings that are below the current one (0–1); the `spring` lamp needs 0.25 or less. may be absent
lamps[].raw.washDaysnumberdaysDays within the last 7 whose liquidation imbalance score is −60 or lower (longs flushed); the lamp needs 5 or more. may be absent
lamps[].raw.scoresarray—Liquidation imbalance scores of the last 7 days. may be absent
lamps[].raw.scores[]object—One day: `d` (date) and `s` (score).
lamps[].raw.scores[].dstring—Calendar date (UTC).
lamps[].raw.scores[].snumber—(short liquidations − long liquidations) ÷ total × 100 for BTC that day, −100 to 100; days under 1M USD in total are skipped.
lamps[].raw.longPctnumber%Average long-account percentage across the BTC long/short ratio rows; the `crowd` lamp needs more than 63. may be absent
lamps[].raw.todayMaxnumberfractionHighest hourly average BTC funding rate so far in the current UTC day, as a fraction; the `crowd` lamp needs it above `ydayMax`. may be absent
lamps[].raw.ydayMaxnumberfractionHighest hourly average BTC funding rate of the previous UTC day, as a fraction. may be absent
lamps[].raw.tailarray—The two most recent BTC spot ETF flow days. may be absent
lamps[].raw.tail[]object—One day: `d` (date) and `flow`.
lamps[].raw.tail[].dstring—Calendar date (UTC).
lamps[].raw.tail[].flownumberUSD millionNet flow of BTC spot ETFs on that day in millions of USD; the `ignite` lamp needs more than 150 on both days.
lamps[].raw.slopePerDaynumberpercentage pointsLinear slope of the share of supply held by the top 100 BTC addresses over its last 20 daily points, in percentage points per day. may be absent
lamps[].raw.latestnumber—Most recent record. may be absent
lamps[].raw.valuenumber—Value. may be absent
confirmerobject—Real-time confirmation check shown beside the lamps: `lit`, `detail` (Chinese text) and `raw`.
confirmer.litboolean—true when `priceChg24` is above 1.5 and `negHours24` is 4 or more.
confirmer.detailstring—Detail.
confirmer.rawobject—Value as received from the source.
confirmer.raw.priceChg24number%Open-to-close change of the latest daily BTC candle (the current UTC day), not a rolling 24 hours.
confirmer.raw.negHours24numbercountNumber of hourly BTC funding points below zero in the last 24 hours.
caseRefstring—Id of the reference case study this radar is modelled on (`case-0819`).

Generated 2026-11-11 23:01 UTC from 1 real responses.

Example response

/api/indices/bottom-radar · Real response captured 2026-11-13 01:38:36 UTC. Long arrays and maps are shortened for display: lamps had 6 items; lamps[].raw.scores had 7 items.

  • {
    • "success": true,
    • "updated": 1794533614400,
    • "lit": 3,
    • "total": 6,
    • "level": "quiet",
    • "levelZh": "⚪ 平静",
    • "lamps": [
      • { … 5 },
      • { … 5 }
      ],
    • "confirmer": {
      • "lit": false,
      • "detail": "24h -0.45% · 负费率 0h/24h (需 >1.5% 且 ≥4h)",
      • "raw": { … 2 }
      },
    • "caseRef": "case-0819"
    }

Details

Authentication
None. Public endpoint.
Rate limit
1200 requests per minute per IP
Server cache
10m
Edge micro-cache
10s
Update frequency
recomputed on request (10 min cache)
Window
latest snapshot
Data sources
In-house six-lamp bottoming checklist computed from self-collected exchange data plus public ETF-flow, holder-concentration and sentiment series.
Exchange coverage
BTC only.
Units
boolean lamps with their underlying values; level = ignition / watch / quiet
Method
Six lamps: low realized range + low 30d ATM IV, repeated long-liquidation washouts, crowded retail longs with rising funding, two consecutive BTC ETF daily inflows above 150M USD, rising 20-day slope of top-100 holder share, Fear & Greed below 35; ignition at >=5 lamps, watch at >=4.
Timestamps
Unix epoch milliseconds (UTC) unless the field description says otherwise
Response format
json
Stability
Stable

Live status

AvailableChecked 2026-11-13 01:38:36 UTCHTTP 2000 msSchema matchesNewest data point 5m old

Availability, last 30 days

100% of 380 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/indices/bottom-radarAvailable
Parameters

No parameters.

Request URLhttps://www.coinboss.com/api/indices/bottom-radar
Choose an endpoint and press “Send request”. The response, headers and timing will appear here.