Bitcoin halving countdown and history
Bitcoin halving countdown and history
/api/indicators/halvingRequest
This endpoint takes no parameters.
Example request
curl -s "https://www.coinboss.com/api/indicators/halving"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 }`. |
| fetched_at | number | ms | When CoinBoss fetched the data from the source. |
| height | number | — | Block height. |
| halving | object | — | Bitcoin halving countdown computed from the current block height. |
| halving.epoch | number | count | Number of halvings that have already happened: floor(height ÷ 210,000). |
| halving.last_halving_height | number | blocks | Block height of the most recent halving. |
| halving.next_halving_height | number | blocks | Block height at which the next halving happens. |
| halving.remaining_blocks | number | blocks | Blocks left until the next halving. |
| halving.progress_pct | number | % | Progress through the current 210,000-block epoch: (height − `last_halving_height`) ÷ 210,000 × 100. |
| halving.avg_block_ms | number | ms | Recent average block interval from a public blockchain data source; 600000 is used when it is unavailable. |
| halving.eta_ms | number | ms | Estimated time of the next halving: now + `remaining_blocks` × `avg_block_ms`. An estimate that moves with the block interval. |
| halving.current_reward | number | BTC | Current block subsidy: 50 ÷ 2^`epoch`. |
| halving.next_reward | number | BTC | Block subsidy after the next halving: half of `current_reward`. |
| halving.history | array | — | Historical points, oldest first unless stated. |
| halving.history[] | object | — | Historical points, oldest first unless stated. |
| halving.history[].height | number | — | Block height. |
| halving.history[].date | string | — | Calendar date (UTC). |
| halving.history[].reward | number | BTC | Block subsidy that applied from that halving on. |
| difficulty | null | — | Always null: an estimate of the next difficulty adjustment is not provided. |
| current_difficulty | object | — | Current Bitcoin mining difficulty with its read time. |
| current_difficulty.value | number | — | Value. |
| current_difficulty.as_of | number | ms | Time the difficulty was read. |
| current_difficulty.source | string | — | Where the value comes from. |
| sources | object | — | Data sources. |
| sources.height | string | — | Block height. |
| sources.block_interval | string | — | Name of the source of `avg_block_ms`; null when the 10-minute default was used. |
| sources.current_difficulty | string | — | Origin of the difficulty value. |
Generated 2026-11-11 23:01 UTC from 1 real responses.
Example response
/api/indicators/halving · Real response captured 2026-11-13 03:53:39 UTC. Long arrays and maps are shortened for display: halving.history had 4 items.
- "success"true
- "fetched_at"1794542020750
- "height"975627
- "halving"
- "epoch"4
- "last_halving_height"840000
- "next_halving_height"1050000
- "remaining_blocks"74373
- "progress_pct"64.58
- "avg_block_ms"776283
- "eta_ms"1852276516309
- "current_reward"3.125
- "next_reward"1.5625
- "history"
- "difficulty"null
- "current_difficulty"
- "value"148364561003867
- "as_of"1794542020750
- "source""blockchain.info"
- "sources"
- "height""blockchain.info"
- "block_interval""blockchain.info"
- "current_difficulty""blockchain.info"
Details
- Authentication
- None. Public endpoint.
- Rate limit
- 1200 requests per minute per IP
- Server cache
- 2m
- Edge micro-cache
- 10s
- Update frequency
- on request, cached 2 minutes
- Window
- latest snapshot
- Data sources
- Bitcoin halving countdown computed in-house from the current block height reported by public blockchain APIs.
- Exchange coverage
- Bitcoin only; `difficulty` is always null.
- Units
- blocks; milliseconds (avg_block_ms, eta_ms); BTC (block reward); percent (progress)
- Method
- Next halving height = (epoch + 1) x 210000; ETA = now + remaining blocks x average block interval (600 s fallback); reward = 50 / 2^epoch.
- Timestamps
- Unix epoch milliseconds (UTC) unless the field description says otherwise
- Response format
- json
- Stability
- Stable
Live status
Block height is live. `current_difficulty` carries the network difficulty with its timestamp and source; `difficulty` (retarget progress) is `null` while its source is unavailable.
Availability, last 30 days
100% of 407 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/indicators/halvingPartialNo parameters.
https://www.coinboss.com/api/indicators/halvingMore in this category
- Multi-chain address lookup /api/browser/:chain/address/:addr
- Multi-chain block lookup /api/browser/:chain/block/:hashOrHeight
- Multi-chain transaction lookup /api/browser/:chain/tx/:txid
- Detects which EVM chains an address is active on /api/browser/detect
- Balance changes among BTC rich-list addresses /api/btc/rich-flow
- BTC rich list /api/btc/rich-list
- BTC rich-list statistics /api/btc/rich-stat
- BTC rich-list holdings trend /api/btc/rich-trend
- Bitcoin address summary /api/explorer/address/:addr
- Bitcoin address transactions /api/explorer/address/:addr/txs
- Bitcoin block detail /api/explorer/block/:hashOrHeight
- Bitcoin chain tip /api/explorer/tip
- Bitcoin transaction detail /api/explorer/tx/:txid
- Count of BTC addresses holding more than a threshold /api/indicators/addr-above/:tier
- BTC on-chain valuation indicator series /api/indicators/bdc/:name
- Bitcoin reachable-node count and distribution /api/indicators/bitnodes
- BTC holder comparison series /api/indicators/btccmp/:pair
- BTC on-chain chart series /api/indicators/chain
- Exchange BTC inflow / outflow history /api/indicators/cm/exchange-flows
- BTC supply held on exchanges /api/indicators/cm/exchange-supply
- BTC non-zero address count history /api/indicators/cm/nonzero-addresses
- Government BTC holdings /api/indicators/gov-treasuries
- Bitcoin halving countdown and history /api/indicators/halving
- Share of BTC supply dormant for more than N years /api/indicators/hodl-wave-above/:years
- Bitcoin mining-pool block share /api/indicators/mempool/pools
- Strategy BTC cost basis and holdings history /api/indicators/mstr-cost
- Share of BTC supply in profit /api/indicators/supply-profit-pct
- WBTC reserve balance history /api/indicators/wbtc-balance
- Multi-chain rich list /api/rich-list/:chain
- Multi-chain rich-list balance changes /api/rich-list/:chain/flow
- Multi-chain rich-list statistics /api/rich-list/:chain/stat
- Multi-chain rich-list holdings trend /api/rich-list/:chain/trend
- Public-company / institutional coin treasuries /api/treasuries/:coin